summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2016-08-02 12:06:13 +0200
committerLeo C2016-08-02 12:06:13 +0200
commited6c425a2879de0115c2fab2c9b9e74088c336e8 (patch)
tree336b36e33758ef650ac3f2d8792b930e97f9885b
parent0c4244e5b6acd0ddc6d50bd7e8eb5f19001f772b (diff)
downloadddt180-ed6c425a2879de0115c2fab2c9b9e74088c336e8.zip
Change relocation loader
The new relocater works whith PRL file, generated by Link-80.
-rw-r--r--ddtz.z80236
1 files changed, 46 insertions, 190 deletions
diff --git a/ddtz.z80 b/ddtz.z80
index 6862413..2eda49d 100644
--- a/ddtz.z80
+++ b/ddtz.z80
@@ -1,46 +1,59 @@
; Disassembled ddtz.com, version "DDT/Z [8101]"
+; with modified relocater.
;
-; Assemble with M80 or a compatible assembler
-; to (re)create the original .com file.
+; Build steps:
+; - Assemble to a .REL file with M80 or a compatible assembler.
+; - Use Digital Research Link-80 to generate a .PRL file (op switch).
+; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.
;-------------------------------------------------------------------------------
; Relocation loader
;
- ASEG
- ORG 00100H
- LD SP,ldr_end+stack
+TPA equ 0100h
+ cseg
+ .phase TPA
+
+ LD SP,ldr_end+(stack-ddtz_base)
+ LD DE,ldr_end+(expr_buf-ddtz_base)
LD C,BDOS_PSTR
- LD DE,ldr_end+expr_buf
CALL BDOS
- LD HL,bitmap
+
+ LD HL,ldr_end+ddtz_size ;start of reloc bitmap
+ ld bc,0108h ;init bit counter
+
EXX
LD HL,(BDOS+1)
LD (ldr_end+1),HL
LD BC,ddtz_size-1
LD D,B
LD E,0FFH
- INC DE
- INC BC
- PUSH BC
+ INC DE ;size rounded up to next page boundary
+ INC BC ;ddtz_size
OR A
- SBC HL,DE
- LD (BDOS+1),HL
- EX DE,HL
- LD HL,ldr_end-1
-A0128: INC HL
- LD A,L
- AND 007H
- JR NZ,A0133
+ SBC HL,DE ;BDOS - size
+ LD (BDOS+1),HL ;-> new BDOS entry
+
+ push hl
+ PUSH BC
+ ld de,ldr_end
+ sbc hl,de
+ EX DE,HL ;-> DE
+ LD HL,ldr_size
+ add hl,bc
+ ld b,h
+ ld c,l
+ LD HL,TPA
+reloc_lp:
EXX
- LD A,(HL)
+ djnz reloc_nl
+ ld b,c ;reload bit counter
+ LD e,(HL) ;get next 8 relocation bits
INC HL
+reloc_nl:
+ sla e
EXX
- EX AF,AF'
-A0133: EX AF,AF'
- ADD A,A
- JR NC,A0141
- EX AF,AF'
+ JR NC,reloc_next
DEC HL
LD A,(HL)
ADD A,E
@@ -49,29 +62,26 @@ A0133: EX AF,AF'
LD A,(HL)
ADC A,D
LD (HL),A
- EX AF,AF'
-A0141: EX AF,AF'
- DEC BC
- LD A,B
- OR C
- JR NZ,A0128
+reloc_next:
+ cpi
+ jp pe,reloc_lp
+ dec hl
+
POP BC
+ pop de
EX DE,HL
ADD HL,BC
EX DE,HL
DEC DE
LDDR
- LD HL,conbuf+2
+ LD HL,conbuf+2-ddtz_base
ADD HL,DE
JP (HL)
- rept (($+7) and 0FFF8H) - $
- DEFB 000H
- endm
-
ldr_end:
+ldr_size equ $ - TPA
- .phase 0
+ .dephase
;-------------------------------------------------------------------------------
; DDT/Z core
;
@@ -5688,159 +5698,5 @@ ddtz_size equ $-ddtz_base
ddtz_end:
;-------------------------------------------------------------------------------
- .dephase
-bitmap:
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,001H,044H,040H,000H
- db 000H,010H,084H,090H,080H,010H,000H,001H
- db 024H,092H,049H,009H,024H,084H,080H,004H
- db 080H,048H,055H,055H,055H,055H,055H,055H
- db 054H,024H,042H,048H,000H,010H,000H,000H
- db 000H,080H,000H,080H,002H,008H,010H,082H
- db 004H,000H,080H,084H,044H,008H,024H,000H
- db 084H,004H,082H,001H,000H,000H,041H,000H
- db 008H,021H,002H,000H,000H,090H,000H,020H
- db 020H,001H,000H,092H,004H,021H,009H,000H
- db 000H,008H,010H,088H,004H,080H,000H,000H
- db 004H,000H,020H,000H,000H,001H,000H,080H
- db 020H,000H,084H,081H,004H,090H,040H,040H
- db 010H,001H,001H,008H,002H,000H,000H,000H
- db 091H,004H,000H,000H,000H,000H,024H,000H
- db 000H,000H,010H,080H,00AH,0AAH,044H,020H
- db 002H,000H,000H,000H,000H,008H,040H,000H
- db 000H,000H,000H,000H,000H,000H,048H,088H
- db 000H,00AH,0AAH,0A1H,012H,042H,008H,020H
- db 002H,008H,000H,000H,000H,008H,002H,042H
- db 040H,000H,000H,000H,001H,000H,001H,000H
- db 021H,000H,000H,001H,000H,048H,020H,000H
- db 010H,008H,000H,020H,040H,090H,004H,000H
- db 010H,010H,000H,000H,000H,001H,024H,090H
- db 080H,090H,092H,004H,001H,024H,092H,010H
- db 092H,041H,008H,010H,021H,002H,042H,010H
- db 000H,000H,012H,010H,048H,000H,000H,000H
- db 000H,024H,092H,049H,024H,092H,009H,021H
- db 024H,020H,090H,040H,008H,001H,000H,009H
- db 009H,011H,000H,080H,008H,004H,000H,008H
- db 000H,001H,020H,012H,010H,008H,000H,042H
- db 049H,000H,010H,001H,020H,011H,000H,040H
- db 020H,010H,000H,040H,000H,012H,000H,091H
- db 000H,044H,080H,021H,024H,040H,009H,010H
- db 089H,000H,010H,008H,040H,024H,010H,088H
- db 049H,024H,020H,041H,000H,001H,022H,000H
- db 000H,000H,010H,000H,000H,000H,020H,001H
- db 000H,000H,020H,000H,000H,010H,000H,012H
- db 000H,008H,000H,000H,004H,000H,002H,000H
- db 000H,004H,000H,040H,000H,091H,020H,012H
- db 012H,000H,000H,012H,000H,000H,000H,000H
- db 048H,020H,002H,008H,002H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,050H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,008H,011H
- db 024H,024H,004H,000H,010H,080H,092H,048H
- db 000H,022H,049H,009H,008H,000H,002H,010H
- db 040H,012H,042H,024H,044H,081H,024H,082H
- db 048H,000H,020H,020H,080H,000H,081H,020H
- db 000H,000H,000H,000H,000H,000H,000H,009H
- db 024H,092H,049H,024H,092H,049H,024H,092H
- db 049H,024H,092H,049H,024H,089H,024H,001H
- db 000H,004H,009H,021H,004H,092H,040H,048H
- db 090H,049H,022H,024H,090H,008H,002H,044H
- db 089H,011H,000H,000H,020H,080H,000H,001H
- db 024H,044H,000H,080H,092H,049H,024H,091H
- db 020H,041H,008H,081H,000H,004H,000H,008H
- db 040H,010H,000H,000H,000H,092H,002H,008H
- db 004H,000H,004H,000H,000H,000H,000H,001H
- db 002H,024H,082H,002H,048H,009H,000H,010H
- db 020H,048H,002H,020H,000H,000H,000H,000H
- db 000H,041H,000H,000H,000H,042H,008H,000H
- db 004H,000H,000H,002H,000H,000H,010H,000H
- db 000H,000H,000H,004H,001H,002H,042H,020H
- db 084H,000H,088H,004H,000H,004H,080H,011H
- db 010H,012H,004H,008H,041H,020H,020H,010H
- db 089H,002H,008H,000H,000H,010H,040H,004H
- db 081H,022H,042H,024H,020H,000H,049H,024H
- db 092H,048H,000H,000H,024H,000H,000H,020H
- db 082H,000H,000H,020H,000H,008H,024H,004H
- db 090H,048H,082H,044H,008H,001H,020H,044H
- db 000H,082H,020H,011H,000H,024H,092H,004H
- db 080H,024H,092H,049H,024H,092H,049H,024H
- db 092H,049H,024H,092H,049H,024H,092H,049H
- db 024H,092H,049H,024H,092H,049H,024H,092H
- db 049H,024H,088H,049H,024H,082H,010H,089H
- db 024H,090H,081H,020H,000H,001H,004H,000H
- db 000H,010H,001H,020H,000H,011H,020H,001H
- db 010H,008H,000H,000H,040H,010H,040H,080H
- db 020H,000H,024H,008H,024H,090H,092H,004H
- db 024H,090H,000H,001H,024H,020H,002H,040H
- db 000H,000H,009H,000H,021H,024H,009H,000H
- db 090H,090H,088H,008H,001H,000H,048H,004H
- db 002H,000H,012H,012H,040H,000H,012H,010H
- db 092H,004H,090H,049H,021H,000H,040H,021H
- db 008H,022H,009H,009H,002H,040H,000H,002H
- db 000H,012H,042H,040H,000H,000H,081H,000H
- db 049H,000H,022H,009H,000H,020H,092H,001H
- db 000H,010H,000H,010H,020H,004H,092H,000H
- db 000H,048H,000H,090H,082H,009H,000H,000H
- db 048H,042H,049H,024H,090H,090H,000H,092H
- db 000H,092H,044H,020H,000H,000H,000H,000H
- db 000H,000H,000H,021H,008H,048H,020H,002H
- db 000H,000H,024H,002H,000H,010H,000H,012H
- db 040H,008H,044H,002H,020H,000H,084H,080H
- db 048H,000H,080H,000H,090H,000H,080H,000H
- db 042H,000H,000H,040H,001H,002H,008H,000H
- db 088H,001H,024H,020H,090H,080H,024H,000H
- db 081H,000H,002H,040H,008H,001H,024H,048H
- db 048H,008H,008H,041H,008H,090H,044H,048H
- db 048H,001H,001H,000H,001H,020H,012H,010H
- db 002H,041H,020H,000H,000H,000H,000H,000H
- db 000H,000H,000H,004H,082H,041H,020H,008H
- db 009H,001H,020H,090H,048H,024H,000H,000H
- db 010H,040H,000H,000H,000H,000H,080H,000H
- db 000H,000H,004H,021H,008H,042H,010H,084H
- db 021H,008H,042H,010H,084H,021H,008H,042H
- db 010H,084H,020H,084H,021H,008H,042H,010H
- db 084H,021H,008H,041H,008H,042H,010H,084H
- db 021H,000H,000H,000H,000H,000H,000H,084H
- db 021H,008H,042H,010H,084H,021H,008H,042H
- db 008H,042H,010H,042H,010H,084H,021H,008H
- db 042H,024H,092H,001H,024H,080H,024H,024H
- db 092H,041H,024H,092H,049H,009H,009H,009H
- db 020H,002H,002H,040H,000H,010H,082H,048H
- db 049H,000H,024H,089H,009H,024H,092H,042H
- db 048H,000H,048H,042H,012H,000H,004H,092H
- db 049H,009H,024H,092H,042H,000H,000H,009H
- db 004H,000H,001H,000H,021H,000H,000H,010H
- db 012H,009H,002H,010H,004H,004H,024H,000H
- db 090H,084H,000H,000H,001H,004H,090H,092H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 080H,004H,012H,041H,011H,024H,012H,004H
- db 021H,008H,042H,010H,084H,021H,008H,042H
- db 020H,080H,000H,008H,008H,042H,000H,000H
- db 000H,024H,020H,002H,008H,021H,002H,010H
- db 000H,020H,080H,040H,049H,000H,080H,048H
- db 009H,012H,012H,004H,084H,084H,009H,001H
- db 001H,022H,004H,022H,024H,088H,000H,024H
- db 084H,000H,000H,000H,000H,000H,000H,01AH
- db 004H,000H,001H,000H,021H,000H,000H,010H
- db 012H,009H,002H,010H,004H,004H,024H,000H
- db 090H,084H,000H,000H,001H,004H,090H,092H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 000H,000H,000H,000H,000H,000H,000H,000H
- db 080H,004H,012H,041H,011H,024H,012H,004H
- db 021H,008H,042H,010H,084H,021H,008H,042H
- db 020H,080H,000H,008H,008H,042H,000H,000H
- db 000H,024H,020H,002H,008H,021H,002H,010H
- db 000H,020H,080H,040H,049H,000H,080H,048H
- db 009H,012H,012H,004H,084H,084H,009H,001H
- db 001H,022H,004H,022H,024H,088H,000H,024H
- db 084H,000H,000H,000H,000H,000H,000H
end