Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,116 @@
:10F00000C35BF0C346F6C356F6C300F6C37CF6C333
:10F0100010F6C323F6C36AF1C365F1C38AF0C39443
:10F02000F6C394F6C3CFF3F8F009F109F1ACF1F6A9
:10F03000F43CF1FDF1D0F54DF209F109F10EF55D69
:10F04000F209F155F209F121F54CF567F28FF20959
:10F05000F191F18DF5ECF29FF482F1F3313F002153
:10F0600000C311B2F60610D5E510FC3195F03E0054
:10F06F00C50100F021FFFF247E2F77BE2F772004EC
:10F07F007CB820F32501DEFF09C1C9E5CD6FF07D16
:10F08F00D63C30012544E1C999F0F91145F4EB0163
:10F09F001D00EDB0010600D5E12BEDB021E8FF39E1
:10F0AF00E52323220600160AC51520FCCD94F6CDC4
:10F0BF009FF4CD94F62190F4CD95F61843060121D7
:10F0CF000000180C1079203205C8210000CD7BF309
:10F0DF004FCDB0F3380829292929B56F18EFE3E58B
:10F0EF0079CDC3F330E01012C9CD7BF3216EF1114E
:10F0FF0005000604BE28421910FA218CF4CD98F6AB
:10F10F002A0600F9210FF1E52201003EC33200006B
:10F11F00CDA9F6CD78F3D64138E0FE1A30DC875F03
:10F12F00160006022127F0197E23666FE9CD86F3BC
:10F13F0071CD8FF330FAD118C7500604CD78F32371
:10F14F00BE2081682D422603052804292910FC3A88
:10F15F000300B4ACB54F79320300C93A0300C94C70
:10F16F0032314C5450323150545232315054433169
:10F17F004243540602CD8FF6FE0720F7CD7EF310E3
:10F18F00F4C9CD86F30AC546B8280CF5CDFBF57842
:10F19F00CDF4F5F1CDE6F5C1CD9BF318E8CDA4F68E
:10F1AF00CDFBF57DCDF0F1E57ECDE6F5CD8FF338D6
:10F1BF002ACDFEF57DE60F20EFE17DE60FCDF5F1CF
:10F1CF007EE67F4FFE203804FE7E38020E2ECD09DC
:10F1DF00F0CD9CF37DE60F20E718C593CDF0F11825
:10F1EF00D8E60F4787804704CDFEF510FBC9CDC089
:10F1FF00F338372810CDCCF0D121340039722B736E
:10F20F0079FE0D2825060221350039C5E50602CD08
:10F21F00D7F0D1E17AB3280A732372231A77233EEA
:10F22F00CF1279FE0DC1280210E1CDA9F6E12143DD
:10F23F00F4E521CFF322090021180039D1E9CDD708
:10F24F00F0C1ED581851CDD9F0D1C1ED59C9CD86C6
:10F25F00F37E02CD9BF318F9CDD7F0E17ECDF4F517
:10F26F00CDC0F3D8280FFE0A280DE5CDCCF0D1E1A3
:10F27F007379FE0DC823232B7DE607CCFBF518DC35
:10F28F00CDA4F67EF52F77AEC4A1F2F177CD9CF326
:10F29F0018F1D55FCDFBF506087B075F3E18174FBA
:10F2AF00CD09F010F4D1C9232334C8F2C1F2F6808E
:10F2BF001802E67F35BE20EFCDFEF5CD15F3CDF765
:10F2CF00F5CDC0F3D82812E5CDCCF0E17D1312E3D4
:10F2DF007EE3073003137C12E179FE0DC8213DF365
:10F2EF00CDC0F3380B28F9FE2720BE2155F318F0B7
:10F2FF007E4F3CC8FCA9F6CD09F0CDF7F5CD15F33F
:10F30F00CDFEF52318EA237EE63FC602EB6F2600FB
:10F31F0039EB7E060107300E0407300AE51A671B2A
:10F32F001A6F7EE110011ACDE6F51B10F9C9C11550
:10F33F004213431244114510461448314C30CDF15D
:10F34F0050B453974903C109420B430A440D450C6E
:10F35F004608480F4C0ECDCF588759855202FFE60D
:10F36F000FC69027CE40274FC9CDF7F5CD8FF6C5E5
:10F37F004FCD09F079C1C904CDD9F0C1D1C3AAF6D7
:10F38F00237CB537C87B957A9CC9D1C903CD8FF340
:10F39F0038F8CD12F0B7C8CD8FF6FE1320ECC38F1F
:10F3AF00F6D630D8FE173FD8FE0A3FD0D607FE0A52
:10F3BF00C9CD7BF3FE20C8FE2CC8FE0D37C83FC950
:10F3CF00E5D5C5F5CD6FF0EB210A00390604EB2B1F
:10F3DF00722B73D110F9C10BF921250039D5160203
:10F3EF007E91237E98280623231520F403212000E5
:10F3FF00D139732372C50E2ACD09F0D13EF4BA2844
:10F40F00092323732372EBCDE1F521250039010088
:10F41F00025E71235671237BB228027E122310F1F4
:10F42F0008D9E5D5C5F5DDE5FDE5ED5747ED5F4FAE
:10F43F00C5C313F1E5CFC179ED4F78ED47DDE1FDA0
:10F44F00E1F1C1D1E108D9D1C1F1E1F90021000009
:10F45F00C30000AF320300216CF4C3B5F6492F4F40
:10F46F00204552D2CDE8F6B047825778C90E0DCD60
:10F47F007CF60E0AC37CF6CD56F6E67FC93F3F3FBA
:10F48F00BF4D4F5353205645525320322E320D8AC3
:10F49F003E0FD324114000626ADB26A328FBDB2634
:10F4AF0023A3A3C2ADF4E5295C1919E52929DB20B3
:10F4BF002B7DB4C2BDF4E13E83D3237DD3207CD317
:10F4CF00213E03D323AFD321D325CDCEF6E67FFE46
:10F4DF000DE1C85D54CDEEF4CDEEF419E518D8B7B3
:10F4EF007C1F677D1F6FC9CDA4F6D5CDC8F5AF576B
:10F4FF00CDF6F63E01CDFEF6AF92CDFEF61803CD5A
:10F50F00D7F0C178B1410E002002063CCD0CF010AF
:10F51F00FBC93A03000604217DF111FBFFF5CDFE77
:10F52F00F54ECD09F0CDF7F5F1F5E5233CE60320D7
:10F53F00FA4ECD09F0E1F11F1F1910E1C9CDD7F037
:10F54F00E1E5CD86F4DE3A20F957CD73F428235F39
:10F55F00CD73F4F5CD73F4C14F09CD73F4CD73F4BE
:10F56F00772FAEC4A1F2231D20F3CD73F4C209F19E
:10F57F0018CECD73F467CD73F46FB4D1C8E9CD86CF
:10F58F00F3AF47B120020E10E509B7ED52E1380A8B
:10F59F00D5EBB7ED5223E3EBC1D8C5D55041CDC85C
:10F5AF00F578CDF6F6AFCDFEF67E23CDFEF610F94B
:10F5BF00AF92CDFEF6D1C118CFCD7CF40E3AC37CFD
:10F5CF00F6CDA4F6E519CDFBF5E1B7ED521803CD55
:10F5DF00A9F67CCDE6F57DF50F0F0F0FCDEFF5F109
:10F5EF00CD6EF3180CCDE6F50E2D1805CDDEF50E0C
:10F5FF00203A0300E603CADEF6FE02FA62F4C262A4
:10F60F00F43A0300E6C0CADEF6FE80FA62F4CA627C
:10F61F00F4C362F43A0300E603CAC6F6FE02FA62C6
:10F62F00F4C262F43A0300E60CCAC6F6FE08FA62A8
:10F63F00F4CA62F4C362F43A0300E603CACEF6FEDC
:10F64F0002FA62F4C262F43A0300E60CCACEF6FE86
:10F65F0008FA62F4CA62F4C362F43A0300E6C0CA5D
:10F66F00D6F6FE80FA62F4CA62F4C362F43A03007B
:10F67F00E630CADEF6FE20FA62F4CA62F4C362F420
:10F68F00CD46F6E67FC9CDA9F6C54ECD00F6237956
:10F69F000730F7C1C9CDD9F0D1E1E521C2F6CD9838
:10F6AF00F6E1C921BBF6CD95F6C3000052535420A5
:10F6BF004552D20D0A0080DB25E601C8C6FEC9DB24
:10F6CF00251F30FBDB20C9DB25E620C8C6BFC9DB01
:10F6DF0025E62028FA79D320C9CDF0F607070707CA
:10F6EF0047CD86F4C3B0F3CDFEF67CCDFEF67DF5A7
:10F6FF000F0F0F0FCD6EF3CD0CF0F1F5CD6EF3CDE7
:06F70F000CF0F18257C965
:0000000000


