]> cloudbase.mooo.com Git - ddt180.git/blobdiff - ddt180.z80
Remove W option from cmds S,Q,Z; J otion from Q
[ddt180.git] / ddt180.z80
index 3ab5b88253e3c1dafa55b6605e3bea022917fe65..3a445c3b6f080106444fce47e1dd760521263965 100644 (file)
@@ -39,21 +39,11 @@ CNTRX               equ     'X'-'@'
 ; CP/M memory layout\r
 \r
 BDOS           equ     5\r
-dfcb1          equ     05ch\r
-dfcb2          equ     06ch\r
-DMA_BUF                equ     080h\r
 TPA            equ     0100h\r
 \r
 ; BDOS function calls\r
 \r
 BDOS_PSTR      equ     9       ;Print String\r
-BDOS_OPEN      equ     15      ;Open File\r
-BDOS_CLOSE     equ     16      ;Close File\r
-BDOS_DELETE    equ     19      ;Delete File\r
-BDOS_READ      equ     20      ;Read Sequential\r
-BDOS_WRITE     equ     21      ;Write Sequential\r
-BDOS_CREATE    equ     22      ;Make File\r
-BDOS_SETDMA    equ     26      ;Set DMA Address\r
 \r
 ; ddtz specific definitions\r
 \r
@@ -61,7 +51,7 @@ STACK_SIZE    equ     80      ;ddtz internal stack
 CONBUF_SIZE    equ     80      ;Size of console input buffer\r
 EXPR_BUF_SIZE  equ     128     ;expressen buffer for conditional breakpoints\r
 BP_CNT         equ     12      ;Number of breakpoints\r
-BP_SIZE                equ     6       ;Size of a breakpoint record\r
+BP_SIZE                equ     4       ;Size of a breakpoint record\r
 \r
 ;-------------------------------------------------------------------------------\r
 \r
@@ -156,20 +146,35 @@ l0093h:
        ld hl,ddtz_base\r
        ld l,000h\r
        ld (reg_sp),hl\r
-       ld a,(dfcb1+1)\r
-       cp ' '\r
-       ld hl,0\r
-       call nz,read_file\r
+\r
+       ld hl,(1)               ;wboot addr\r
+       ld de,?const\r
+       ld b,6\r
+vini_l:\r
+       inc     hl\r
+       inc     hl\r
+       inc     hl\r
+       ex      de,hl\r
+       inc     hl\r
+       ld      (hl),e\r
+       inc     hl\r
+       ld      (hl),d\r
+       inc     hl\r
+       ex      de,hl\r
+       djnz    vini_l\r
+\r
        jr mainloop\r
 \r
        ds      CONBUF_SIZE + 3 - ($ - conbuf)\r
 \r
 ;-------------------------------------------------------------------------------\r
 \r
-?const:\r
-?conin:\r
-?cono:\r
-       ret\r
+?const:        jp      0               ; return console input status\r
+?conin:        jp      0               ; return console input character\r
+?cono: jp      0               ; send console output character\r
+?list: jp      0               ; send list output character\r
+?auxo: jp      0               ; send auxiliary output character\r
+?auxi: jp      0               ; return auxiliary input character\r
 \r
 CMDTAB:\r
        dw      ERROR ;cmd_@    ;examine/substitute the displacement register @\r
@@ -178,7 +183,7 @@ CMDTAB:
        dw      ERROR ;cmd_C    ;trace over Calls\r
        dw      cmd_D           ;Display memory in hex and ascii\r
        dw      ERROR           ;\r
-       dw      cmd_F           ;specify Filename and command line\r
+       dw      ERROR ;cmd_F    ;specify Filename and command line\r
        dw      cmd_G           ;Go\r
        dw      cmd_H           ;compute Hex and other expressions\r
        dw      cmd_I           ;Input a byte from port\r
@@ -195,7 +200,7 @@ CMDTAB:
        dw      cmd_T           ;Trace\r
        dw      ERROR           ;\r
        dw      cmd_V           ;Verify (compare) two memory areas\r
-       dw      cmd_W           ;Write a file to disk\r
+       dw      ERROR ;cmd_W    ;Write a file to disk\r
        dw      cmd_X           ;eXamine [and substitute] registers\r
        dw      ERROR ;cmd_Y    ;examine [and substitute] Y variables\r
        dw      cmd_Z           ;Zap (fill) memory with a byte string\r
