NAME ZXLOAD TITLE ZXLD VER 2.1 9/80 RMK ; ; THIS ROUTINE IS A RELOCATING LOADER FOR ZX65. ; WHEN LINKED WITH ZX65R V 2.1, THIS LOADER ALLOWS THAT ; PROGRAM TO ACCOMODATE ANY SIZE CPM SYSTEM ; GLOBAL RELBAS PSECT ABS ; OFFSET EQU 0F0FDH LNGTH EQU 0F00H ; ; FIND ABSOLUTE BASE FOR ZX65 ; ORG 100H ; FOR CPM LDE LD SP,LDE LD HL,(1) ; WS VECTOR BIOS+3 LD DE,OFFSET ; CMP OFFSET ADD HL,DE PUSH HL ; SAVE ABSBAS CCF LD DE,RELBAS PUSH DE ; SAVE RELBAS SBC HL,DE EX DE,HL ; DE=XFRBAS ; ; ADJUST ALL INSTRUCTIONS TO ABSBAS ; AREL LD IX,REL2 ; 2-BYTE VALUES ALP LD IY,RELBAS CALL IXFER JR NZ,ALP-$ ; BREL LD IX,REL3 ; 3-BYTE INSTRS BLP LD IY,RELBAS INC IY CALL IXFER JR NZ,BLP-$ ; CREL LD IX,REL4 ; 4-BYTE INSTRS CLP LD IY,RELBAS INC IY INC IY CALL IXFER JR NZ,CLP-$ ; ; MOVE PGM TO ABSBAS AND JUMP TO IT ; POP HL ; RETRV RELBAS POP DE ; RETRIEVE ABSBAS PUSH DE LD BC,LNGTH LDIR RET ; IXFER LD B,(IX+1) LD C,(IX+0) ; BC=PGM OFFSET LD A,C DEC A RET Z ADD IY,BC ; IY = INSTRUCTION LD H,(IY+1) LD L,(IY+0) ; HL = REL TGT ADDR ADD HL,DE ; HL = ABS TGT ADDR LD (IY+1),H LD (IY+0),L INC IX INC IX RET ; ; ; RELOCATION TABLES FOR ZX65 ; **** NOTE **** IF YOU MAKE ANY CHANGES IN ZX65R THAT ; AFFECT THE LOCATION OF ANY NON-RELOCATABLE INSTRUCTION ; THIS LOADER WILL NO LONGER WORK!!! ; REL2 DEFW 0D62H ; 2-BYTE LABELS DEFW 0D64H DEFW 0D66H DEFW 0D68H DEFW 0D6AH DEFW 0D6CH DEFW 0D6EH DEFW 0D70H DEFW 0D72H DEFW 0D74H DEFW 0D76H DEFW 0D78H DEFW 0D7AH DEFW 0D7CH DEFW 0D7EH DEFW 0D80H DEFW 0D82H DEFW 0D84H DEFW 0D86H DEFW 0D88H DEFW 0D8AH DEFW 0D8CH DEFW 0D8EH DEFW 0D90H DEFW 0D92H DEFW 0D94H DEFW 0D96H DEFW 0D98H DEFW 0D9AH DEFW 0D9CH DEFW 0D9EH DEFW 0DA0H DEFW 0DA2H DEFW 0DA4H DEFW 0DA6H DEFW 0DA8H DEFW 0DAAH DEFW 0DACH DEFW 0001 ; ; THREE-BYTE INSTRUCTIONS ; REL3 DEFW 0000H DEFW 0005H DEFW 0008H DEFW 000FH DEFW 0012H DEFW 0015H DEFW 0019H DEFW 001CH DEFW 001FH DEFW 0024H DEFW 0029H DEFW 0036H DEFW 003BH DEFW 004CH DEFW 0051H DEFW 0056H DEFW 005BH DEFW 0060H DEFW 0065H DEFW 006AH DEFW 0073H DEFW 0076H DEFW 007EH DEFW 0081H DEFW 0084H DEFW 0087H DEFW 008DH DEFW 009CH DEFW 009FH DEFW 00A6H DEFW 00B5H DEFW 00BAH DEFW 00C1H DEFW 00C4H DEFW 00C9H DEFW 00D0H DEFW 00D7H DEFW 00DEH DEFW 00E1H DEFW 00E4H DEFW 00F3H DEFW 00F6H DEFW 00FCH DEFW 00FFH DEFW 0102H DEFW 0114H DEFW 011BH DEFW 0122H DEFW 0125H DEFW 0153H DEFW 016BH DEFW 0172H DEFW 0178H DEFW 017FH DEFW 0186H DEFW 018EH DEFW 0193H DEFW 0196H DEFW 0199H DEFW 019EH DEFW 01A3H DEFW 01ADH DEFW 01B2H DEFW 01B7H DEFW 01BCH DEFW 01BFH DEFW 01C9H DEFW 01CEH DEFW 01D1H DEFW 01DDH DEFW 01E2H DEFW 01E5H DEFW 01EBH DEFW 01F0H DEFW 01F3H DEFW 01FAH DEFW 0205H DEFW 0209H DEFW 021EH DEFW 0221H DEFW 0227H DEFW 025FH DEFW 0266H DEFW 026BH DEFW 0271H DEFW 027EH DEFW 028BH DEFW 0291H DEFW 0296H DEFW 0299H DEFW 02A3H DEFW 02A9H DEFW 02ACH DEFW 02B7H DEFW 02BDH DEFW 02C0H DEFW 02CDH DEFW 02E8H DEFW 0313H DEFW 031EH DEFW 0332H DEFW 0339H DEFW 0364H DEFW 036BH DEFW 0371H DEFW 0374H DEFW 037EH DEFW 038CH DEFW 0390H DEFW 0393H DEFW 0399H DEFW 039CH DEFW 03A2H DEFW 03A5H DEFW 03ABH DEFW 03B1H DEFW 03B4H DEFW 03E3H DEFW 0415H DEFW 0418H DEFW 042EH DEFW 0435H DEFW 0438H DEFW 043DH DEFW 0440H DEFW 044AH DEFW 044DH DEFW 0451H DEFW 0454H DEFW 045EH DEFW 046FH DEFW 0476H DEFW 047BH DEFW 047EH DEFW 0484H DEFW 0487H DEFW 048BH DEFW 048EH DEFW 0498H DEFW 049EH DEFW 04A4H DEFW 04AAH DEFW 04B4H DEFW 04BAH DEFW 04C0H DEFW 04C6H DEFW 04D0H DEFW 04D4H DEFW 04D7H DEFW 04E1H DEFW 04E5H DEFW 04E8H DEFW 04EEH DEFW 04F1H DEFW 04F9H DEFW 04FEH DEFW 0504H DEFW 0514H DEFW 051CH DEFW 052FH DEFW 0542H DEFW 054EH DEFW 0555H DEFW 0561H DEFW 0568H DEFW 0574H DEFW 057FH DEFW 0587H DEFW 0598H DEFW 05ABH DEFW 05B1H DEFW 05B7H DEFW 05BDH DEFW 05C3H DEFW 05CDH DEFW 05D7H DEFW 065AH DEFW 06E9H DEFW 06ECH DEFW 06EFH DEFW 06F3H DEFW 06F6H DEFW 06F9H DEFW 06FCH DEFW 0715H DEFW 0718H DEFW 071BH DEFW 0722H DEFW 0725H DEFW 072CH DEFW 073DH DEFW 074BH DEFW 074EH DEFW 0751H DEFW 0755H DEFW 0758H DEFW 075BH DEFW 075FH DEFW 0762H DEFW 0765H DEFW 076FH DEFW 0778H DEFW 077BH DEFW 0782H DEFW 0791H DEFW 0798H DEFW 079DH DEFW 07A3H DEFW 07A8H DEFW 07ABH DEFW 07B8H DEFW 07C3H DEFW 07CCH DEFW 07D5H DEFW 07D8H DEFW 07DEH DEFW 07EBH DEFW 07F2H DEFW 07F5H DEFW 07F8H DEFW 07FBH DEFW 0804H DEFW 0807H DEFW 080AH DEFW 080DH DEFW 0813H DEFW 0816H DEFW 081BH DEFW 081EH DEFW 0821H DEFW 082EH DEFW 0831H DEFW 0834H DEFW 0837H DEFW 0840H DEFW 0843H DEFW 0846H DEFW 0849H DEFW 085FH DEFW 0862H DEFW 08A7H DEFW 08AAH DEFW 08ADH DEFW 08B0H DEFW 08B6H DEFW 08B9H DEFW 08BCH DEFW 08CBH DEFW 08CEH DEFW 08D1H DEFW 08D7H DEFW 0902H DEFW 0905H DEFW 090AH DEFW 090EH DEFW 0911H DEFW 091DH DEFW 0920H DEFW 0936H DEFW 093AH DEFW 093DH DEFW 0995H DEFW 0998H DEFW 099DH DEFW 09A0H DEFW 09A3H DEFW 09A6H DEFW 09B4H DEFW 09BAH DEFW 09C0H DEFW 09E7H DEFW 09EAH DEFW 0A04H DEFW 0A07H DEFW 0A0EH DEFW 0A29H DEFW 0A3EH DEFW 0A41H DEFW 0A4CH DEFW 0A51H DEFW 0A56H DEFW 0A5BH DEFW 0A60H DEFW 0A63H DEFW 0A6DH DEFW 0A72H DEFW 0A75H DEFW 0A7CH DEFW 0A81H DEFW 0A9BH DEFW 0AB3H DEFW 0AC0H DEFW 0AD3H DEFW 0AE6H DEFW 0AF0H DEFW 0AFAH DEFW 0B00H DEFW 0B0FH DEFW 0B16H DEFW 0B1BH DEFW 0B22H DEFW 0B29H DEFW 0B2EH DEFW 0B31H DEFW 0B34H DEFW 0B37H DEFW 0B3AH DEFW 0B3DH DEFW 0B40H DEFW 0B43H DEFW 0B46H DEFW 0B49H DEFW 0B4CH DEFW 0B4FH DEFW 0B52H DEFW 0B55H DEFW 0B58H DEFW 0001 ; ; FOUR-BYTE INSTRUCTIONS ; REL4 DEFW 000BH DEFW 002CH DEFW 0046H DEFW 006FH DEFW 0098H DEFW 00A2H DEFW 00A9H DEFW 00D3H DEFW 00DAH DEFW 00E9H DEFW 00EDH DEFW 0117H DEFW 011EH DEFW 012CH DEFW 0165H DEFW 0182H DEFW 022DH DEFW 02E4H DEFW 032EH DEFW 0335H DEFW 03E8H DEFW 042AH DEFW 0431H DEFW 0614H DEFW 061AH DEFW 0620H DEFW 0632H DEFW 0643H DEFW 0656H DEFW 07EEH DEFW 0825H DEFW 08BFH DEFW 08DAH DEFW 08DEH DEFW 098BH DEFW 09AAH DEFW 09F3H DEFW 0A3AH DEFW 0001 DEFW 0 ;