File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,52 @@
F17D ACT F33D ACTBL 0015 ALOC F16E ALT 0009 APLOC
F173 APT F178 ART F103 AS0 F148 AS1 F14E AS2
F0D3 AS3 F15A AS4 F15E AS5 F0F8 ASGN F633 BATST
0000 BC 0007 BELL F2A8 BITS1 F2A6 BITS2 F2A1 BITS
F5FE BLK 0013 BLOC 000B BPLOC F182 BYE F184 BYE1
F473 BYTE F6E8 BYT F000 CBOOT F646 CI 0012 CLOC
F194 CMPA F1A6 CMPB F6B5 COMERR F191 COMP F68F CONI
F003 CONIN F009 CONOUT F600 CO F012 CONST F36E CONV
000A CPLOC 000D CR F6A9 CRLF F6AA CRLFA F6C2 CRMSG
F462 CRTIN F462 CRTOST F462 CRTOUT F462 CRTST F623 CSTS
0013 CTRLS F462 CUSI1 F462 CUSO1 F462 CUST1 F5F4 DASH1
F5F7 DASH 0002 DE F378 DECHO F1AF DIS1 F1B7 DIS2
F1C8 DIS3 F1CF DIS4 F1DB DIS5 F1DD DIS6 F1EA DIS7
F1AC DISP F4EE DIV2 0011 DLOC 000D DPLOC F37E ECH1
F37B ECHO 0010 ELOC F462 ENDX F4F6 EOF F4FA EOFA
000C EPLOC F0DC EX0 F0DF EX1 F0ED EX2 F0D5 EX3
F0CC EXF F445 EXIT F6A4 EXLF F0D7 EXPR1 F0D9 EXPR
F386 EXPR3 F097 FAKE F13C FILL F13F FIO 0014 FLOC
000C FMFD 0008 FPLOC F214 GO0 F21A GO1 F231 GO2
F239 GO3 F1FD GOTO F5E6 HEX1 F5EF HEX2 F5D0 HEXN
F38F HILO F399 HILOD F39B HILOXB F39C HILOX 0004 HL
0031 HLOC 000F HPLOC F462 HSP F462 HSPST F49F I8250
F4A8 I8250A F4AD I8250B F4BD I8250C F4C6 I8250D 0003 ILOC
F05B INIT F067 INIT1 F0B7 INIT2 F24D INPT 0003 IOBYTE
F16A IOCHK F462 IOER F46C IOMSG F165 IOSET 0004 IX
0004 IY F5DE LADRA F5FB LADRB F5E1 LADR F51B LE1
F50E LEADER F511 LEO 000A LF F00F LIST 0030 LLOC
0020 LLOCX F610 LO F490 LOGMSG 000E LPLOC F462 LPRST
F462 LPRT F669 LSTAT F462 LUSE1 F462 LUST1 F08A MEMCK
F094 MEMCK0 F06F MEMSIZ F076 MEMSZ1 F083 MEMSZ2 F000 MOSS
F260 MOV1 F25D MOVE F28F MTEST F292 MTEST1 F29A MTEST2
0002 NBKPTS F3B0 NIBBLE F255 OUPT F3C3 P2C F6F9 PADR
F6F6 PBADR F6FE PBYTE F3C0 PCHK F47C PEOL 0034 PLOC
F67C PO F355 PRMTB F699 PRTA F6A2 PRTB F315 PRTVAL
F698 PRTWA F695 PRTWD F5C8 PSOR F462 PTRIN F462 PTRST
F00C PUNCH F462 PUSO1 F462 PUSO2 F335 PV1 F336 PV2
F48C QMSG F109 QPRT F52C QUE1 F53A QUE2 F521 QUERY
F006 READER F54C READ F551 RED1 F56C RED2 F581 RED3
F54F REDO F3CF REST F656 RI F6F0 RIBBLE F486 RIX
0002 RLOC F000 ROM F3DE RS1 F3EF RS2 F3F6 RS3
F3FB RS4 F3FC RS5 F419 RS6 F420 RS7 F42C RS8
F443 RS9 F6B2 RSTER F6BB RSTMSG F694 RTS F462 RUSI1
F462 RUSI2 F462 RUST1 F462 RUST2 0020 SDATA 0022 SIDENT
0021 SINTEN 0023 SLCTRL 0017 SLOC 0025 SLSTAT 0024 SMDMCT
0026 SMDMST 0006 SPSV F26B SUB1 F284 SUB2 F286 SUB3
F267 SUBS F027 TBL 0035 TLOC 0025 TLOCX F1F7 TRPL1
F1F5 TRPL2 F1F0 TRPLSP F6D6 TTOST F6DE TTPNCH F6C6 TTST
F6CE TTYIN F6DE TTYOUT F6CE TTYRDR F10F WINIT F113 WINITA
F597 WRI1 F5A9 WRI2 F5B8 WRI3 F58D WRITE 0000 WSVEC
F2B6 XAA F2B8 XA F2C1 XAB F2C3 XAC F2E7 XE
F2E8 XF F2FF XG 0007 XLOC F2EC XMNE F2EF XMNE1
0005 YLOC

View File