@@ -244,9 +249,9 @@ exe_hl:
 crlf:\r
        call    pstr_inl\r
        dc      CR,LF\r
-       call inchar\r
-       ld a,0\r
+       xor a\r
        ld (con_col),a\r
+       call inchar\r
        jr c,mainloop\r
        ret\r
 \r
@@ -393,7 +398,6 @@ pstr:
        and a\r
        ret z\r
        call outchar\r
-       and a\r
        ret m\r
        jr pstr\r
 \r
@@ -413,25 +417,9 @@ p_goto_col:
 \r
 ;-------------------------------------------------------------------------------\r
 \r
-$ci:\r
-       push    hl\r
-       push    de\r
-       push    bc\r
-       call    ?conin\r
-       pop     bc\r
-       pop     de\r
-       pop     hl\r
-       ret\r
-\r
-$co:\r
-       push    hl\r
-       push    de\r
-       push    bc\r
-       ld      c,a\r
-       call    ?cono\r
-       pop     bc\r
-       pop     de\r
-       pop     hl\r
+incharw:\r
+       call inchar\r
+       jr nc,incharw\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -467,18 +455,8 @@ DELC:
        cp      ' '\r
        ret     nc\r
 DELC1:\r
-       push    de\r
-       push    hl\r
-       push    bc\r
-       ld      c,BS\r
-       call    ?cono\r
-       ld      c,' '\r
-       call    ?cono\r
-       ld      c,BS\r
-       call    ?cono\r
-       pop     bc\r
-       pop     hl\r
-       pop     de\r
+       call    pstr_inl\r
+       dc      BS,' ',BS\r
        ret\r
 \r
 DELL:\r
@@ -501,18 +479,17 @@ inlnxtch:
        ld a,c                  ;\r
        or a                    ;\r
        jr z,inl_e              ;\r
-       call $ci                ;\r
+       call incharw            ;\r
        cp CR                   ;\r
        jr z,inl_e              ;Accept line\r
        cp LF                   ;\r
        jr z,inl_e              ;Accept line\r
+\r
        cp BS                   ;\r
-       jr nz,gl_1              ;\r
-       call DELC               ;Delete Char\r
-       jr inlnxtch             ;\r
-gl_1:\r
+       jr z,gl_1               ;\r
        cp DEL                  ;\r
        jr nz,gl_2              ;\r
+gl_1:\r
        call DELC               ;Delete Char\r
        jr inlnxtch             ;\r
 gl_2:\r
@@ -529,11 +506,11 @@ gl_4:
        cp ' '                  ;\r
        jr nc,gl_5              ;\r
        ld a,'^'                ;Controll characters\r
-       call $co                ;\r
+       call outchar            ;\r
        ld a,(hl)               ;\r
        add a,'@'               ;\r
 gl_5:\r
-       call $co                ;\r
+       call outchar            ;\r
        inc hl                  ;\r
        inc b                   ;\r
        dec c                   ;\r
@@ -544,7 +521,6 @@ inl_e:
        ld hl,conbuf+1          ;\r
        ld (hl),b               ;\r
        call CRLF               ;\r
-\r
        inc     hl\r
        ex      de,hl\r
        pop hl                  ;\r
@@ -569,17 +545,20 @@ skipbl0:
        inc de\r
 skipbl:\r
        call get_char_upper\r
-       call test_whitespace\r
+       cp ' '\r
+       jr z,skipbl0\r
+       cp TAB\r
        jr z,skipbl0\r
        or a\r
        ret\r
 \r
+;-------------------------------------------------------------------------------\r
+\r
 next_arg:\r
        call skipbl\r
        cp ','\r
        ret nz\r
-       inc de\r
-       call skipbl\r
+       call skipbl0\r
        cp a\r
        ret\r
 \r
@@ -1483,11 +1462,10 @@ bp_clr_temporary:
 ;      set breakpoints\r
 ; > BX\r
 ;      clear all breakpoints\r
-; > BX address [address..]\r
+; > BX breakp [breakp..]\r
 ;      clear breakpoints\r
 ;\r
