|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8704 (0x2200) Types: TextFile Names: »ASSEM.SL5«
└─⟦c50ca4728⟧ Bits:30003533 StackWorks FORTH version 1.2 for Z-80 └─ ⟦this⟧ »ASSEM.SL5«
( Copyright 1980 The Stackworks. All rights reserved ) ( Z80 ASSEMBLER - 8/14/79 - MOB ) ASSEMBLER DEFINITIONS HEX : R, BSWAP , ; : 2* 2 * ; : 8* 8 * ; : 16* 10 * ; 0 VARIABLE PARM : ARESET 0 PARM ! ; : SETP PARM @ BSWAP + PARM ! ; : PARM2 PARM @X 0FF & ; : PARM1 PARM @ 0FF & ; : NSETP CONSTANT ;: @ SETP ; : 1BYTR CONSTANT ;: B@ B, ; : 2BYTR CONSTANT ;: @ R, ; : IXYP 50 - 16* 2* DD + B, ; : IXYP1 PARM1 IXYP ; : IXYPR2 PARM2 IXYP ; ( OPPERAND SETTINGS ) 8 NSETP A 1 NSETP B 2 NSETP C 3 NSETP D 4 NSETP E 5 NSETP H 6 NSETP L 12 NSETP AF 19 NSETP AF' 13 NSETP BC 14 NSETP DE 15 NSETP HL 16 NSETP SP 17 NSETP IX 18 NSETP IY 9 NSETP (BC) 10 NSETP (DE) 7 NSETP (HL) 11 NSETP (SP) 20 NSETP (IX) 21 NSETP (IY) 30 NSETP NZ 31 NSETP Z 32 NSETP NC 34 NSETP PO 35 NSETP PE 36 NSETP P 37 NSETP M 50 NSETP IX+ 51 NSETP IY+ 60 NSETP ^ 61 NSETP (C) 62 NSETP IR 63 NSETP R ( MNEMONICS WOTHOUT ANY OPERANDS ) D9 1BYTR EXX 27 1BYTR DAA 2F 1BYTR CPL 07 1BYTR RLCA 17 1BYTR RLA 0F 1BYTR RRCA 1F 1BYTR RRA 76 1BYTR HALT 0F3 1BYTR DI 0FB 1BYTR EI 3F 1BYTR CCF 37 1BYTR SCF 0 1BYTR NOP EDA0 2BYTR LDI EDB0 2BYTR LDIR EDA8 2BYTR LDD EDB8 2BYTR LDDR EDA1 2BYTR CPI EDB1 2BYTR CPIR EDA9 2BYTR CPD EDB9 2BYTR CPDR ED44 2BYTR NEG ED46 2BYTR IM0 ED56 2BYTR IM1 ED5E 2BYTR IM2 ED6F 2BYTR RLD ED67 2BYTR RRD ED4D 2BYTR RETI ED45 2BYTR RETN EDA2 2BYTR INI EDB2 2BYTR INIR EDAA 2BYTR IND EDBA 2BYTR INDR EDA3 2BYTR OUTI EDB3 2BYTR OTIR EDAB 2BYTR OUTD EDBB 2BYTR OTDR ( BIT OPERATIONS ) : BOP SWAP PARM1 0> IF PARM1 9 < IF CB B, 8* + PARM1 1- + B, ELSE IXYP1 CB B, ROT B, 8* + 6 + B, ENDIF ENDIF ARESET ; : BIT 40 BOP ; : RES 80 BOP ; : SET C0 BOP ; ( SHIFT MNEMONICS ) : SOP PARM1 9 < IF CB B, PARM1 1- + B, ELSE IXYP1 CB B, SWAP B, 6 + B, ENDIF ARESET ; : RLC 0 SOP ; : RL 10 SOP ; : RRC 8 SOP ; : RR 18 SOP ; : SLA 20 SOP ; : SRA 28 SOP ; : SRL 38 SOP ; ( ARITHMETIC MNEMONICS ) : AR1 PARM1 9 < PARM1 0> & IF PARM1 1- + 80 + B, ELSE PARM1 IF IXYP1 86 + B, B, ELSE C6 + B, B, ENDIF ENDIF ARESET ; : AR2 ED B, PARM2 13 - 16* + B, ARESET ; : SUB 10 AR1 ; : AND 20 AR1 ; : OR 30 AR1 ; : XOR 28 AR1 ; : CP 38 AR1 ; : ADC PARM1 15 = IF 4A AR2 ELSE 08 AR1 ENDIF ; : SBC PARM1 15 = IF 42 AR2 ELSE 18 AR1 ENDIF ; : ADD PARM1 17 = PARM1 18 = ø IF PARM1 17 - 16* 2* DD + B, PARM1 PARM2 = IF 20 ELSE PARM2 13 - 16* ENDIF 9 + B, ELSE PARM1 15 = IF PARM2 13 - 16* 9 + B, ELSE 0 AR1 ENDIF ENDIF ARESET ; : DOP PARM1 0 > IF PARM1 9 < IF PARM1 1 - 8* + 4 + B, ELSE PARM1 12 > IF PARM1 17 < IF 8* 3 + PARM1 13 - 16* + B, ELSE PARM1 17 = IF 8* DD23 + R, ELSE PARM1 18 = IF 8* FD23 + R, ELSE IXYP1 34 + B, B, ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ARESET ; : INC 0 DOP ; : DEC 1 DOP ; ( BRANCHING MNEMONICS ) : CONDS PARM1 2 = IF 3 ELSE PARM1 30 - ENDIF ; : CALL PARM1 0= IF CD B, ELSE CONDS 8* C4 + B, ENDIF , ARESET ; : RET PARM1 0= IF C9 B, ELSE CONDS 8* C0 + B, ENDIF ARESET ; : RST 8* C7 + , ; : JP PARM1 7 = IF E9 B, ELSE PARM1 20 = IF DD B, E9 B, ELSE PARM1 21 = IF FD B, E9 B, ELSE PARM1 0 = IF C3 B, , ELSE CONDS 8* C2 + B, , ENDIF ENDIF ENDIF ENDIF ARESET ; : DJNZ 10 B, B, ARESET ; : JR PARM1 0= IF 18 B, B, ELSE CONDS 8* 20 + B, B, ENDIF ARESET ; ( IN, OUT ) : IOP PARM1 61 = IF ED B, 1 - ABS PARM2 1 - 8* 40 + + B, ELSE 8* D3 + B, B, ENDIF ARESET ; : OUT 0 IOP ; : IN PARM2 PARM1 ARESET SETP SETP 1 IOP ; ( PUSH, POP ) : STKOP PARM1 DUP 16 < IF DUP 12 = IF 4 + ENDIF 13 - 16* C1 + + B, ELSE 17 - 16* 2* DD + B, E1 + B, ENDIF ARESET ; : PUSH 4 STKOP ; : POP 0 STKOP ; ( DATA MANIPULATION MNEMONICS ) : EX PARM1 14 = IF EB B, ELSE PARM1 12 = IF 08 B, ELSE PARM2 15 = IF E3 B, ELSE PARM2 17 = IF DD B, E3 B, ELSE PARM2 18 = IF FD B, E3 B, ENDIF ENDIF ENDIF ENDIF ENDIF ARESET ; : LD PARM1 9 < IF PARM2 9 < IF PARM2 IF PARM1 1- 8* PARM2 1- + 40 + B, ELSE PARM1 1- 8* 6 + B, B, ENDIF ELSE PARM2 4F > PARM2 52 < & IF IXYPR2 PARM1 1- 8* 46 + B, B, ELSE PARM2 9 = IF 0A B, ELSE PARM2 10 = IF 1A B, ELSE PARM2 60 = IF 3A B, , ELSE PARM2 62 = IF ED57 R, ELSE ED5F R, ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE PARM1 60 = IF PARM2 8 = IF 32 B, , ELSE PARM2 16 > IF PARM2 39 + IXYP 22 B, , ELSE PARM2 15 = IF 22 B, , ELSE ED B, PARM2 13 - 8* 2* 43 + B, , ENDIF ENDIF ENDIF ELSE PARM1 62 = IF ED47 R, ELSE PARM1 63 = IF ED4F R, ELSE PARM1 9 = IF 02 B, ELSE PARM1 10 = IF 12 B, ELSE PARM1 17 < IF PARM2 IF PARM2 60 = IF PARM1 15 = IF 2A B, , ELSE ED B, PARM1 13 - 16* 4B + B, , ENDIF ELSE PARM2 15 = IF F9 B, ELSE PARM2 39 + IXYP F9 B ENDIF ENDIF ELSE PARM1 13 - 16* 1+ B, , ENDIF ELSE PARM1 19 < IF PARM1 39 + IXYP PARM2 IF 2A ELSE 21 ENDIF B, , ELSE IXYP1 PARM2 IF PARM2 1- 70 + B, B, ELSE 36 B, B, B, ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ARESET ; ( ASSEMBLER CONDITIONALS ) : LINK, SWAP IF SWAP ! ELSE OVER - 1- SWAP B! ENDIF ; : IF, CONDS 1 Xø DUP 4 < IF 8* 20 + B, HERE 0 0 B, ELSE 8* C2 + B, HERE 1 0 , ENDIF ARESET ; : ELSE, 18 B, 0 B, HERE LINK, HERE 1- 0 ; : ENDIF, HERE LINK, ; : BEGIN, HERE ; : END, CONDS 1 Xø DUP 4 < IF 8* 20 + B, HERE - 1- B, ELSE 8* C2 + B, , ENDIF ARESET ; : REPEAT, 18 B, HERE - 1- B, ; FORTH DEFINITIONS ÆEND-OF-FILEÅ «eof»