@@ -0,0 +1,419 @@
Z-80 Macro Library Documentation
--------------------------------
I.
The purpose of this library is to enable the assembly of the Z-80
instruction set on a CP/M sytem using the CP/M MAC macro assembler.
This library is invoked with the pseudo-op:
" MACLIB Z80 "
II.
The following symbols and notations are used in the individual macro
descriptions;
r - Any of the 8 bit registers: A, B, C, D, E, H, L, or M
rr - Any of the 16 bit register pairs: BC, DE, HL, or SP
nn - 8 bit immediate data (0 through 255)
d - 8 bit signed displacment (-128 through +127)
nnnn - 16 bit address or immediate data (0 through 65535)
b - bit number (0-7, 7 is most significant, 0 is least)
addr - 16 bit address within PC+127 through PC-128
m(zzz) - Memory at address "zzz"
III.
MACLIB ver. Zilog ver TDL ver
-------------- ------------- -------------
LDX r,d LD r,(IX+d) MOV r,d(IX)
Load register from indexed memory (with IX)
LDY r,d LD r,(IY+d) MOV r,d(IY)
Load register from indexed memory (with IY)
STX r,d LD (IX+d),r MOV d(IX),r
Store register to indexed memory (with IX)
STY r,d LD (IY+d),r MOV d(IY),r
Store register to indexed memory (with IY)
MVIX nn,d LD (IX+d),nn MVI d(IX)
Move immediate to indexed memory (with IX)
MVIY nn,d LD (IY+d),nn MVI d(IY)
Move immediate to indexed memory (with IY)
LDAI LD A,I LDAI
Move I to A
LDAR LD A,R LDAR
Move R to A
STAI LD I,A STAI
Move A to I
STAR LD R,A STAR
Move A to R
LXIX nnnn LD IX,nnnn LXI IX,nnnn
Load IX immediate (16 bits)
LXIY nnnn LD IY,nnnn LXI IY,nnnn
Load IY immediate (16 bits)
LBCD nnnn LD BC,(nnnn) LBCD nnnn
Load BC direct (from memory at nnnn)
LDED nnnn LD DE,(nnnn) LDED nnnn
Load DE direct
LSPD nnnn LD SP,(nnnn) LSPD nnnn
Load SP direct
LIXD nnnn LD IX,(nnnn) LIXD nnnn
Load IX direct
LIYD nnnn LD IY,(nnnn) LIYD nnnn
Load IY direct
SBCD nnnn LD (nnnn),BC SBCD nnnn
Store BC direct (to memory at nnnn)
SDED nnnn LD (nnnn),DE SDED nnnn
Store DE direct
SSPD nnnn LD (nnnn),SP SSPD nnnn
Store SP direct
SIXD nnnn LD (nnnn),IX SIXD nnnn
Store IX direct
SIYD nnnn LD (nnnn),IY SIYD nnnn
Store IY direct
SPIX LD SP,IX SPIX
Copy IX to the SP
SPIY LD SP,IY SPIY
Copy IY to the SP
PUSHIX PUSH IX PUSH IX
Push IX into the stack
PUSHIY PUSH IY PUSH IY
Push IY into the stack
POPIX POP IX POP IX
Pop IX from the stack
POPIY POP IY POP IY
Pop IY from the stack
EXAF EX AF,AF' EXAF
Exchange AF and the alternate, AF'
EXX EXX EXX
Exchange BC DE HL with BC' DE' HL'
XTIX EX (SP),IX XTIX
Exchange IX with the top of the stack
XTIY EX (SP),IY XTIY
Exchange IY with the top of the stack
LDI LDI LDI
Move m(HL) to m(DE), increment DE and HL, decrement BC
LDIR LDIR LDIR
Repeat LDI until BC = 0
LDD LDD LDD
Move m(HL) to m(DE), decrement HL, DE, and BC
LDDR LDDR LDDR
Repeat LDD until BC = 0
CCI CPI CCI
Compare A with m(HL), increment HL, decrement BC
CCIR CPIR CCIR
Repeat CCI until BC = 0 or A = m(HL)
CCD CPD CCD
Compare A with m(HL), decrement HL and BC
CCDR CPDR CCDR
Repeat CCD until BC = 0 or A = m(HL)
ADDX d ADD (IX+d) ADD d(IX)
Indexed add to A
ADDY d ADD (IY+d) ADD d(IY)
Indexed add to A
ADCX d ADC (IX+d) ADC d(IX)
Indexed add with carry
ADCY d ADC (IY+d) ADC d(IY)
Indexed add with carry
SUBX d SUB (IX+d) SUB d(IX)
Indexed subtract
SUBY d SUB (IY+d) SUB d(IY)
Indexed Subtract
SBCX d SBC (IX+d) SBB d(IX)
Indexed subtract with "borrow"
SBCY d SBC (IY+d) SBB d(IY)
Indexed subtract with borrow
ANDX d AND (IX+d) ANA d(IX)
Indexed logical and
ANDY d AND (IY+d) ANA d(IY)
Indexed logical and
XORX d XOR (IX+d) XRA d(IX)
Indexed logical exclusive or
XORY d XOR (IY+d) XRA d(IY)
Indexed logical exclusive or
ORX d OR (IX+d) ORA d(IX)
Indexed logical or
ORY d OR (IY+d) ORA d(IY)
Indexed logical exclusive or
CMPX d CP (IX+d) CMP d(IX)
Indexed compare
CMPY d CP (IY+d) CMP d(IY)
Index compare
INRX d INC (IX+d) INR d(IX)
Increment memory at m(IX+d)
INRY d INC (IY+d) INR d(IY)
Increment memory at m(IY+d)
DCRX d INC (IX+d) INR d(IX)
Decrement memory at m(IX+d)
DCRY d DEC (IY+d) DCR d(IY)
Decrement memory at m(IX+d)
NEG NEG NEG
Negate A (two's complement)
IM0 IM0 IM0
Set interrupt mode 0
IM1 IM1 IM1
Set interrupt mode 1
IM2 IM2 IM2
Set interrupt mode 2
DADC rr ADC HL,rr DADC rr
Add with carry rr to HL
DSBC rr SBC HL,rr DSBC rr
Subtract with "borrow" rr from HL
DADX rr ADD IX,rr DADX rr
Add rr to IX (rr may be BC, DE, SP, IX)
DADY rr ADD IY,rr DADY rr
Add rr to IY (rr may be BC, DE, SP, IY)
INXIX INC IX INX IX
Increment IX
INXIY INC IY INX IY
Increment IY
DCXIX DEC IX DCX IX
Decrement IX
DCXIY DEC IY DCX IY
Decrement IY
BIT b,r BIT b,r BIT b,r
Test bit b in register r
SETB b,r SET b,r SET b,r
Set bit b in register r
RES b,r RES b,r RES b,r
Reset bit b in register r
BITX b,d BIT b,(IX+d) BIT b,d(IX)
Test bit b in memory at m(IX+d)
BITY b,d BIT b,(IY+d) BIT b,d(IY)
Test bit b in memory at m(IY+d)
SETX b,d SET b,(IX+d) SET b,d(IX)
Set bit b in memory at m(IX+d)
SETY b,d SET b,(IY+d) SET b,d(IY)
Set bit b in memory at m(IY+d)
RESX b,d RES b,(IX+d) RES b,d(IX)
Reset bit b in memory at m(IX+d)
RESY b,d RES b,(IY+d) RES b,d(IY)
Reset bit b in memory at m(IY+d)
JR addr JR addr-$ JMPR addr
Jump relative unconditional
JRC addr JR C,addr-$ JRC addr
Jump relative if Carry indicator true
JRNC addr JR NC,addr-$ JRNC addr
Jump relative if carry indicator false
JRZ addr JR Z,addr-$ JRC addr
Jump relative if Zero indicator true
JRNZ addr JR NZ,addr-$ JRNZ addr
Jump relative if Zero indicator false
DJNZ addr DJNZ addr-$ DJNZ addr
Decrement B, jump relative if non-zero
PCIX JMP (IX) PCIX
Jump to address in IX ie, Load PC from IX
PCIY JMP (IY) PCIY
Jump to address in IY
RETI RETI RETI
Return from interrupt
RETN RETN RETN
Return from non-maskable interrupt
INP r IN r,(C) INP r
Input from port C to register r
OUTP r OUT (C),r OUTP r
Output from register r to port (C)
INI INI INI
Input from port (C) to m(HL), increment HL, decrement b
INIR INIR INIR
Input from port (C) to m(HL), increment HL, decrement B, repeat if B <> 0
OUTI OTI OUTI
Output from m(HL) to port (C), increment HL, decrement B
OUTIR OTIR OUTIR
Repeat OUTI until B = 0
IND IND IND
Input from port (C) to m(HL), decrement HL & B
INDR INDR INDR
Repeat IND until B = 0
OUTD OTD OUTD
Output from m(HL) to port (C), decrement HL & B
OUTDR OTDR OUTDR
Repeat OUTD until B = 0
RLCR r RLC r RLCR r
Rotate left circular register
RLCX d RLC (IX+d) RLCR d(IX)
Rotate left circular indexed memory
RLCY d RLC (IY+d) RLCR d(IY)
Rotate left circular indexed memory
RALR r RL r RALR r
Rotate left arithmetic register
RALX d RL (IX+d) RALR d(IX)
Rotate left arithmetic indexed memory
RALY d RL (IY+d) RALR d(IY)
Rotate left arithmetic indexed memory
RRCR r RRC r RRCR r
Rotate right circular register
RRCX d RRC (IX+d) RRCR d(IX)
Rotate right circular indexed
RRCY d RRC (IY+d) RRCR d(IY)
Rotate right circular indexed
RARR r RR r RARR r
Rotate right arithmetic register
RARX d RR (IX+d) RARR d(IX)
Rotate right arithmetic indexed memory
RARY d RR (IY+d) RARR d(IY)
Rotate right arithmetic indexed memory
SLAR r SLA r SLAR r
Shift left register
SLAX d SLA (IX+d) SLAR d(IX)
Shift left indexed memory
SLAY d SLA (IY+d) SLAR d(IY)
Shift left indexed memory
SRAR r SRA r SRAR r
Shift right arithmetic register
SRAX d SRA (IX+d) SRAR d(IX)
Shift right arithmetic indexed memory
SRAY d SRA (IY+d) SRAR d(IY)
Shift right arithmetic indexed memory
SRLR r SRL r SRLR r
Shift right logical register
SRLX d SRL (IX+d) SRLR d(IX)
Shift right logical indexed memory
SRLY d SRL (IY+d) SRLR d(IY)
Shift right logical indexed memory
RLD RLD RLD
Rotate left digit
RRD RRD RRD
Rotate right digit
HK ?D
DB 0FDH, 0CBH, ?D, 16H
ENDM
RRCR MACRO ?R
DB 0CBH, 08H + ?R
ENDM
RRCX MACRO ?D
@CHK ?D
DB 0DDH, 0CBH, ?D, 0EH
ENDM
RRCY MACRO ?D
@CHK ?D
DB 0FDH, 0CBH, ?D, 0EH
ENDM
RARR MACRO ?R
DB 0CBH, 18H + ?R
ENDM
RARX MACRO ?D

View File

@@ -0,0 +1,630 @@
;;
;; Z-80 MACRO LIBRARY
;;
;; THE FOLLOWING MACROS ENABLE ASSEMBLING Z-80 INSTRUCTIONS
;; WITH THE DIGITAL RESEARCH MACRO ASSEMBLER.
;;
;; INVOKE WITH "MACLIB Z80"
;;
;;
;; Macro's added to support Z80 Opcodes by Garry Kraemer - Senior Software Engineer
;;
;;
;; MACRO FORMATS
;; ----- -------
;;
;;
;; MACRO ZILOG TDL
;; ----- ----- ---
;;
;; LDX R,D LD R,(IX+D) MOV R,D(IX)
;; LDY R,D LD R,(IY+D) MOV R,D(IY)
;; STX R,D LD (IX+D),R MOV D(IX),R
;; STY R,D LD (IY+D),R MOV D(IY),R
;; MVIX NN,D LD (IX+D),NN MVI D(IX)
;; MVIY NN,D LD (IY+D),NN MVI D(IY)
;; LDAI LD A,I LDAI
;; LDAR LD A,R LDAR
;; STAI LD I,A STAI
;; STAR LD R,A STAR
;; LXIX NNNN LD IX,NNNN LXI IX,NNNN
;; LXIY NNNN LD IY,NNNN LXI IY,NNNN
;; LBCD NNNN LD BC,(NNNN) LBCD NNNN
;; LDED NNNN LD DE,(NNNN) LDED NNNN
;; LSPD NNNN LD SP,(NNNN) LSPD NNNN
;; LIXD NNNN LD IX,(NNNN) LIXD NNNN
;; LIYD NNNN LD IY,(NNNN) LIYD NNNN
;; SBCD NNNN LD (NNNN),BC SBCD NNNN
;; SDED NNNN LD (NNNN),DE SDED NNNN
;; SSPD NNNN LD (NNNN),SP SSPD NNNN
;; SIXD NNNN LD (NNNN),IX SIXD NNNN
;; SIYD NNNN LD (NNNN),IY SIYD NNNN
;; SPIX LD SP,IX SPIX
;; SPIY LD SP,IY SPIY
;; PUSHIX PUSH IX PUSH IX
;; PUSHIY PUSH IY PUSH IY
;; POPIX POP IX POP IX
;; POPIY POP IY POP IY
;; EXAF EX AF,AF' EXAF
;; EXX EXX EXX
;; XTIX EX (SP),IX XTIX
;; XTIY EX (SP),IY XTIY
;; LDI LDI LDI
;; LDIR LDIR LDIR
;; LDD LDD LDD
;; LDDR LDDR LDDR
;; CCI CPI CCI
;; CCIR CPIR CCIR
;; CCD CPD CCD
;; CCDR CPDR CCDR
;; ADDX D ADD (IX+D) ADD D(IX)
;; ADDY D ADD (IY+D) ADD D(IY)
;; ADCX D ADC (IX+D) ADC D(IX)
;; ADCY D ADC (IY+D) ADC D(IY)
;; SUBX D SUB (IX+D) SUB D(IX)
;; SUBY D SUB (IY+D) SUB D(IY)
;; SBCX D SBC (IX+D) SBB D(IX)
;; SBCY D SBC (IY+D) SBB D(IY)
;; ANDX D AND (IX+D) ANA D(IX)
;; ANDY D AND (IY+D) ANA D(IY)
;; XORX D XOR (IX+D) XRA D(IX)
;; XORY D XOR (IY+D) XRA D(IY)
;; ORX D OR (IX+D) ORA D(IX)
;; ORY D OR (IY+D) ORA D(IY)
;; CMPX D CP (IX+D) CMP D(IX)
;; CMPY D CP (IY+D) CMP D(IY)
;; INRX D INC (IX+D) INR D(IX)
;; INRY D INC (IY+D) INR D(IY)
;; DCRX D INC (IX+D) INR D(IX)
;; DCRY D DEC (IY+D) DCR D(IY)
;; NEG NEG NEG
;; IM0 IM0 IM0
;; IM1 IM1 IM1
;; IM2 IM2 IM2
;; DADC RR ADC HL,RR DADC RR
;; DSBC RR SBC HL,RR DSBC RR
;; DADX RR ADD IX,RR DADX RR
;; DADY RR ADD IY,RR DADY RR
;; INXIX INC IX INX IX
;; INXIY INC IY INX IY
;; DCXIX DEC IX DCX IX
;; DCXIY DEC IY DCX IY
;; BIT B,R BIT B,R BIT B,R
;; SETB B,R SET B,R SET B,R
;; RES B,R RES B,R RES B,R
;; BITX B,D BIT B,(IX+D) BIT B,D(IX)
;; BITY B,D BIT B,(IY+D) BIT B,D(IY)
;; SETX B,D SET B,(IX+D) SET B,D(IX)
;; SETY B,D SET B,(IY+D) SET B,D(IY)
;; RESX B,D RES B,(IX+D) RES B,D(IX)
;; RESY B,D RES B,(IY+D) RES B,D(IY)
;; JR ADDR JR ADDR-$ JMPR ADDR
;; JRC ADDR JR C,ADDR-$ JRC ADDR
;; JRNC ADDR JR NC,ADDR-$ JRNC ADDR
;; JRZ ADDR JR Z,ADDR-$ JRC ADDR
;; JRNZ ADDR JR NZ,ADDR-$ JRNZ ADDR
;; DJNZ ADDR DJNZ ADDR-$ DJNZ ADDR
;; PCIX JMP (IX) PCIX
;; PCIY JMP (IY) PCIY
;; RETI RETI RETI
;; RETN RETN RETN
;; INP R IN R,(C) INP R
;; OUTP R OUT (C),R OUTP R
;; INI INI INI
;; INIR INIR INIR
;; OUTI OTI OUTI
;; OUTIR OTIR OUTIR
;; IND IND IND
;; INDR INDR INDR
;; OUTD OTD OUTD
;; OUTDR OTDR OUTDR
;; RLCR R RLC R RLCR R
;; RLCX D RLC (IX+D) RLCR D(IX)
;; RLCY D RLC (IY+D) RLCR D(IY)
;; RALR R RL R RALR R
;; RALX D RL (IX+D) RALR D(IX)
;; RALY D RL (IY+D) RALR D(IY)
;; RRCR R RRC R RRCR R
;; RRCX D RRC (IX+D) RRCR D(IX)
;; RRCY D RRC (IY+D) RRCR D(IY)
;; RARR R RR R RARR R
;; RARX D RR (IX+D) RARR D(IX)
;; RARY D RR (IY+D) RARR D(IY)
;; SLAR R SLA R SLAR R
;; SLAX D SLA (IX+D) SLAR D(IX)
;; SLAY D SLA (IY+D) SLAR D(IY)
;; SRAR R SRA R SRAR R
;; SRAX D SRA (IX+D) SRAR D(IX)
;; SRAY D SRA (IY+D) SRAR D(IY)
;; SRLR R SRL R SRLR R
;; SRLX D SRL (IX+D) SRLR D(IX)
;; SRLY D SRL (IY+D) SRLR D(IY)
;; RLD RLD RLD
;; RRD RRD RRD
;;
;;******************************************************************
;;
;; @CHK MACRO USED FOR CHECKING 8 BIT DISPLACMENTS
;;
@CHK MACRO ?DD ;; USED FOR CHECKING RANGE OF 8-BIT DISP.S
IF (?DD GT 07FH) AND (?DD LT 0FF80H)
'DISPLACEMENT RANGE ERROR - Z80 LIB'
ENDIF
ENDM
@CHECK MACRO ?N
?DD SET ?N-$-2
IF (?DD GT 07FH) AND (?DD LT 0FF80H)
'RANGE ERROR - Z80 LIB'
?DD SET 0FEH
ENDIF
ENDM
;;
;;
LDX MACRO ?R,?D ;;LOAD REG R FROM MEMORY AT (IX+D)
@CHK ?D
DB 0DDH,?R*8+46H,?D
ENDM
LDY MACRO ?R,?D ;;LOAD REG R FROM MEMORY AT (IY+D)
@CHK ?D
DB 0FDH,?R*8+46H,?D
ENDM
STX MACRO ?R,?D ;;STORE REG R AT MEMORY (IX+D)
@CHK ?D
DB 0DDH,70H+?R,?D
ENDM
STY MACRO ?R,?D ;;STORE REG R AT MEMORY (IY+D)
@CHK ?D
DB 0FDH,70H+?R,?D
ENDM
MVIX MACRO ?N,?D ;;MOV #N (8 BITS) INTO MEMORY AT (IX+D)
@CHK ?D
DB 0DDH,36H,?D,?N
ENDM
MVIY MACRO ?N,?D ;;MOV #N (8 BITS) INTO MEMORY AT (IY+D)
@CHK ?D
DB 0FDH,36H,?D,?N
ENDM
LDAI MACRO ;;LOAD ACC WITH REG I (INTERRUPT VECTOR)
DB 0EDH,57H
ENDM
LDAR MACRO ;;LOAD ACC WITH THE REFRESH REG
DB 0EDH,5FH
ENDM
STAI MACRO ;;STORE ACC INTO REG I
DB 0EDH,47H
ENDM
STAR MACRO ;;STORE ACC INTO THE REFRESH REG
DB 0EDH,4FH
ENDM
LXIX MACRO ?NNNN ;;LOAD IMMEDIATE (LDI) IX WITH #NNNN (16 BITS)
DB 0DDH,21H
DW ?NNNN
ENDM
LXIY MACRO ?NNNN ;;LDI REG PAIR IY WITH #NNNN (16 BITS)
DB 0FDH,21H
DW ?NNNN
ENDM
LDED MACRO ?NNNN ;;LOAD DE WITH CONTENTS OF MEMORY AT NNNN
DB 0EDH,5BH ;; (E)=((NN)(NN))
DW ?NNNN ;; (D)=((NN)(NN+1))
ENDM
LBCD MACRO ?NNNN ;;LOAD BC WITH CONTENTS OF MEMORY AT NNNN
DB 0EDH,4BH
DW ?NNNN
ENDM
LSPD MACRO ?NNNN ;;LOAD STACK POINTER WITH CONTENTS OF MEMORY
DB 0EDH,07BH ;; AT NNNN
DW ?NNNN
ENDM
LIXD MACRO ?NNNN ;;LOAD IX WITH CONTENTS OF MEMORY AT NNNN
DB 0DDH,2AH
DW ?NNNN
ENDM
LIYD MACRO ?NNNN ;;LOAD IY WITH CONTENTS OF MEMORY AT NNNN
DB 0FDH,2AH
DW ?NNNN
ENDM
SBCD MACRO ?NNNN ;;STORE BC IN MEMORY LOCATION NNNN
DB 0EDH,43H ;; ((NN)(NN))=(C)
DW ?NNNN ;; ((NN)(NN+1))=(B)
ENDM
SDED MACRO ?NNNN ;;STORE DE IN MEMORY LOC NNNN
DB 0EDH,53H
DW ?NNNN
ENDM
SSPD MACRO ?NNNN ;;STORE STACK POINTER IN MEMORY LOC NNNN
DB 0EDH,73H
DW ?NNNN
ENDM
SIXD MACRO ?NNNN ;;STORE IX IN MEMORY LOC NNNN
DB 0DDH,22H
DW ?NNNN
ENDM
SIYD MACRO ?NNNN ;;STORE IY IN MEMORY LOC NNNN
DB 0FDH,22H
DW ?NNNN
ENDM
SPIX MACRO ;;MOV IX INTO STACK POINTER (SP)
DB 0DDH,0F9H
ENDM
SPIY MACRO ;;MOV IY INTO STACK POINTER (SP)
DB 0FDH,0F9H
ENDM
PUSHIX MACRO ;;PUSH IX ONTO STACK
DB 0DDH,0E5H
ENDM
PUSHIY MACRO ;;PUSH IY ONTO STACK
DB 0FDH,0E5H
ENDM
POPIX MACRO ;;POP IX OFF STACK
DB 0DDH,0E1H
ENDM
POPIY MACRO ;;POP IY OFF STACK
DB 0FDH,0E1H
ENDM
EXAF MACRO ;;EXCHANGE AF AND AF' REGS
DB 08H
ENDM
EXX MACRO ;;EXCHANGE BC AND BC'
DB 0D9H ;; DE AND DE'
;; HL AND HL'
ENDM
XTIX MACRO ;;EXCHANGE TOP OF STACK WITH IX
DB 0DDH,0E3H
ENDM
XTIY MACRO ;;EXCHANGE TOP OF STACK WITH IY
DB 0FDH,0E3H
ENDM
LDI MACRO ;;LOAD MEMORY AT (H,L) TO MEMORY AT (D,E)
DB 0EDH,0A0H ;; INC D,E INC H,L DEC B,C
ENDM
LDIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B0H
ENDM
LDD MACRO ;;LOAD MEMORY AT (H,L) TO MEMORY AT (D,E)
DB 0EDH,0A8H ;; DEC H,L DEC D,E DEC B,C
ENDM
LDDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B8H
ENDM
CCI MACRO ;;COMPARE ACC WITH MEMORY AT (H,L)
DB 0EDH,0A1H ;; INC H,L DEC B,C (P/V=0 IF B=0)
;; (ACC=(H,L) IF Z=0)
ENDM
CCIR MACRO ;;AS ABOVE REPEAT UNTIL (B,C) = 0 OR
;; (A) = (H,L)
DB 0EDH,0B1H
ENDM
CCD MACRO ;;COMPARE ACC WITH MEMORY AT (H,L)
DB 0EDH,0A9H ;; DEC H,L DEC B,C
ENDM
CCDR MACRO ;;AS ABOVE REPEAT UNTIL (BC) = 0 OR
;; (A) = (H,L)
DB 0EDH,0B9H
ENDM
ADDX MACRO ?D ;;ACC=ACC+CONTENTS OF MEMORY AT (IX+D)
@CHK ?D ;; ACC=ACC+((IX+D))
DB 0DDH,86H,?D
ENDM
ADDY MACRO ?D ;;ACC=ACC+((IY+D))
@CHK ?D
DB 0FDH,86H,?D
ENDM
ADCX MACRO ?D ;;ACC=ACC+((IX+D))+CARRY
@CHK ?D
DB 0DDH,8EH,?D
ENDM
ADCY MACRO ?D ;;ACC=ACC+((IY+D))+CARRY
@CHK ?D
DB 0FDH,8EH,?D
ENDM
SUBX MACRO ?D ;;ACC=ACC-((IX+D))
@CHK ?D
DB 0DDH,96H,?D
ENDM
SUBY MACRO ?D ;;ACC=ACC-((IY+D))
@CHK ?D
DB 0FDH,96H,?D
ENDM
SBCX MACRO ?D ;;ACC=ACC-((IX+D))-BORROW
@CHK ?D
DB 0DDH,9EH,?D
ENDM
SBCY MACRO ?D ;;ACC=ACC-((IY+D))-BORROW
@CHK ?D
DB 0FDH,9EH,?D
ENDM
ANDX MACRO ?D ;;AND ACC WITH CONTENTS OF MEMORY (IX+D)
@CHK ?D
DB 0DDH,0A6H,?D
ENDM
ANDY MACRO ?D ;;AND ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0A6H,?D
ENDM
XORX MACRO ?D ;;EXCLUSIVE OR THE ACC WITH CONTEMTS OF
@CHK ?D ;; MEMORY AT (IX+D)
DB 0DDH,0AEH,?D
ENDM
XORY MACRO ?D ;;XOR ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0AEH,?D
ENDM
ORX MACRO ?D ;;OR THE ACC WITH CONTENTS OF MEMORY (IX+D)
@CHK ?D
DB 0DDH,0B6H,?D
ENDM
ORY MACRO ?D ;;OR ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0B6H,?D
ENDM
CMPX MACRO ?D ;;COMPARE THE ACC WITH CONTENTS OF MEMORY
@CHK ?D ;; AT LOC (IX+D)
DB 0DDH,0BEH,?D
ENDM
CMPY MACRO ?D ;;CMP ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0BEH,?D
ENDM
INRX MACRO ?D ;;INC MEMORY CONTENTS AT (IX+D)
@CHK ?D
DB 0DDH,34H,?D
ENDM
INRY MACRO ?D ;;INC MEMORY CONTENTS AT (IY+D)
@CHK ?D
DB 0FDH,34H,?D
ENDM
DCRX MACRO ?D ;;DEC MEMORY CONTENTS AT (IX+D)
@CHK ?D
DB 0DDH,035H,?D
ENDM
DCRY MACRO ?D ;;DEC MEMORY CONTENTS AT (IY+D)
@CHK ?D
DB 0FDH,35H,?D
ENDM
NEG MACRO ;;NEGATE ACC (2'S COMPLEMENT)
DB 0EDH,44H
ENDM
IM0 MACRO ;;SET INTERRUPT MODE #0
DB 0EDH,46H
ENDM
IM1 MACRO ;;SET INTERRUPT MODE #1 (RESTART 0038H)
DB 0EDH,56H
ENDM
IM2 MACRO ;;SET INTERRUPT MODE #2
DB 0EDH,5EH ;; RESTART AT LOC (INT REG I)(DEV SUPPLIED)
ENDM
BC EQU 0
DE EQU 2
HL EQU 4
IX EQU 4
IY EQU 4
DADC MACRO ?R ;;DOUBLE ADD (H,L)=(H,L)+(RP)+CARRY
DB 0EDH,?R*8+4AH
ENDM
DSBC MACRO ?R ;;DOUBLE SUB (H,L)=(H,L)-(RP)-CARRY
DB 0EDH,?R*8+42H
ENDM
DADX MACRO ?R ;;DOUBLE ADD (IX)=(IX)+(RP)
DB 0DDH,?R*8+09H
ENDM
DADY MACRO ?R ;;DOUBLE ADD (IY)=(IY)+(RP)
DB 0FDH,?R*8+09H
ENDM
INXIX MACRO ;;INC (IX)
DB 0DDH,23H
ENDM
INXIY MACRO ;;INC (IY)
DB 0FDH,23H
ENDM
DCXIX MACRO ;;DEC (IX)
DB 0DDH,2BH
ENDM
DCXIY MACRO ;;DEC (IY)
DB 0FDH,2BH
ENDM
BIT MACRO ?N,?R ;;TEST BIT N IN REG R
DB 0CBH,?N*8+?R+40H
ENDM
SETB MACRO ?N,?R ;;SET BIT N IN REG R
DB 0CBH,?N*8+?R+0C0H
ENDM
RES MACRO ?N,?R ;;RESET BIT N IN REG R
DB 0CBH,?N*8+?R+80H
ENDM
BITX MACRO ?N,?D ;;TEST BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+46H
ENDM
BITY MACRO ?N,?D ;;TEST BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+46H
ENDM
SETX MACRO ?N,?D ;;SET BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+0C6H
ENDM
SETY MACRO ?N,?D ;;SET BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+0C6H
ENDM
RESX MACRO ?N,?D ;;RESET BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+86H
ENDM
RESY MACRO ?N,?D ;;RESET BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+86H
ENDM
JR MACRO ?N ;;JUMP RELATIVE
@CHECK ?N
DB 18H,?DD
ENDM
JMPR MACRO ?N ;;JUMP RELATIVE AS ABOVE
@CHECK ?N
DB 18H,?DD
ENDM
JRC MACRO ?N ;;JUMP RELATIVE ON CARRY
@CHECK ?N
DB 38H,?DD
ENDM
JRNC MACRO ?N ;;JUMP RELATIVE ON NOT CARRY
@CHECK ?N
DB 30H,?DD
ENDM
JRZ MACRO ?N ;;JUMP RELATIVE ON ZERO
@CHECK ?N
DB 28H,?DD
ENDM
JRNZ MACRO ?N ;;JUMP RELATIVE ON NOT ZERO
@CHECK ?N
DB 20H,?DD
ENDM
DJNZ MACRO ?N ;;DEC B AND JUMP RELATIVE ON B NOT ZERO
@CHECK ?N
DB 10H,?DD
ENDM
PCIX MACRO ;;MOV IX INTO PROGRAM COUNTER
DB 0DDH,0E9H
ENDM
PCIY MACRO ;;MOV IY INTO PROGRAM COUNTER
DB 0FDH,0E9H
ENDM
RETI MACRO ;;RETURN FROM INTERRUPT (EI NOT ENABLED)
DB 0EDH,4DH
ENDM
RETN MACRO ;;RETURN FROM NON-MASKABLE INTERRUPT
DB 0EDH,45H
ENDM
RETEI MACRO ;;RETURN FROM INTERRUPT (EI ENABLED)
DB EI,0EDH,4DH
ENDM
INP MACRO ?R ;;GO TO INPUT PORT (SPECIFIED BY REG C)
DB 0EDH,?R*8+40H ;; AND LOAD INTO REG R
ENDM
OUTP MACRO ?R ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,?R*8+41H ;; FROM REG R
ENDM
INI MACRO ;;LOAD MEMORY (H,L) WITH INPUT PORT
DB 0EDH,0A2H ;; (SPECIFIED BY REG C) INC H,L DEC B
ENDM
INIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B2H
ENDM
IND MACRO ;;LOAD MEMORY (H,L) WITH INPUT PORT
DB 0EDH,0AAH ;; (SPECIFIED BY REG C) DEC H,L DEC B
ENDM
INDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0BAH
ENDM
OUTI MACRO ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,0A3H ;; FROM MEMORY (H,L) INC H,L DEC B
ENDM
OUTIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B3H
ENDM
OUTD MACRO ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,0ABH ;; FROM MEMORY (H,L) DEC H,L DEC B
ENDM
OUTDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0BBH
ENDM
RLCR MACRO ?R ;;ROTATE LEFT CIRCULAR REG R
DB 0CBH, 00H + ?R
ENDM
RLCX MACRO ?D ;;ROTATE LEFT CIRCULAR CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 06H
ENDM
RLCY MACRO ?D ;;ROTATE LEFT CIRCULAR CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 06H
ENDM
RALR MACRO ?R ;;ROTATE ARITHMETIC LEFT REG R
DB 0CBH, 10H+?R
ENDM
RALX MACRO ?D ;;ROTATE ARITHMETIC LEFT CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 16H
ENDM
RALY MACRO ?D ;;ROTATE ARITHMETIC LEFT CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 16H
ENDM
RRCR MACRO ?R ;;ROTATE RIGHT CIRCULAR REG R
DB 0CBH, 08H + ?R
ENDM
RRCX MACRO ?D ;;ROTATE RIGHT CIRCULAR CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 0EH
ENDM
RRCY MACRO ?D ;;ROTATE RIGHT CIRCULAR CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 0EH
ENDM
RARR MACRO ?R ;;ROTATE ARITHMETIC RIGHT REG R
DB 0CBH, 18H + ?R
ENDM
RARX MACRO ?D ;;ROTATE ARITHMETIC RIGHT CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 1EH
ENDM
RARY MACRO ?D ;;ROTATE ARITHMETIC RIGHT CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 1EH
ENDM
SLAR MACRO ?R ;;SHIFT LEFT ARITHMETIC REG R
DB 0CBH, 20H + ?R
ENDM
SLAX MACRO ?D ;;SHIFT LEFT ARITHMETIC CONTENTS OF MEMORY
;; AT(IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 26H
ENDM
SLAY MACRO ?D ;;SHIFT LEFT ARITHMETIC CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 26H
ENDM
SRAR MACRO ?R ;;SHIFT RIGHT ARITHMETIC REG R
DB 0CBH, 28H+?R
ENDM
SRAX MACRO ?D ;;SHIFT RIGHT ARITHMETIC CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 2EH
ENDM
SRAY MACRO ?D ;;SHIFT RIGHT ARITHMETIC CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 2EH
ENDM
SRLR MACRO ?R ;;SHIFT RIGHT LOGICALLY REG R
DB 0CBH, 38H + ?R
ENDM
SRLX MACRO ?D ;;SHIFT RIGHT LOGICALLY CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 3EH
ENDM
SRLY MACRO ?D ;;SHIFT RIGHT LOGICALLY CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 3EH
ENDM
RLD MACRO ;;ROTATE NIBBLE LEFT & RIGHT BETWEEN ACC
DB 0EDH, 6FH ;; AND CONTENTS AT (H,L)
ENDM
RRD MACRO ;;ROTATE NIBBLE RIGHT & LEFT BETWEEN ACC
DB 0EDH, 67H ;; AND CONTENTS AT (H,L)
ENDM

View File

@@ -0,0 +1,88 @@
This is the Text Document for MOSS22, the Altair 8800 Monitor Program - MOSS Ver 2.2
The files contained in folder 8800-Manual are:
CCS_2810_Z80_CPU_1980.pdf - Original manual
MOSS22.PDF - Monitor Pages - extracted
MOSS22.TXT - Text
The Monitor (MOSS22) is described in detail in Chapter 3 of the Original Manual.
The appropriate PDF Pages that contain the Monitor Source Code are included in MOSS22.PDF.
The files contained in folder tif are the *.tif images of the PDF pages to be OCR'd.
page1.tif
page2.tif
page3.tif
page4.tif
page5.tif
page6.tif
page7.tif
page8.tif
page9.tif
page10.tif
page11.tif
page12.tif
page13.tif
page14.tif
page15.tif
page16.tif
page17.tif
page18.tif
page19.tif
page20.tif
page21.tif
page22.tif
page23.tif
page24.tif
Those pages were extracted, converted to tif files (450 DPI) and OCR'd with TextBridge Classic.
The Text file was then edited, aligned, and proof read several times to give the MOSS22.ASM file.
The files contained in folder MOSS22 are:
MOSS22.ASM
MOSS22.PRN
MOSS22.HEX
MOSS22.SYM
The files contained in folder Z80LIB are:
Z80.LIB
Z80.DOC
The Z80.LIB has to be the file with 9856 Bytes, and needs to be modified so the source assembles properly.
The above file, has already been modified.
References:
http://z80cpu.eu/files/archive/roche/Z80LIB.TXT
http://www.retroarchive.org/cpm/os/
Z80.LIB = 9856 Bytes
The DRI Assemblers and Manuals can be downloaded from:
http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Assembler%20Collection.htm
Copy the following files to B:
MAC.COM
MOSS22.ASM
Z80.LIB
Z80.DOC
Execute the DRI Assembler MAC.COM in CP/M 2.2 with:
B:
MAC MOSS22.ASM
It will Build:
MOSS22.HEX
MOSS22.PRN
MOSS22.SYM
Compare the MOSS22.PRN file with the MOS22.PDF file for identical bytes.
Larry Kraemer & Garry Kraemer

View File

@@ -0,0 +1,90 @@
Altair 8800 Monitor (MOS Ver 2.2) Source Code, thanks to Larry Kraemer.
/readme.1st
This is the Text Document for MOSS22, the Altair 8800 Monitor Program - MOSS Ver 2.2
The files contained in folder 8800-Manual are:
CCS_2810_Z80_CPU_1980.pdf - Original manual
MOSS22.PDF - Monitor Pages - extracted
MOSS22.TXT - Text
The Monitor (MOSS22) is described in detail in Chapter 3 of the Original Manual.
The appropriate PDF Pages that contain the Monitor Source Code are included in MOSS22.PDF.
The files contained in folder tif are the *.tif images of the PDF pages to be OCR'd.
page1.tif
page2.tif
page3.tif
page4.tif
page5.tif
page6.tif
page7.tif
page8.tif
page9.tif
page10.tif
page11.tif
page12.tif
page13.tif
page14.tif
page15.tif
page16.tif
page17.tif
page18.tif
page19.tif
page20.tif
page21.tif
page22.tif
page23.tif
page24.tif
Those pages were extracted, converted to tif files (450 DPI) and OCR'd with TextBridge Classic.
The Text file was then edited, aligned, and proof read several times to give the MOSS22.ASM file.
The files contained in folder MOSS22 are:
MOSS22.ASM
MOSS22.PRN
MOSS22.HEX
MOSS22.SYM
The files contained in folder Z80LIB are:
Z80.LIB
Z80.DOC
The Z80.LIB has to be the file with 9856 Bytes, and needs to be modified so the source assembles properly.
The above file, has already been modified.
References:
http://z80cpu.eu/files/archive/roche/Z80LIB.TXT
http://www.retroarchive.org/cpm/os/
Z80.LIB = 9856 Bytes
The DRI Assemblers and Manuals can be downloaded from:
http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Assembler%20Collection.htm
Copy the following files to B:
MAC.COM
MOSS22.ASM
Z80.LIB
Z80.DOC
Execute the DRI Assembler MAC.COM in CP/M 2.2 with:
B:
MAC MOSS22.ASM
It will Build:
MOSS22.HEX
MOSS22.PRN
MOSS22.SYM
Compare the MOSS22.PRN file with the MOS22.PDF file for identical bytes.
Larry Kraemer & Garry Kraemer

View File

@@ -0,0 +1,37 @@
#!/bin/bash
#
#This script will extrace all pages of a PDF to Sequential pages, then convert those PDF
#pages to text using TextBridge
#
#
#Larry Kraemer 09-21-2014 Chaffee, MO
#
#Splitting files
#
#Splitting PDF files with pdftk was an interesting experience. The burst option breaks a PDF into #multiple files -- one file for each page:
#
# To test the conversion try these commands: (I have better luck with TextBridge Conversions)
# convert -monochrome -density 300 pg_0001.pdf pg001.tif
# tesseract pg001.tif pg001 -psm 6
# OR Use Textbridge to convert tif files to TXT as spreadsheet or table
#
#
PAGES=24 # set to the number of PDF pages to process
SOURCE=MOSS22.pdf # set to the file name of the multipage PDF
#OUTPUT=moss22.txt # creates the final "output file"
RESOLUTION=400 # set to the resolution the scanner used (the higher, the better)
#
touch $OUTPUT
for i in `seq 1 $PAGES`; do
convert -monochrome -density $RESOLUTION $SOURCE\[$(($i - 1 ))\] page$i.tif
# tesseract page$i.tif page$i -psm 6
# cat $OUTPUT page$i.txt > temp.txt
# rm $OUTPUT
# rm page$i.tif
# rm page$i.txt
# mv temp.txt $OUTPUT
#
# OR Use Textbridge to convert tif files to TXT as spreadsheet or table
#
done

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.