-; where breakp is:\r
-;      expression\r
+; breakp can be any valid expression\r
 \r
 cmd_B:\r
        call skipbl\r
@@ -1571,9 +1549,6 @@ bp_enter:
        pop de\r
        ld (ix+002h),l\r
        ld (ix+003h),h\r
-       call bp_get_count\r
-       ld (ix+004h),l\r
-       ld (ix+005h),h\r
        call next_arg\r
        pop af\r
        ld (ix+000h),a\r
@@ -1591,15 +1566,6 @@ bp_get_freeslot:
 error12\r
        jp ERROR\r
 \r
-bp_get_count:\r
-       call skipbl\r
-       ld hl,1\r
-       cp ':'\r
-       ret nz\r
-       inc de\r
-       call expr\r
-       jr c,error12\r
-       ret\r
 \r
 ;-------------------------------------------------------------------------------\r
 ; Breakpoint handling routine.\r
@@ -1667,32 +1633,14 @@ sub_0913h:
        ld d,(ix+003h)\r
        ld hl,(reg.pc)\r
        call cp_hl_de\r
-       push bc\r
-       call z,sub_0942h\r
-       pop bc\r
-l0938h:\r
-\r
-       call    bpl_next\r
-       ex af,af'\r
-       ret\r
-\r
-sub_0942h:\r
+       jr nz,l0938h\r
        ex af,af'\r
        res 7,a\r
-       ex af,af'\r
-       ld e,(ix+004h)\r
-       ld d,(ix+005h)\r
-       dec de\r
-       ld a,d\r
-       or e\r
-       jr z,l0974h\r
-       ld (ix+004h),e\r
-       ld (ix+005h),d\r
-       ret\r
-l0974h:\r
-       ex af,af'\r
        or (ix+000h)\r
        ex af,af'\r
+l0938h:\r
+       call    bpl_next\r
+       ex af,af'\r
        ret\r
 \r
 bp_restore_mem:\r
@@ -1733,8 +1681,6 @@ bp_tst_e:
 \r
 bp_trace_enter:\r
        call bp_get_freeslot\r
-       ld (ix+004h),001h\r
-       ld (ix+005h),000h\r
        ld (ix+002h),l\r
        ld (ix+003h),h\r
        ld a,(b_21e2_start)\r
@@ -2160,29 +2106,17 @@ l0dedh:
        call crlf\r
 l0e10h:\r
        pop bc\r
-       inc hl\r
        inc de\r
-       dec bc\r
-       ld a,b\r
-       or c\r
-       jr nz,l0dedh\r
+       cpi\r
+       jp pe,l0dedh\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
-; > M[V] startaddr endaddr destaddr\r
-;      Move memory [and verify]\r
+; > M startaddr endaddr destaddr\r
+;      Move memory\r
 \r
 cmd_M:\r
-       call get_char_upper\r
-       cp 'V'\r
-       jr nz,l0e1fh\r
-       inc de\r
-l0e1fh:\r
-       push af\r
        call sub_034eh\r
-       push hl\r
-       push de\r
-       push bc\r
        call cp_hl_de\r
        jr nc,cmdm_up\r
        add hl,bc\r
@@ -2195,11 +2129,6 @@ l0e1fh:
        db 01h          ;swallow ldir instruction (ld bc,...)\r
 cmdm_up:\r
        ldir\r
-       pop bc\r
-       pop de\r
-       pop hl\r
-       pop af\r
-       jr z,l0dedh\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -2232,32 +2161,31 @@ cmd_H:
 ;      Query memory for a byte string [Justified]\r
 \r
 cmd_Q:\r
-       call get_char_upper\r
-       sub 'J'\r
-       ld (cmd_Q_jopt),a\r
-       jr nz,l0e8dh\r
-       inc de\r
-l0e8dh:\r
        call get_arg_range\r
        push bc\r
        push hl\r
        call sub_0ee6h\r
        pop hl\r
 l0e96h:\r
-       call sub_0ed7h\r
+       push    hl\r
+       push    de\r
+       push bc\r
+l0edah:\r
+       ld a,(de)\r
+       cp (hl)\r
+       jr nz,l0ee2h\r
+       inc de\r
+       inc hl\r
+       djnz l0edah\r
+l0ee2h:\r
+       pop bc\r
+       pop de\r
+       pop hl\r
        jr nz,l0eb0h\r
        push bc\r
-       push hl\r
-       ld a,(cmd_Q_jopt)\r
-       or a\r
-       jr nz,l0ea7h\r
-       ld bc,-8\r
-       add hl,bc\r
-l0ea7h:\r
        ld bc,16\r
-       and a\r
+       and a                   ;clear carry\r
        call sub_0f58h\r
-       pop hl\r
        pop bc\r
 l0eb0h:\r
        inc hl\r
@@ -2296,23 +2224,6 @@ l0ed3h:
        pop hl\r
        ret\r
 \r
-sub_0ed7h:\r
-       push    hl\r
-       push    de\r
-       push bc\r
-l0edah:\r
-       ld a,(de)\r
-       cp (hl)\r
-       jr nz,l0ee2h\r
-       inc de\r
-       inc hl\r
-       djnz l0edah\r
-l0ee2h:\r
-       pop bc\r
-       pop de\r
-       pop hl\r
-       ret\r
-\r
 sub_0ee6h:\r
        ld hl,conbuf+1\r
        call sub_0ef7h\r
@@ -2323,26 +2234,13 @@ sub_0ee6h:
        ret nz\r
        jp ERROR\r
 \r
-sub_0ef7h:\r
-       db      0e6h            ; and 037h (clear carry)\r
-sub_0ef8h:\r
+sub_0ef7h:                     ;from cmd_Q, cmd_Z\r
+       db      0e6h            ;and 037h (clear carry)\r
+sub_0ef8h:                     ;from cmd_S\r
        scf\r
 l0ef9h:\r
        push af\r
        call next_arg\r
-       cp 'W'\r
-       jr nz,l0f0eh\r
-       inc de\r
-       push hl\r
-       call sub_035dh\r
-       ex de,hl\r
-       ex (sp),hl\r
-       ld (hl),e\r
-       inc hl\r
-       ld a,d\r
-       pop de\r
-       jr l0f1ah\r
-l0f0eh:\r
        cp ''''\r
        jr z,l0f1eh\r
        push hl\r
@@ -2404,8 +2302,7 @@ sub_0f58h:
        push af\r
 l0f5ch:\r
        call out_hl\r
-       call z,outbl2\r
-       call outbl\r
+       call outbl2\r
        ld de,0\r
 l0f68h:\r
        ld a,(hl)\r
@@ -2462,238 +2359,62 @@ l0fach:
 ; > Fcommandline\r
 ;      specifiy filenames and command line\r
 \r
-cmd_F:\r
-       push de\r
-       ld hl,DMA_BUF+1\r
-       ld (hl),' '\r
-       inc hl\r
-l0fb6h:\r
-       call get_char_upper\r
-       ld (hl),a\r
-       inc hl\r
-       inc de\r
-       and a\r
-       jr nz,l0fb6h\r
-       ld a,l\r
-       sub DMA_BUF+2\r
-       ld (DMA_BUF),a\r
-       pop hl\r
-       ld de,dfcb1\r
-       call parse_filename\r
-       ld de,dfcb2\r
-       ;fall thru\r
-\r
-parse_filename:\r
-       call sub_102ch\r
-       push de\r
-       push bc\r
-       ld b,(hl)\r
-       inc hl\r
-       ld a,(hl)\r
-       cp ':'\r
-       jr nz,l0fe1h\r
-       inc hl\r
-       ld a,b\r
-       sub 040h\r
-       and 01fh\r
-       jr l0fe3h\r
-l0fe1h:\r
-       dec hl\r
-       xor a\r
-l0fe3h:\r
-       ld (de),a\r
-       inc de\r
-       ld b,8\r
-       call sub_0ff2h\r
-       ld b,3\r
-       call sub_0ff2h\r
-       pop bc\r
-       pop de\r
-       ret\r
-\r
-sub_0ff2h:\r
-       call sub_1012h\r
-       jr z,l0ffeh\r
-       inc hl\r
-       ld (de),a\r
-       inc de\r
-       djnz sub_0ff2h\r
-       jr l1003h\r
-l0ffeh:\r
-       ld a,c\r
-l0fffh:\r
-       ld (de),a\r
-       inc de\r
-       djnz l0fffh\r
-l1003h:\r
-       call sub_1012h\r
-       inc hl\r
-       jr nz,l1003h\r
-       cp '*'\r
-       jr z,l1003h\r
-       cp '.'\r
-       ret z\r
-       dec hl\r
-       ret\r
-\r
-sub_1012h:\r
-       ld a,(hl)\r
-       ld c,' '\r
-       and 01fh\r
-       ret z\r
-       ld a,(hl)\r
-       cp ' '\r
-       ret z\r
-       call sub_1043h\r
-       ret z\r
-       cp '/'\r
-       ret z\r
-       cp '.'\r
-       ret z\r
-       ld c,'?'\r
-       call toupper\r
-       cp '*'\r
-       ret\r
-\r
-l102bh:\r
-       inc hl\r
-sub_102ch:\r
-       ld a,(hl)\r
-       cp '/'\r
-       jr z,l103bh\r
-       call sub_1043h\r
-       jr z,l102bh\r
-l1036h:\r
-       cp ' '\r
-       jr z,l102bh\r
-       ret\r
-\r
-l103bh:\r
-       ld a,(hl)\r
-       cp ' '+1\r
-       jr c,l1036h\r
-       inc hl\r
-       jr l103bh\r
-\r
-sub_1043h:\r
-       cp '='\r
-       ret z\r
-       cp '_'\r
-       ret z\r
-       cp ','\r
-       ret\r
-\r
-;-------------------------------------------------------------------------------\r
-\r
-setup_fcb:\r
-       push de\r
-       ld hl,12\r
-       add hl,de\r
-       xor a\r
-       ld b,21\r
-l1052h:\r
-       ld (hl),a\r
-       inc hl\r
-       djnz l1052h\r
-       ld de,DMA_BUF\r
-       ld c,BDOS_SETDMA\r
-       call ddtz_bdos\r
-       pop de\r
-       ret\r
+;cmd_F:\r
 \r
 ;-------------------------------------------------------------------------------\r
+; > R [displacement]\r
+;      Read Intel Hex File from console [add displacement]\r
 \r
-file_open:\r
-       ld (cur_fcb),de\r
-       call setup_fcb\r
-       ld c,BDOS_OPEN\r
-       call ddtz_bdos\r
-       inc a\r
-       jp z,ERROR\r
-       ld a,080h\r
-       ld (cmdR_rindex),a\r
-       ret\r
-\r
-read_byte:\r
-       ld a,(cmdR_rindex)\r
-       cp 080h\r
-       jr nz,l1111h\r
-       call read_sector\r
-       ld a,01ah\r
-       ret z\r
-       sub a\r
-l1111h:\r
-       inc a\r
-       ld (cmdR_rindex),a\r
+cmd_R:\r
+       ld hl,0\r
+       call get_lastarg_def    ;get offset from command line\r
        push hl\r
-       add a,07fh\r
+       ld hl,0\r
+       ld (high_load),hl\r
+w_recstart:\r
+       call i.getchar\r
+       jr z,rdhex_done\r
+       cp ':'\r
+       jr nz,w_recstart\r
+       ld c,0                  ;init checksum\r
+       call i.gethexbyte       ;record len\r
+       ld b,a\r
+       call i.gethexbyte       ;address high\r
+       ld h,a\r
+       call i.gethexbyte       ;address low\r
        ld l,a\r
-       ld h,000h\r
-       ld a,(hl)\r
-       pop hl\r
-       cp 01ah\r
-       ret\r
-\r
-read_sector:\r
-       push hl\r
+       call i.gethexbyte       ;record type (ignored)\r
+       ld a,b\r
+       and a                   ;record len == 0?\r
+       jr z,rdhex_done\r
+l16c6h:\r
+       call i.gethexbyte\r
+       pop de                  ;offset\r
        push de\r
-       push bc\r
-       ld de,(cur_fcb)\r
-       ld c,BDOS_READ\r
-       call ddtz_bdos\r
-       sub a,1\r
-       jr z,l1132h\r
-       jr nc,error2\r
-l1132h:\r
-       pop bc\r
-       pop de\r
+       push hl\r
+       add hl,de\r
+       call i.storebyte\r
        pop hl\r
-       ret\r
-\r
-cmdR_storebyte:\r
-       push af\r
-       push de\r
-       ld de,TPA\r
-       call cp_hl_de\r
-       jr c,error2\r
-       ld de,(BDOS+1)\r
-       call cp_hl_de\r
-       jr nc,error2\r
-       ld de,(high_load)\r
-       call cp_hl_de\r
-       jr c,l1157h\r
-       ld (high_load),hl\r
-l1157h:\r
-       ld de,(max_load)\r
-       call cp_hl_de\r
-       jr c,l1163h\r
-       ld (max_load),hl\r
-l1163h:\r
-       pop de\r
-       pop af\r
-       ld (hl),a\r
-       ret\r
-\r
-strncmp:\r
-       ld a,(de)\r
-       cp (hl)\r
-       inc de\r
        inc hl\r
-       ret nz\r
-       djnz strncmp\r
-       ret\r
-\r
-str_hex:\r
-       db      'HEX'\r
+       djnz l16c6h             ;repeat for record len\r
+       call i.gethexbyte       ;checksum\r
+       ld a,c\r
+       and a\r
+       jp nz,ERROR             ;exit if checksum error\r
+       jr w_recstart           ;next record\r
+rdhex_done:\r
+       pop hl\r
+       call i.gethexbyte\r
+       jp p_max_high\r
 \r
-read_hexchar:\r
-       call read_hexdigit\r
+i.gethexbyte:\r
+       call sub_16f6h\r
        rlca\r
        rlca\r
        rlca\r
        rlca\r
        ld d,a\r
-       call read_hexdigit\r
+       call sub_16f6h\r
        add a,d\r
        ld d,a\r
        add a,c\r
@@ -2701,95 +2422,41 @@ read_hexchar:
        ld a,d\r
        ret\r
 \r
-read_hexdigit:\r
-       call read_byte\r
+sub_16f6h:\r
+       call i.getchar\r
        jr z,error2\r
-hex_digit_v:\r
        call hex_digit\r
        ret nc\r
 error2:\r
        jp ERROR\r
 \r
-;-------------------------------------------------------------------------------\r
-; > R [displacement]\r
-;      Read a binary or hex file  [add displacement]\r
+i.getchar:\r
+       call incharw\r
+       cp 01ah\r
+       ret\r
 \r
-cmd_R:\r
-       ld hl,0\r
-       call get_lastarg_def\r
-read_file:\r
-       ld de,dfcb1\r
-       push hl\r
-       ld hl,0\r
+i.storebyte:\r
+       push af\r
+       push de\r
+       ld de,TPA               ;lowest allowed load address\r
+       call cp_hl_de\r
+       jr c,error2\r
+       ld de,(BDOS+1)          ;highest allowed load address\r
+       call cp_hl_de\r
+       jr nc,error2\r
+       ld de,(high_load)\r
+       call cp_hl_de\r
+       jr c,l1157h\r
        ld (high_load),hl\r
-       call file_open\r
-       ld hl,dfcb1+9\r
-       ld de,str_hex\r
-       ld b,3\r
-       call strncmp\r
-       pop hl\r
-       jr z,read_hexfile\r
-       ld de,TPA\r
-       push hl\r
-       add hl,de\r
-l108eh:\r
-       call read_sector\r
-       jr nz,read_file_nxt\r
-       pop hl\r
-       jp p_max_high\r
-\r
-read_file_nxt:\r
-       ld de,DMA_BUF\r
-       ld b,080h\r
-l109ah:\r
-       ld a,(de)\r
-       call cmdR_storebyte\r
-       inc de\r
-       inc hl\r
-       djnz l109ah\r
-       jr l108eh\r
-\r
-read_hexfile:\r
-       push hl\r
-l10aeh:\r
-       call read_byte          ; RECORD MARK\r
-       jr z,rdhex_done\r
-       cp ':'\r
-       jr nz,l10aeh\r
-       ld c,0\r
-       call read_hexchar       ; RECLEN\r
-       ld b,a\r
-       call read_hexchar       ; LOAD ADDR H\r
-       ld h,a\r
-       call read_hexchar       ; LOAD ADDR L\r
-       ld l,a\r
-       ld a,b\r
-       and a\r
-       jr z,rdhex_done\r
-       call read_hexchar       ; RECTYP\r
-l10cch:\r
-       call read_hexchar       ; DATA\r
+l1157h:\r
+       ld de,(max_load)\r
+       call cp_hl_de\r
+       jr c,l1163h\r
+       ld (max_load),hl\r
+l1163h:\r
        pop de\r
-       push de\r
-       push hl\r
-       add hl,de\r
-       call cmdR_storebyte\r
-       pop hl\r
-       inc hl\r
-       djnz l10cch\r
-       call read_hexchar       ; CHKSUM\r
-       ld a,c\r
-       and a\r
-       jp nz,ERROR\r
-       jr l10aeh\r
-rdhex_done:\r
-       pop hl\r
-       jp p_max_high\r
-\r
-test_whitespace:\r
-       cp      ' '\r
-       ret     z\r
-       cp      TAB\r
+       pop af\r
+       ld (hl),a               ;store byte\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -2815,66 +2482,7 @@ p_max_high:
 ; > Wstartaddr endaddr\r
 ;      Write a file to disk\r
 \r
-cmd_W:\r
-       call get_arg_range\r
-       call assert_eol\r
-       push hl\r
-       ld a,c\r
-       add a,07fh\r
-       jr nc,l11adh\r
-       inc b\r
-l11adh:\r
-       and 080h\r
-       ld c,a\r
-       push bc\r
-       ld a,(dfcb1+1)\r
-       cp ' '\r
-       jr z,error4\r
-       ld de,dfcb1\r
-       call setup_fcb\r
-       push de\r
-       ld c,BDOS_DELETE\r
-       call ddtz_bdos\r
-       pop de\r
-       ld c,BDOS_CREATE\r
-       call ddtz_bdos\r
-       inc a\r
-       jr z,error4\r
-       pop bc\r
-       pop hl\r
-l11cch:\r
-       ld a,b\r
-       or c\r
-       jr z,close_file\r
-       push bc\r
-       ld de,080h              ; DMA_BUF\r
-       ld b,d\r
-       ld c,e\r
-       ldir\r
-       call write_sector\r
-       ex (sp),hl\r
-       ld bc,0ff80h\r
-       add hl,bc\r
-       ex (sp),hl\r
-       pop bc\r
-       jr l11cch\r
-\r
-write_sector:\r
-       push hl\r
-       ld de,dfcb1\r
-       ld c,BDOS_WRITE\r
-       call ddtz_bdos\r
-       pop hl\r
-       and a\r
-       ret z\r
-       call close_file\r
-error4:\r
-       jp ERROR\r
-\r
-close_file:\r
-       ld de,dfcb1\r
-       ld c,BDOS_CLOSE\r
-       jp ddtz_bdos\r
+;cmd_W:\r
 \r
 ;-------------------------------------------------------------------------------\r
 ; > A [startaddr]\r
@@ -3956,7 +3564,7 @@ tc_set_bp:
        ld de,BDOS\r
        and a\r
        sbc hl,de\r
-       ld hl,l20edh\r
+       ld hl,l20edh            ;set break after BDOS call\r
        jr z,l2031h\r
        ld iy,(reg.pc)\r
        call disas_get_instrlen\r
@@ -4087,7 +3695,7 @@ l20d7h:
 \r
 l20dch:\r
 l20edh:\r
-       ld hl,(reg_sp)\r
+       ld hl,(reg_sp)          ;break on return address\r
        ld e,(hl)\r
        inc hl\r
        ld d,(hl)\r
@@ -4271,15 +3879,9 @@ last_O_addr:
 last_O_val:\r
        db      0\r
 \r
-cmd_Q_jopt:\r
-       db      -1\r
-\r
 last_D:\r
        dw      TPA\r
 \r
-cmdR_rindex:\r
-       db      0\r
-\r
 high_load:\r
        dw      TPA\r
 max_load:\r
@@ -4297,9 +3899,6 @@ disas_argtype:
 pbl_loop_adr:\r
        dw      0\r
 \r
-cur_fcb:\r
-       dw      0\r
-\r
 ddtz_size      equ     $-ddtz_base\r
 ddtz_end:\r
 \r