summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2016-08-10 16:47:42 +0200
committerLeo C2016-08-10 16:47:42 +0200
commitc788b3b79519c9f97c29c8c86f96708eef59a63c (patch)
tree8908f739b63b97632dea50c6f536c08f74515528
parent9bed91b315cf7a768074ab3eb525594bb3649447 (diff)
downloadddt180-c788b3b79519c9f97c29c8c86f96708eef59a63c.zip
Add symfile read function.
-rw-r--r--ddt180.z80534
1 files changed, 336 insertions, 198 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index ec59e03..24e2dcc 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -36,8 +36,8 @@ CR equ 13
; CP/M memory layout
BDOS equ 5
-FCB equ 05ch
-FCB2 equ 06ch
+dfcb1 equ 05ch
+dfcb2 equ 06ch
DMA_BUF equ 080h
TPA equ 0100h
@@ -68,12 +68,14 @@ YREG_CNT equ 10 ;Number of Y registers (0..9)
;-------------------------------------------------------------------------------
ddtz_base:
- jp 0 ;0000 c3 00 00 . . .
+ jp ddtz_bdos
l0003h:
- rst 30h ;0003 f7 .
+ rst 30h
sub_0004h:
- nop ;0004 00 .
- ret ;0005 c9 .
+ nop
+ ret
+ddtz_bdos:
+ jp 0
current_cseg defl $ - current_cseg
.phase current_phase + current_cseg
@@ -124,42 +126,43 @@ cmd_rpt:dw mainloop
conbuf:
db CONBUF_SIZE
- ld sp,stack ;006b 31 46 00 1 F .
- exx ;006e d9 .
- ld de,ddtz_base ;006f 11 00 00 . . .
- or a ;0072 b7 .
- sbc hl,de ;0073 ed 52 . R
- add hl,de ;0075 19 .
- jr c,l0079h ;0076 38 01 8 .
- ex de,hl ;0078 eb .
+ ld sp,stack
+ exx
+ ld de,ddtz_base
+ or a
+ sbc hl,de
+ add hl,de
+ jr c,l0079h
+ ex de,hl
l0079h:
- ld de,TPA ;0079 11 00 01 . . .
+ ld de,TPA
l007ch:
- dec hl ;007c 2b +
- ld (hl),000h ;007d 36 00 6 .
- ld a,h ;007f 7c |
- sub d ;0080 92 .
- ld b,a ;0081 47 G
- ld a,l ;0082 7d }
- sub e ;0083 93 .
- or b ;0084 b0 .
- jr nz,l007ch ;0085 20 f5 .
- ld a,i ;0087 ed 57 . W
- ld (reg.i),a ;0089 32 4f 00 2 O .
- ld a,0f3h ;008c 3e f3 > .
- jp po,l0093h ;008e e2 93 00 . . .
- ld a,0fbh ;0091 3e fb > .
+ dec hl
+ ld (hl),000h
+ ld a,h
+ sub d
+ ld b,a
+ ld a,l
+ sub e
+ or b
+ jr nz,l007ch
+ ld a,i
+ ld (reg.i),a
+ ld a,0f3h
+ jp po,l0093h
+ ld a,0fbh
l0093h:
- ld (reg.iff),a ;0093 32 5e 00 2 ^ .
- call sub_0004h ;0096 cd 04 00 . . .
- ld hl,ddtz_base ;0099 21 00 00 ! . .
- ld l,000h ;009c 2e 00 . .
- ld (reg_sp),hl ;009e 22 5c 00 " \ .
- ld a,(FCB+1) ;00a1 3a 5d 00 : ] .
- cp ' ' ;00a4 fe 20 .
- ld hl,0 ;00a6 21 00 00 ! . .
- call nz,read_file ;00a9 c4 68 10 . h .
- jr mainloop ;00ac 18 0f . .
+ ld (reg.iff),a
+ call sub_0004h
+ ld hl,ddtz_base
+ ld l,000h
+ ld (reg_sp),hl
+ call cpy_fcb2
+ ld a,(dfcb1+1)
+ cp ' '
+ ld hl,0
+ call nz,read_file
+ jr mainloop
ds CONBUF_SIZE + 3 - ($ - conbuf)
@@ -238,7 +241,7 @@ get_line:
push hl ;014e e5 .
ld de,conbuf ;014f 11 6a 00 . j .
ld c,BDOS_CBUF ;0152 0e 0a . .
- call ddtz_base ;0154 cd 00 00 . . .
+ call ddtz_bdos ;0154 cd 00 00 . . .
call crlf ;0157 cd a3 02 . . .
ld de,conbuf+1 ;015a 11 6b 00 . k .
ld a,(de) ;015d 1a .
@@ -437,7 +440,7 @@ outchar:
and 07fh ;0261 e6 7f . 
ld e,a ;0263 5f _
ld c,BDOS_COUT ;0264 0e 02 . .
- call ddtz_base ;0266 cd 00 00 . . .
+ call ddtz_bdos ;0266 cd 00 00 . . .
ld hl,con_col ;0269 21 72 02 ! r .
inc (hl) ;026c 34 4
pop af ;026d f1 .
@@ -451,11 +454,11 @@ inchar:
push de ;0274 d5 .
push bc ;0275 c5 .
ld c,BDOS_CSTAT ;0276 0e 0b . .
- call ddtz_base ;0278 cd 00 00 . . .
+ call ddtz_bdos ;0278 cd 00 00 . . .
and a ;027b a7 .
jr z,l0284h ;027c 28 06 ( .
ld c,BDOS_CIN ;027e 0e 01 . .
- call ddtz_base ;0280 cd 00 00 . . .
+ call ddtz_bdos ;0280 cd 00 00 . . .
scf ;0283 37 7
l0284h:
pop bc ;0284 c1 .
@@ -985,7 +988,7 @@ do_factor:
call get.number ;04e7 cd aa 05 . . .
ret nc ;04ea d0 .
inc de ;04eb 13 .
- ld hl,ddtz_base-1 ;04ec 21 ff ff ! . .
+ ld hl,(BDOS+1) ;04ec 21 ff ff ! . .
cp 'T' ;04ef fe 54 . T
ret z ;04f1 c8 .
ld hl,(high_load) ;04f2 2a 9c 11 * . .
@@ -1197,33 +1200,33 @@ sub_060ch:
jr l0614h ;060f 18 03 . .
get.hexdigit:
- ld a,(de) ;0611 1a .
+ ld a,(de)
hex_digit:
- cp 'F'+1 ;0612 fe 47 . G
+ cp 'F'+1
l0614h:
- ccf ;0614 3f ?
- ret c ;0615 d8 .
- cp 'A' ;0616 fe 41 . A
- jr c,l061eh ;0618 38 04 8 .
- sub 'A'-10 ;061a d6 37 . 7
- ret ;061c c9 .
+ ccf
+ ret c
+ cp 'A'
+ jr c,l061eh
+ sub 'A'-10
+ ret
get.decdigit:
- ld a,(de) ;061d 1a .
+ ld a,(de)
l061eh:
- cp '9'+1 ;061e fe 3a . :
- jr l0625h ;0620 18 03 . .
+ cp '9'+1
+ jr l0625h
get.bindigit:
- ld a,(de) ;0622 1a .
- cp '1'+1 ;0623 fe 32 . 2
+ ld a,(de)
+ cp '1'+1
l0625h:
- ccf ;0625 3f ?
- ret c ;0626 d8 .
- cp '0' ;0627 fe 30 . 0
- ret c ;0629 d8 .
- sub '0' ;062a d6 30 . 0
- ret ;062c c9 .
+ ccf
+ ret c
+ cp '0'
+ ret c
+ sub '0'
+ ret
p_cpustat0:
call assert_eol ;062d cd d6 02 . . .
@@ -2523,24 +2526,33 @@ l0fach:
ret ;0fae c9 .
cmd_F:
- push de ;0faf d5 .
- ld hl,DMA_BUF+1 ;0fb0 21 81 00 ! . .
- ld (hl),' ' ;0fb3 36 20 6
- inc hl ;0fb5 23 #
+ push de
+ ld hl,DMA_BUF+1
+ ld (hl),' '
+ inc hl
l0fb6h:
- ld a,(de) ;0fb6 1a .
- ld (hl),a ;0fb7 77 w
- inc hl ;0fb8 23 #
- inc de ;0fb9 13 .
- and a ;0fba a7 .
- jr nz,l0fb6h ;0fbb 20 f9 .
- ld a,l ;0fbd 7d }
- sub DMA_BUF+2 ;0fbe d6 82 . .
- ld (DMA_BUF),a ;0fc0 32 80 00 2 . .
- pop hl ;0fc3 e1 .
- ld de,FCB ;0fc4 11 5c 00 . \ .
- call parse_filename ;0fc7 cd cd 0f . . .
- ld de,FCB2 ;0fca 11 6c 00 . l .
+ ld a,(de)
+ ld (hl),a
+ inc hl
+ inc de
+ and a
+ jr nz,l0fb6h
+ ld a,l
+ sub DMA_BUF+2
+ ld (DMA_BUF),a
+ pop hl
+ ld de,dfcb1
+ call parse_filename
+ ld de,dfcb2
+ call parse_filename
+ ;fall thru
+
+cpy_fcb2:
+ ld hl,dfcb2
+ ld de,fcbsym
+ ld bc,16
+ ldir
+ ret
parse_filename:
call sub_102ch ;0fcd cd 2c 10 . , .
@@ -2641,120 +2653,32 @@ sub_1043h:
cp ',' ;1049 fe 2c . ,
ret ;104b c9 .
-fcb_clear_rc:
- xor a ;104c af .
- ld hl,FCB+12 ;104d 21 68 00 ! h .
- ld b,21 ;1050 06 15 . .
+setup_fcb:
+ push de
+ ld hl,12
+ add hl,de
+ xor a
+ ld b,21
l1052h:
- ld (hl),a ;1052 77 w
- inc hl ;1053 23 #
- djnz l1052h ;1054 10 fc . .
- ld de,DMA_BUF ;1056 11 80 00 . . .
- ld c,BDOS_SETDMA ;1059 0e 1a . .
- call ddtz_base ;105b cd 00 00 . . .
- ld de,FCB ;105e 11 5c 00 . \ .
- ret ;1061 c9 .
+ ld (hl),a
+ inc hl
+ djnz l1052h
+ ld de,DMA_BUF
+ ld c,BDOS_SETDMA
+ call ddtz_bdos
+ pop de
+ ret
-cmd_R:
- ld hl,0 ;1062 21 00 00 ! . .
- call get_lastarg_def ;1065 cd 69 03 . i .
-read_file:
- push hl ;1068 e5 .
- ld hl,0 ;1069 21 00 00 ! . .
- ld (high_load),hl ;106c 22 9c 11 " . .
- call fcb_clear_rc ;106f cd 4c 10 . L .
+file_open:
+ ld (cur_fcb),de
+ call setup_fcb ;106f cd 4c 10 . L .
ld c,BDOS_OPEN ;1072 0e 0f . .
- call ddtz_base ;1074 cd 00 00 . . .
+ call ddtz_bdos ;1074 cd 00 00 . . .
inc a ;1077 3c <
jp z,ERROR ;1078 ca 07 01 . . .
- ld hl,FCB+9 ;107b 21 65 00 ! e .
- ld de,str_hex ;107e 11 a5 10 . . .
- ld b,3 ;1081 06 03 . .
- call strncmp ;1083 cd 67 11 . g .
- pop hl ;1086 e1 .
- jr z,read_hexfile ;1087 28 1f ( .
- ld de,TPA ;1089 11 00 01 . . .
- add hl,de ;108c 19 .
- push hl ;108d e5 .
-l108eh:
- call read_sector ;108e cd 21 11 . ! .
- pop hl ;1091 e1 .
- jp z,p_max_high ;1092 ca 72 11 . r .
- ld de,DMA_BUF ;1095 11 80 00 . . .
- ld b,080h ;1098 06 80 . .
-l109ah:
- ld a,(de) ;109a 1a .
- call cmdR_storebyte ;109b cd 36 11 . 6 .
- inc de ;109e 13 .
- inc hl ;109f 23 #
- djnz l109ah ;10a0 10 f8 . .
- push hl ;10a2 e5 .
- jr l108eh ;10a3 18 e9 . .
-
-str_hex:
- db 'HEX' ;10a5 48 H E X
-
-read_hexfile:
- push hl ;10a8 e5 .
ld a,080h ;10a9 3e 80 > .
ld (cmdR_rindex),a ;10ab 32 20 11 2 .
-l10aeh:
- call read_byte ;10ae cd 05 11 . . .
- jr z,rdhex_done ;10b1 28 31 ( 1
- cp ':' ;10b3 fe 3a . :
- jr nz,l10aeh ;10b5 20 f7 .
- ld c,0 ;10b7 0e 00 . .
- call read_hexchar ;10b9 cd e8 10 . . .
- ld b,a ;10bc 47 G
- call read_hexchar ;10bd cd e8 10 . . .
- ld h,a ;10c0 67 g
- call read_hexchar ;10c1 cd e8 10 . . .
- ld l,a ;10c4 6f o
- ld a,b ;10c5 78 x
- and a ;10c6 a7 .
- jr z,rdhex_done ;10c7 28 1b ( .
- call read_hexchar ;10c9 cd e8 10 . . .
-l10cch:
- call read_hexchar ;10cc cd e8 10 . . .
- pop de ;10cf d1 .
- push de ;10d0 d5 .
- push hl ;10d1 e5 .
- add hl,de ;10d2 19 .
- call cmdR_storebyte ;10d3 cd 36 11 . 6 .
- pop hl ;10d6 e1 .
- inc hl ;10d7 23 #
- djnz l10cch ;10d8 10 f2 . .
- call read_hexchar ;10da cd e8 10 . . .
- ld a,c ;10dd 79 y
- and a ;10de a7 .
- jp nz,ERROR ;10df c2 07 01 . . .
- jr l10aeh ;10e2 18 ca . .
-rdhex_done:
- pop hl ;10e4 e1 .
- jp p_max_high ;10e5 c3 72 11 . r .
-
-read_hexchar:
- call read_hexdigit ;10e8 cd f9 10 . . .
- rlca ;10eb 07 .
- rlca ;10ec 07 .
- rlca ;10ed 07 .
- rlca ;10ee 07 .
- ld d,a ;10ef 57 W
- call read_hexdigit ;10f0 cd f9 10 . . .
- add a,d ;10f3 82 .
- ld d,a ;10f4 57 W
- add a,c ;10f5 81 .
- ld c,a ;10f6 4f O
- ld a,d ;10f7 7a z
- ret ;10f8 c9 .
-
-read_hexdigit:
- call read_byte ;10f9 cd 05 11 . . .
- jr z,l1102h ;10fc 28 04 ( .
- call hex_digit ;10fe cd 12 06 . . .
- ret nc ;1101 d0 .
-l1102h:
- jp ERROR ;1102 c3 07 01 . . .
+ ret
read_byte:
ld a,(cmdR_rindex) ;1105 3a 20 11 : .
@@ -2779,9 +2703,9 @@ read_sector:
push hl ;1121 e5 .
push de ;1122 d5 .
push bc ;1123 c5 .
- ld de,FCB ;1124 11 5c 00 . \ .
+ ld de,(cur_fcb) ;1124 11 5c 00 . \ .
ld c,BDOS_READ ;1127 0e 14 . .
- call ddtz_base ;1129 cd 00 00 . . .
+ call ddtz_bdos ;1129 cd 00 00 . . .
dec a ;112c 3d =
jr z,l1132h ;112d 28 03 ( .
jp p,ERROR ;112f f2 07 01 . . .
@@ -2824,6 +2748,212 @@ strncmp:
djnz strncmp ;116c 10 f9 . .
ret ;116e c9 .
+str_hex:
+ db 'HEX'
+
+read_hexchar:
+ call read_hexdigit
+ rlca
+ rlca
+ rlca
+ rlca
+ ld d,a
+ call read_hexdigit
+ add a,d
+ ld d,a
+ add a,c
+ ld c,a
+ ld a,d
+ ret
+
+read_hexdigit:
+ call read_byte
+ jr z,error8
+hex_digit_v:
+ call hex_digit
+ ret nc
+error8:
+ jp ERROR
+
+read_hexbyte:
+ call read_byte
+read_hexbyte0:
+ push bc
+ call hex_digit_v
+ rlca
+ rlca
+ rlca
+ rlca
+ ld c,a
+ call read_byte
+ call hex_digit_v
+ or c
+ pop bc
+ ret
+
+cmd_R:
+ ld hl,0 ;1062 21 00 00 ! . .
+ call get_lastarg_def ;1065 cd 69 03 . i .
+read_file:
+ ld de,dfcb1+1
+ ld a,(de)
+ cp '?'
+ jr z,read_symfile
+ dec de
+ push hl ;1068 e5 .
+ ld hl,0 ;1069 21 00 00 ! . .
+ ld (high_load),hl ;106c 22 9c 11 " . .
+ call file_open
+ ld hl,dfcb1+9 ;107b 21 65 00 ! e .
+ ld de,str_hex ;107e 11 a5 10 . . .
+ ld b,3 ;1081 06 03 . .
+ call strncmp ;1083 cd 67 11 . g .
+ pop hl ;1086 e1 .
+ jr z,read_hexfile ;1087 28 1f ( .
+ ld de,TPA ;1089 11 00 01 . . .
+ add hl,de ;108c 19 .
+ push hl ;108d e5 .
+l108eh:
+ call read_sector ;108e cd 21 11 . ! .
+ pop hl ;1091 e1 .
+ jr z,read_symfile ;1092 ca 72 11 . r .
+ ld de,DMA_BUF ;1095 11 80 00 . . .
+ ld b,080h ;1098 06 80 . .
+l109ah:
+ ld a,(de) ;109a 1a .
+ call cmdR_storebyte ;109b cd 36 11 . 6 .
+ inc de ;109e 13 .
+ inc hl ;109f 23 #
+ djnz l109ah ;10a0 10 f8 . .
+ push hl ;10a2 e5 .
+ jr l108eh ;10a3 18 e9 . .
+
+read_hexfile:
+ push hl ;10a8 e5 .
+l10aeh:
+ call read_byte ;10ae cd 05 11 . . .
+ jr z,rdhex_done ;10b1 28 31 ( 1
+ cp ':' ;10b3 fe 3a . :
+ jr nz,l10aeh ;10b5 20 f7 .
+ ld c,0 ;10b7 0e 00 . .
+ call read_hexchar ;10b9 cd e8 10 . . .
+ ld b,a ;10bc 47 G
+ call read_hexchar ;10bd cd e8 10 . . .
+ ld h,a ;10c0 67 g
+ call read_hexchar ;10c1 cd e8 10 . . .
+ ld l,a ;10c4 6f o
+ ld a,b ;10c5 78 x
+ and a ;10c6 a7 .
+ jr z,rdhex_done ;10c7 28 1b ( .
+ call read_hexchar ;10c9 cd e8 10 . . .
+l10cch:
+ call read_hexchar ;10cc cd e8 10 . . .
+ pop de ;10cf d1 .
+ push de ;10d0 d5 .
+ push hl ;10d1 e5 .
+ add hl,de ;10d2 19 .
+ call cmdR_storebyte ;10d3 cd 36 11 . 6 .
+ pop hl ;10d6 e1 .
+ inc hl ;10d7 23 #
+ djnz l10cch ;10d8 10 f2 . .
+ call read_hexchar ;10da cd e8 10 . . .
+ ld a,c ;10dd 79 y
+ and a ;10de a7 .
+ jr nz,error9 ;10df c2 07 01 . . .
+ jr l10aeh ;10e2 18 ca . .
+rdhex_done:
+ pop hl ;10e4 e1 .
+ jr read_symfile ;10e5 c3 72 11 . r .
+
+read_symfile:
+ ld de,fcbsym+1
+ ld a,(de)
+ cp ' '
+ jp z,p_max_high
+
+ ld hl,msg_symbols
+ call pstr
+
+ dec de
+ call file_open
+;------------------------------------------------------------------------
+rs_1:
+ call read_byte
+rs_2:
+ cp 1ah
+ jr z,p_max_high
+ cp '!'
+ jr c,rs_1
+ call read_hexbyte0
+ ld d,a
+ call read_hexbyte ; symval
+ ld e,a
+ push de ; symval
+ call read_byte
+ cp ' '
+ jr z,rs_4
+ pop hl ; discard symval
+rs_3: call read_byte
+ cp ' '
+ jr c,rs_2
+ jr rs_3
+;
+rs_4: ld hl,(BDOS+1) ;
+ ld e,0 ; setup symlen
+rs_5: dec hl ;
+ call read_byte ;
+ cp TAB ;
+ jr z,rs_6 ;
+ cp CR ;
+ jr z,rs_6 ;
+ cp '!' ;
+ jr c,error9 ;
+ ld (hl),a ;
+ inc e ; symlen++
+ ld a,e ;
+ cp 10h+1 ;
+ jr c,rs_5 ;
+error9:
+ jp ERROR ;
+;
+rs_6: push de ; symlen
+ push hl ;
+ ex de,hl ;
+ ld hl,(BDOS+1) ;
+ inc hl ;
+ ld e,(hl) ;
+ inc hl ;
+ ld d,(hl) ;
+ pop hl ;
+ ld (hl),d ;
+ dec hl ;
+ ld (hl),e ;
+ dec hl ;
+ ld (hl),0c3h ;
+
+ ld de,(max_load) ;
+ call cp_hl_de ;
+ jr c,error9 ;
+
+ ld de,(reg_sp) ;
+ call cp_hl_de ;
+ jr nc,rs_61 ;
+ ld (reg_sp),hl ;
+rs_61:
+
+ ld de,(BDOS+1) ;
+ ld (BDOS+1),hl ;
+ ex de,hl ;
+ pop de ;
+ ld (hl),e ; symlen
+ inc hl ;
+ pop de ; symval
+ ld (hl),e ;
+ inc hl ;
+ ld (hl),d ;
+ jp rs_1 ;
+;------------------------------------------------------------------------
+
p_max_high0:
call assert_eol ;116f cd d6 02 . . .
p_max_high:
@@ -2837,6 +2967,8 @@ p_max_high:
call out_hl ;1187 cd 13 02 . . .
jp crlf ;118a c3 a3 02 . . .
+msg_symbols:
+ db 'SYMBOLS',CR,LF+80h
msg_high:
DC 'High = '
msg_max:
@@ -2854,16 +2986,17 @@ l11adh:
and 080h ;11ad e6 80 . .
ld c,a ;11af 4f O
push bc ;11b0 c5 .
- ld a,(FCB+1) ;11b1 3a 5d 00 : ] .
+ ld a,(dfcb1+1) ;11b1 3a 5d 00 : ] .
cp ' ' ;11b4 fe 20 .
jr z,error5 ;11b6 28 3b ( ;
- call fcb_clear_rc ;11b8 cd 4c 10 . L .
+ ld de,dfcb1
+ call setup_fcb ;11b8 cd 4c 10 . L .
push de ;11bb d5 .
ld c,BDOS_DELETE ;11bc 0e 13 . .
- call ddtz_base ;11be cd 00 00 . . .
+ call ddtz_bdos ;11be cd 00 00 . . .
pop de ;11c1 d1 .
ld c,BDOS_CREATE ;11c2 0e 16 . .
- call ddtz_base ;11c4 cd 00 00 . . .
+ call ddtz_bdos ;11c4 cd 00 00 . . .
inc a ;11c7 3c <
jr z,error5 ;11c8 28 29 ( )
pop bc ;11ca c1 .
@@ -2887,9 +3020,9 @@ l11cch:
write_sector:
push hl ;11e4 e5 .
- ld de,FCB ;11e5 11 5c 00 . \ .
+ ld de,dfcb1 ;11e5 11 5c 00 . \ .
ld c,BDOS_WRITE ;11e8 0e 15 . .
- call ddtz_base ;11ea cd 00 00 . . .
+ call ddtz_bdos ;11ea cd 00 00 . . .
pop hl ;11ed e1 .
and a ;11ee a7 .
ret z ;11ef c8 .
@@ -2898,9 +3031,9 @@ error5:
jp ERROR ;11f3 c3 07 01 . . .
close_file:
- ld de,FCB ;11f6 11 5c 00 . \ .
+ ld de,dfcb1 ;11f6 11 5c 00 . \ .
ld c,BDOS_CLOSE ;11f9 0e 10 . .
- jp ddtz_base ;11fb c3 00 00 . . .
+ jp ddtz_bdos ;11fb c3 00 00 . . .
cmd_A:
ld hl,(last_A) ;11fe 2a 64 12 * d .
@@ -5468,7 +5601,7 @@ reloc:
EXX
LD HL,(BDOS+1)
- LD (ldr_end+1),HL
+ LD (ldr_end+(ddtz_bdos+1-ddtz_base)),HL
LD BC,ddtz_size-1
LD D,B
LD E,0FFH
@@ -5580,6 +5713,11 @@ l1ffbh:
l1ffdh:
db 0
+cur_fcb:
+ dw 0
+fcbsym:
+ ds 33
+
ddtz_size equ $-ddtz_base
ddtz_end: