]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - z180/ddtz.180
Integrate changes from z80-support branch
[z180-stamp.git] / z180 / ddtz.180
index e544b08650a41de71727d27196b6ca4ddd4c6761..5f8bf20bfb969e87cd1b33262366aa2e9bb827b9 100644 (file)
@@ -2,14 +2,18 @@
        .z80\r
 \r
        extrn   ?const,?conin,?cono\r
+       extrn   getiff\r
+       extrn   selbnk,@cbnk\r
 \r
        global  ddtz,bpent\r
        global  $stack\r
 \r
 \r
        include config.inc\r
+       if CPU_Z180\r
        include z180reg.inc\r
        include z180.lib\r
+       endif\r
 \r
 BS     equ     08h\r
 TAB    equ     09h\r
@@ -51,10 +55,6 @@ comend       macro
        endif\r
        endm\r
 \r
-; repeat execution of last common code snippet\r
-comrep macro\r
-       call    ?exclst\r
-       endm\r
 \r
 \r
 \r
@@ -97,7 +97,7 @@ ddtz:
        ld      sp,$stack\r
        ld      a,(wstrtflg)            ;check warm start flag\r
        or      a\r
-       jr      nz,ddtz_w\r
+;;;    jr      nz,ddtz_w\r
 \r
        exx\r
        ld      hl,sysramc\r
@@ -105,14 +105,12 @@ ddtz:
        ld      bc,topcodend-topcodbeg\r
        ldir\r
 \r
-       ld      hl,vartab\r
-       ld      de,ddtram\r
-       ld      bc,vartabe-vartab\r
-       ldir\r
        exx\r
 \r
+       if CPU_Z180\r
        ld      a,e\r
        ld      (ubbr),a\r
+       endif\r
 \r
 ddtz_w:\r
        ld hl,MSG               ;073c\r
@@ -251,179 +249,179 @@ DELC1:
        ret\r
 \r
 DELL:\r
-       ld a,b                  ;081b\r
-       or a                    ;081c\r
-       ret z                   ;081d\r
-       call DELC               ;081e\r
-       jr DELL                 ;0821\r
+       ld a,b                  ;\r
+       or a                    ;\r
+       ret z                   ;\r
+       call DELC               ;\r
+       jr DELL                 ;\r
 \r
 INLINE:\r
-       push hl                 ;0823\r
-       ld hl,CI.BUF            ;0824\r
-       ld c,(hl)               ;0827\r
-       inc hl                  ;0828\r
-       ld b,000h               ;0829\r
-       inc hl                  ;082b\r
+       push hl                 ;\r
+       ld hl,CI.BUF            ;\r
+       ld c,(hl)               ;\r
+       inc hl                  ;\r
+       ld b,000h               ;\r
+       inc hl                  ;\r
 inlnxtch:\r
-       ld a,c                  ;082c\r
-       or a                    ;082d\r
-       jr z,inl_e              ;082e\r
-       call $ci                ;0830\r
-       cp CR                   ;0833\r
-       jr z,inl_e              ;0835\r
-       cp LF                   ;0837\r
-       jr z,inl_e              ;0839\r
-       cp BS                   ;083b\r
-       jr nz,l0844h            ;083d\r
-       call DELC               ;083f\r
-       jr inlnxtch             ;0842\r
+       ld a,c                  ;\r
+       or a                    ;\r
+       jr z,inl_e              ;\r
+       call $ci                ;\r
+       cp CR                   ;\r
+       jr z,inl_e              ;Accept line\r
+       cp LF                   ;\r
+       jr z,inl_e              ;Accept line\r
+       cp BS                   ;\r
+       jr nz,l0844h            ;\r
+       call DELC               ;Delete Char\r
+       jr inlnxtch             ;\r
 l0844h:\r
-       cp DEL                  ;0844\r
-       jr nz,l084dh            ;0846\r
-       call DELC               ;0848\r
-       jr inlnxtch             ;084b\r
+       cp DEL                  ;\r
+       jr nz,l084dh            ;\r
+       call DELC               ;Delete Char\r
+       jr inlnxtch             ;\r
 l084dh:\r
-       cp CNTRX                ;084d\r
-       jr nz,l0856h            ;084f\r
-       call DELL               ;0851\r
-       jr inlnxtch             ;0854\r
+       cp CNTRX                ;\r
+       jr nz,l0856h            ;\r
+       call DELL               ;Delete Line\r
+       jr inlnxtch             ;\r
 l0856h:\r
-       cp TAB                  ;0856\r
-       jr nz,l085ch            ;0858\r
-       ld a,' '                ;085a\r
+       cp TAB                  ;\r
+       jr nz,l085ch            ;\r
+       ld a,' '                ;\r
 l085ch:\r
-       ld (hl),a               ;085c\r
-       cp ' '                  ;085d\r
-       jr nc,l0869h            ;085f\r
-       ld a,'^'                ;0861\r
-       call $co                ;0863\r
-       ld a,(hl)               ;0866\r
-       add a,'@'               ;0867\r
+       ld (hl),a               ;\r
+       cp ' '                  ;\r
+       jr nc,l0869h            ;\r
+       ld a,'^'                ;Controll characters\r
+       call $co                ;\r
+       ld a,(hl)               ;\r
+       add a,'@'               ;\r
 l0869h:\r
-       call $co                ;0869\r
-       inc hl                  ;086c\r
-       inc b                   ;086d\r
-       dec c                   ;086e\r
-       jr inlnxtch             ;086f\r
+       call $co                ;\r
+       inc hl                  ;\r
+       inc b                   ;\r
+       dec c                   ;\r
+       jr inlnxtch             ;\r
 \r
 inl_e:\r
-       ld hl,ci.buf+1          ;0871\r
-       ld (hl),b               ;0874\r
-       call CRLF               ;0875\r
-       ld de,ci.buf+1          ;0878\r
-       ld a,(de)               ;087b\r
-       ld b,a                  ;087c\r
-       ld c,000h               ;087d\r
-       inc b                   ;087f\r
+       ld hl,ci.buf+1          ;\r
+       ld (hl),b               ;\r
+       call CRLF               ;\r
+       ld de,ci.buf+1          ;\r
+       ld a,(de)               ;\r
+       ld b,a                  ;\r
+       ld c,000h               ;\r
+       inc b                   ;\r
 l0880h:\r
-       inc de                  ;0880\r
-       dec b                   ;0881\r
-       jr z,l08b2h             ;0882\r
-       ld a,(de)               ;0884\r
-       bit 0,c                 ;0885\r
-       call z,UPCASE           ;0887\r
-       ld (de),a               ;088a\r
-       cp ''''                 ;088b\r
-       jr nz,l0880h            ;088d\r
-       push de                 ;088f\r
-       dec de                  ;0890\r
-       ld a,(de)               ;0891\r
-       cp ''''                 ;0892\r
-       jr z,l08aeh             ;0894\r
-       dec de                  ;0896\r
-       ld a,(de)               ;0897\r
-       cp '^'                  ;0898\r
-       jr z,l08a2h             ;089a\r
-       dec de                  ;089c\r
-       ld a,(de)               ;089d\r
-       cp '^'                  ;089e\r
-       jr nz,l08aeh            ;08a0\r
+       inc de                  ;\r
+       dec b                   ;\r
+       jr z,l08b2h             ;\r
+       ld a,(de)               ;\r
+       bit 0,c                 ;\r
+       call z,UPCASE           ;\r
+       ld (de),a               ;\r
+       cp ''''                 ;\r
+       jr nz,l0880h            ;\r
+       push de                 ;\r
+       dec de                  ;\r
+       ld a,(de)               ;\r
+       cp ''''                 ;\r
+       jr z,l08aeh             ;\r
+       dec de                  ;\r
+       ld a,(de)               ;\r
+       cp '^'                  ;\r
+       jr z,l08a2h             ;\r
+       dec de                  ;\r
+       ld a,(de)               ;\r
+       cp '^'                  ;\r
+       jr nz,l08aeh            ;\r
 l08a2h:\r
-       inc de                  ;08a2\r
-       push bc                 ;08a3\r
-       call sub_0a0eh          ;08a4\r
-       pop bc                  ;08a7\r
-       dec de                  ;08a8\r
-       ld a,(de)               ;08a9\r
-       cp ''''                 ;08aa\r
-       jr z,l08afh             ;08ac\r
+       inc de                  ;\r
+       push bc                 ;\r
+       call sub_0a0eh          ;\r
+       pop bc                  ;\r
+       dec de                  ;\r
+       ld a,(de)               ;\r
+       cp ''''                 ;\r
+       jr z,l08afh             ;\r
 l08aeh:\r
-       inc c                   ;08ae\r
+       inc c                   ;\r
 l08afh:\r
-       pop de                  ;08af\r
-       jr l0880h               ;08b0\r
+       pop de                  ;\r
+       jr l0880h               ;\r
 l08b2h:\r
-       xor a                   ;08b2\r
-       ld (de),a               ;08b3\r
-       ld de,ci.buf+2          ;08b4\r
-       pop hl                  ;08b7\r
-       ret                     ;08b8\r
+       xor a                   ;\r
+       ld (de),a               ;\r
+       ld de,ci.buf+2          ;\r
+       pop hl                  ;\r
+       ret                     ;\r
 \r
 UPCASE:\r
-       cp 'a'                  ;08b9\r
-       ret c                   ;08bb\r
-       cp 'z'+1                ;08bc\r
-       ret nc                  ;08be\r
-       and 05fh                ;08bf\r
-       ret                     ;08c1\r
+       cp 'a'                  ;\r
+       ret c                   ;\r
+       cp 'z'+1                ;\r
+       ret nc                  ;\r
+       and 05fh                ;\r
+       ret                     ;\r
 \r
 out.hl.@:\r
-       call out.hl             ;08c2\r
-       push de                 ;08c5\r
-       push hl                 ;08c6\r
-       ld de,(offs.@)          ;08c7\r
-       ld a,d                  ;08cb\r
-       or e                    ;08cc\r
-       jr z,l08ddh             ;08cd\r
-       call OUTBL              ;08cf\r
-       ld a,'@'                ;08d2\r
-       call OUTCHAR            ;08d4\r
-       and a                   ;08d7\r
-       sbc hl,de               ;08d8\r
-       call out.hl             ;08da\r
+       call out.hl             ;\r
+       push de                 ;\r
+       push hl                 ;\r
+       ld de,(offs.@)          ;\r
+       ld a,d                  ;\r
+       or e                    ;\r
+       jr z,l08ddh             ;\r
+       call OUTBL              ;\r
+       ld a,'@'                ;\r
+       call OUTCHAR            ;\r
+       and a                   ;\r
+       sbc hl,de               ;\r
+       call out.hl             ;\r
 l08ddh:\r
-       pop hl                  ;08dd\r
-       pop de                  ;08de\r
-       ret                     ;08df\r
+       pop hl                  ;\r
+       pop de                  ;\r
+       ret                     ;\r
 \r
 out.bin.w:\r
-       ld a,h                  ;08e0\r
-       call out.bin.b          ;08e1\r
-       ld a,l                  ;08e4\r
+       ld a,h                  ;\r
+       call out.bin.b          ;\r
+       ld a,l                  ;\r
 out.bin.b:\r
-       ld b,008h               ;08e5\r
+       ld b,008h               ;\r
 l08e7h:\r
-       add a,a                 ;08e7\r
-       push af                 ;08e8\r
-       ld a,0                  ;08e9\r
-       adc a,a                 ;08eb\r
-       call out.digit          ;08ec\r
-       pop af                  ;08ef\r
-       djnz l08e7h             ;08f0\r
-       ld a,'"'                ;08f2\r
-       jp OUTCHAR              ;08f4\r
+       add a,a                 ;\r
+       push af                 ;\r
+       ld a,0                  ;\r
+       adc a,a                 ;\r
+       call out.digit          ;\r
+       pop af                  ;\r
+       djnz l08e7h             ;\r
+       ld a,'"'                ;\r
+       jp OUTCHAR              ;\r
 \r
 sub_08f7h:\r
-       ld a,'-'                ;08f7\r
-       call OUTCHAR            ;08f9\r
-       dec hl                  ;08fc\r
-       jp cpl.hl               ;08fd\r
+       ld a,'-'                ;\r
+       call OUTCHAR            ;\r
+       dec hl                  ;\r
+       jp cpl.hl               ;\r
 \r
 out.hl.decm:\r
-       push hl                 ;0900\r
-       call sub_08f7h          ;0901\r
-       db      3eh             ;0904  ld a,0E5h\r
+       push hl                 ;\r
+       call sub_08f7h          ;\r
+       db      3eh             ;  ld a,0E5h\r
 out.hl.dec:\r
        push    hl\r
-       ld b,6                  ;0906\r
-       call sub_0917h          ;0908\r
-       pop hl                  ;090b\r
-       ld a,'.'                ;090c\r
-       call OUTCHAR            ;090e\r
+       ld b,6                  ;\r
+       call sub_0917h          ;\r
+       pop hl                  ;\r
+       ld a,'.'                ;\r
+       call OUTCHAR            ;\r
 l0911h:\r
-       call OUTBL              ;0911\r
-       djnz l0911h             ;0914\r
-       ret                     ;0916\r
+       call OUTBL              ;\r
+       djnz l0911h             ;\r
+       ret                     ;\r
 \r
 \r
 sub_0917h:\r
@@ -918,7 +916,8 @@ do_op_sub:
        jr l0b58h               ;0b5e\r
 \r
 do_op_mlt:\r
-       push bc                 ;0b60\r
+       push    bc\r
+       if CPU_Z180\r
        ld      b,h\r
        ld      c,e\r
        ld      h,e\r
@@ -930,8 +929,24 @@ do_op_mlt:
        add     a,c\r
        add     a,e\r
        ld      h,a\r
-       pop bc                  ;0b72\r
-       jr l0b58h               ;0b73\r
+       else\r
+        ld     b,h\r
+        ld     c,l\r
+        ld     hl,0\r
+        ld     a,16\r
+mlt_1:\r
+        add    hl,hl\r
+        ex     de,hl\r
+        add    hl,hl\r
+        ex     de,hl\r
+        jr     nc,mlt_2\r
+        add    hl,bc\r
+mlt_2:\r
+        dec    a\r
+        jr     nz,mlt_1\r
+       endif\r
+       pop     bc\r
+       jr      l0b58h\r
 \r
 do_op_div:\r
        call DIV_HL_DE          ;0b75\r
@@ -1636,67 +1651,80 @@ sub_0f91h:
 \r
 bpddtz:\r
        if ROMSYS\r
-        ld h,ROMEN             ;0fcd\r
-        jr z,l0fd2h            ;0fcf\r
-        inc h                  ;0fd1\r
+        ld     h,ROMEN\r
+        jr     z,l0fd2h\r
+        inc    h\r
 l0fd2h:\r
-        push hl                ;0fd2   save rom enable stat\r
+        push   hl              ;save rom enable stat\r
+       endif\r
+       push    bc\r
+       push    de\r
+       push    ix\r
+       push    iy\r
+       ld      a,i\r
+       ld      h,a\r
+       ld      l,000h\r
+       push    hl              ;save I register\r
+\r
+       if CPU_Z180\r
+        ld     a,0f3h          ;DI\r
+        jp     po,l0fe6h\r
+        ld     a,0fbh          ;EI\r
+       else                    ;NMOS Z80 design flaw\r
+        call   getiff          ;return Carry set, if INTs are disabled.\r
+        ld     a,0f3h          ;DI\r
+        jr     c,l0fe6h\r
+        ld     a,0fbh          ;EI\r
        endif\r
-       push bc                 ;0fd3\r
-       push de                 ;0fd4\r
-       push ix                 ;0fd5\r
-       push iy                 ;0fd7\r
-       ld a,i                  ;0fd9\r
-       ld h,a                  ;0fdb\r
-       ld l,000h               ;0fdc\r
-       push hl                 ;0fde\r
-       ld a,0f3h               ;0fdf   DI\r
-       jp po,l0fe6h            ;0fe1\r
-       ld a,0fbh               ;0fe4   EI\r
 l0fe6h:\r
-       ld (reg.iff),a          ;0fe6\r
-       ld hl,ivtab             ;0fe9\r
-       ld a,h                  ;0fec\r
-       ld i,a                  ;0fed\r
-       call ddtei              ;0fef\r
-       ex af,af'               ;0ff2\r
-       push af                 ;0ff3\r
-       exx                     ;0ff4\r
-       push bc                 ;0ff5\r
-       push de                 ;0ff6\r
-       push hl                 ;0ff7\r
-       call bp.unset           ;0ff8\r
-       in0 a,(itc)             ;0ffb\r
-       jp p,l1017h             ;0ffe\r
-       res TRAP,a              ;1001\r
-       out0 (itc),a            ;1003\r
-       bit UFO,a               ;1006\r
-       jr z,l1011h             ;1008\r
-       ld hl,(REG.PC)          ;100a\r
-       dec hl                  ;100d\r
-       ld (REG.PC),hl          ;100e\r
+       ld      (reg.iff),a\r
+       ld      hl,ivtab\r
+       ld      a,h\r
+       ld      i,a\r
+       call    ddtei\r
+       ex      af,af'\r
+       push    af\r
+       exx\r
+       push    bc\r
+       push    de\r
+       push    hl\r
+       call    bp.unset\r
+       if CPU_Z180\r
+        in0    a,(itc)\r
+        jp     p,l1017h\r
+        res    TRAP,a\r
+        out0   (itc),a\r
+        bit    UFO,a\r
+        jr     z,l1011h\r
+        ld     hl,(REG.PC)\r
+        dec    hl\r
+        ld     (REG.PC),hl\r
 l1011h:\r
-       ld hl,MSG_trap          ;1011\r
-       call PSTR               ;1014\r
+        ld     hl,MSG_trap\r
+        call   PSTR\r
 l1017h:\r
-       ld a,(XBFE8)            ;1017\r
-       dec a                   ;101a\r
-       jr z,l1051h             ;101b\r
-       call inchar             ;101d\r
-       jr c,l102eh             ;1020\r
-       call sub_1059h          ;1022\r
-       and a                   ;1025\r
-       jp z,l1183h             ;1026\r
-       and 083h                ;1029\r
-       jp z,l284ah             ;102b\r
+       endif\r
+\r
+       ld      a,(XBFE8)\r
+       dec     a\r
+       jr      z,l1051h\r
+       call    inchar\r
+       jr      c,l102eh\r
+       call    sub_1059h\r
+       and     a\r
+       jp      z,l1183h\r
+       and     083h\r
+       jp      z,l284ah\r
 l102eh:\r
-       call sub_0e68h          ;102e\r
+       call    sub_0e68h\r
        call prnt_cpustat       ;1031\r
-       jp DDTZML               ;1034\r
+       jp      DDTZML\r
 \r
+       if CPU_Z180\r
 MSG_trap:\r
        DB      CR,LF,'Undefined opcode trap'\r
        DB      CR,LF,0\r
+       endif\r
 \r
 l1051h:\r
        ld (XBFE8),a            ;1051\r
@@ -1830,30 +1858,6 @@ l1144h:
        ld l,(ix+002h)          ;114e\r
        ld h,(ix+003h)          ;1151\r
 \r
-       if 0\r
-\r
-       comst                   ;1154\r
-        ld a,(hl)              ;1158\r
-       comend\r
-       ld (ix+001h),a          ;1159\r
-       ld a,(ddtrst)           ;115c\r
-       comst                   ;115f\r
-       ld (hl),a               ;1163\r
-       comend\r
-       and 038h                ;1164\r
-       ld h,000h               ;1166\r
-       ld l,a                  ;1168\r
-       ld a,0c3h               ;1169\r
-       comrep                  ;116b\r
-       inc hl                  ;116e\r
-       ld de,bpent             ;116f\r
-       ld a,e                  ;1172\r
-       comrep                  ;1173\r
-       inc hl                  ;1176\r
-       ld a,d                  ;1177\r
-       comrep                  ;1178\r
-\r
-       else\r
 \r
        ld a,(ddtrst)           ;115c\r
        comst                   ;115f\r
@@ -1873,7 +1877,6 @@ l1144h:
        ld (hl),d               ;1177\r
        comend\r
 \r
-       endif\r
        \r
 l117bh:\r
        ld de,BP_SIZE           ;117b\r
@@ -2146,8 +2149,15 @@ sub_1315h:
        ret                     ;1329\r
 \r
 b_0x132A_start:\r
+       if ROMSYS\r
+        DC     'ROMSEL'\r
+       endif\r
+       if CPU_Z180\r
        DC      'CBAR'\r
        DC      'BBR'\r
+       else\r
+        DC     'BNK'\r
+       endif\r
        DC      'BC'''\r
        DC      'DE'''\r
        DC      'HL'''\r
@@ -2179,15 +2189,21 @@ b_0x132A_start:
        DC      'I'\r
        DC      'F'''\r
        DC      'F'\r
-       if ROMSYS\r
-        DC     'ROMSEL'\r
-       endif\r
        DB      0\r
 b_0x136C_start:\r
+       if ROMSYS\r
+        defb 000h              ;13cf\r
+        defw uromen            ;13d0\r
+       endif\r
+       if CPU_Z180\r
        defb 000h               ;136c\r
        defw ucbar              ;136d\r
        defb 000h               ;136f\r
        defw ubbr               ;1370\r
+       else\r
+        defb 000h              ;136f\r
+        defw ubnk              ;1370\r
+       endif\r
        defb 003h               ;1372\r
        defw reg.c2             ;1373\r
        defb 003h               ;1375\r
@@ -2250,10 +2266,6 @@ b_0x136C_start:
        defw reg.f2             ;13ca\r
        defb 000h               ;13cc\r
        defw reg.f              ;13cd\r
-       if ROMSYS\r
-        defb 000h              ;13cf\r
-        defw uromen            ;13d0\r
-       endif\r
 CMD.S:\r
        ld hl,(lst.S)           ;13d2\r
        call get_lastarg_def    ;13d5\r
@@ -2303,6 +2315,7 @@ CMD.I:
        ld (lst.IP),hl          ;1427\r
        ld b,h                  ;142a\r
        ld c,l                  ;142b\r
+       if CPU_Z180\r
        ld a,b                  ;142c\r
        or a                    ;142d\r
        jr nz,l1442h            ;142e\r
@@ -2317,6 +2330,7 @@ l143fh:
        ld a,(hl)               ;143f\r
        jr l1444h               ;1440\r
 l1442h:\r
+       endif\r
        in a,(c)                ;1442\r
 l1444h:\r
        push af                 ;1444\r
@@ -2339,6 +2353,7 @@ CMD.O:
        ld (lst.OP),hl          ;146c\r
        ld b,h                  ;146f\r
        ld c,l                  ;1470\r
+       if CPU_Z180\r
        ld a,b                  ;1471\r
        or a                    ;1472\r
        jr nz,l1489h            ;1473\r
@@ -2352,13 +2367,16 @@ CMD.O:
        cp cbr                  ;1484\r
        jp z,ERROR              ;1486\r
 l1489h:\r
+       endif\r
        pop af                  ;1489\r
        out (c),a               ;148a\r
        ret                     ;148c\r
+       if CPU_Z180\r
 l148dh:\r
        pop af                  ;148d\r
        ld (hl),a               ;148e\r
        ret                     ;148f\r
+       endif\r
 \r
 CMD.V:\r
        call get_arg3           ;1490   get from, size, to\r
@@ -2724,10 +2742,9 @@ l1698h:
        ret                     ;169a\r
 \r
 ;      Read Intel Hex File from console.\r
-\r
 CMD.R:\r
        ld hl,0                 ;169b\r
-       call get_lastarg_def    ;169e\r
+       call get_lastarg_def    ;169e   get offset from command line\r
        push hl                 ;16a1\r
        ld hl,0                 ;16a2\r
        ld (HILOD),hl           ;16a5\r
@@ -2749,15 +2766,15 @@ w_recstart:
        jr z,l16deh             ;16c4\r
 l16c6h:\r
        call i.gethexbyte       ;16c6\r
-       pop de                  ;16c9\r
+       pop de                  ;16c9   offset\r
        push de                 ;16ca\r
        push hl                 ;16cb\r
        add hl,de               ;16cc\r
        call i.storebyte        ;16cd\r
        pop hl                  ;16d0\r
        inc hl                  ;16d1\r
-       djnz l16c6h             ;16d2\r
-       call i.gethexbyte       ;16d4\r
+       djnz l16c6h             ;16d2   repeat for record len\r
+       call i.gethexbyte       ;16d4   checksum\r
        ld a,c                  ;16d7\r
        and a                   ;16d8\r
        jp nz,ERROR             ;16d9   exit if checksum error\r
@@ -2798,10 +2815,10 @@ i.getchar:
 i.storebyte:\r
        push af                 ;1708\r
        push de                 ;1709\r
-       ld de,TPA               ;170a\r
+       ld de,TPA               ;170a   lowest allowed load address\r
        call CP.HL.DE           ;170d\r
        jp c,ERROR              ;1710\r
-       ld de,$stcka            ;1713\r
+       ld de,$stcka            ;1713   highest allowed load address\r
        call CP.HL.DE           ;1716\r
        jp nc,ERROR             ;1719\r
        ld de,(HILOD)           ;171c\r
@@ -2817,7 +2834,7 @@ l1734h:
        pop de                  ;1734\r
        pop af                  ;1735\r
        comst                   ;1736\r
-       ld (hl),a               ;173a\r
+       ld (hl),a               ;173a   store byte\r
        comend\r
        ret                     ;173b\r
 \r
@@ -6094,10 +6111,14 @@ l28dbh:
        pop bc                  ;28f8\r
        pop af                  ;28f9\r
        ex (sp),hl              ;28fa\r
-?exclst:\r
+       if CPU_Z180\r
        push hl                 ;28fb\r
        ld hl,(ubbr)            ;2900\r
 \r
+       else\r
+        push af                        ;28fb\r
+        ld a,(ubnk)            ;2900\r
+       endif\r
        if ROMSYS\r
         push af                ;28fc\r
         ld a,(uromen)          ;28fd\r
@@ -6115,178 +6136,100 @@ ddtram:
 ; The following 2 params are changeable by user.\r
 ; Should these moved to top ram?\r
 ;\r
-ddtrst:        inidat                  ;\r
-       rst     DRSTNUM         ;rst used by ddtz\r
-       inidate                 ;\r
-ddtei: inidat                  ;\r
-       ei                      ;ints enabled/disabled while ddtz is running\r
+ddtrst:        rst     DRSTNUM         ;rst used by ddtz\r
+ddtei: ei                      ;ints enabled/disabled while ddtz is running\r
        ret                     ;\r
-       inidate                 ;\r
 offs.pc:\r
-       inidat  \r
        dw      TPA     \r
-       inidate\r
 offs.@:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 CMD_ERR:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 CMD_RPT:\r
-       inidat\r
        dw      DDTZML  \r
-       inidate\r
 ci.buf:\r
-       inidat\r
        db      80      \r
        rept    83\r
        db      0\r
        endm\r
-       inidate\r
 CON.COL:\r
-       inidat\r
        db      0       \r
-       inidate\r
 XA747:\r
-       inidat\r
        db      0       \r
-       inidate\r
 bp_tab:\r
-       inidat\r
        rept    BP_CNT  \r
        db      0,0\r
        dw      0,0,0\r
        endm\r
 BP_SIZE        equ     8\r
-       inidate\r
 sexp1:\r
-       inidat\r
        dw      sexpbuf \r
-       inidate\r
 sexp2:\r
-       inidat\r
        dw      sexpbuf \r
-       inidate\r
 sexpbuf:\r
-       inidat\r
        rept    128     \r
        db      0\r
        endm\r
-       inidate\r
 sexpbufe:\r
 \r
 msg.Y:\r
-       inidat\r
        dc      'Y0'    \r
-       inidate\r
 reg.Y:\r
-       inidat\r
        rept    10      \r
        dw      0\r
        endm\r
-       inidate\r
 lst.S:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 lst.IP:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 lst.OP:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 lst.OD:\r
-       inidat\r
        db      0\r
-       inidate\r
 lst.Qj:\r
-       inidat\r
        db      0\r
-       inidate\r
 lst.D:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 HILOD:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 MAXLOD:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 XB068:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 lst.A:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 XB06C:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 pfx.IXY:\r
-       inidat\r
        db      000h    \r
-       inidate\r
 is.pfx.IXY:\r
-       inidat\r
        db      000h    \r
-       inidate\r
 lst.L:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 XBE01:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 XBE03:\r
-       inidat\r
        db      000h    \r
-       inidate\r
 XBEDD:\r
-       inidat\r
        ret             ;ret cc\r
        and a           \r
        pop hl          \r
        inc hl          \r
        jp (hl)         \r
-       inidate\r
 XBFE8:\r
-       inidat\r
        db      0       \r
-       inidate\r
 TCFLG:\r
-       inidat\r
        db      0       \r
-       inidate\r
 XBFEA:\r
-       inidat\r
        db      0       \r
-       inidate\r
 TCCSTR:\r
-       inidat\r
        dw      0       \r
-       inidate\r
 TCNFLG:\r
-       inidat\r
        db      0       \r
-       inidate\r
 TRJFLG:\r
-       inidat\r
        db      0       \r
-       inidate\r
 wstrtflg:\r
-       inidat\r
        db      1\r
-       inidate\r
 \r
        cseg\r
 vartabe:\r
@@ -6323,8 +6266,13 @@ reg.b:   db      0               ; 0fe61h
 udcntl:         db     CWAITIO         ; 0fe62h        (mem-, io- wait)\r
 uromen:         db     ROM_DIS         ; 0fe63h\r
        endif\r
+       if CPU_Z180\r
 ubbr:  db      0               ; 0fe64h\r
 ucbar: db      USR$CBAR        ; 0fe65h\r
+       else\r
+        db     0               ; 0fe64h\r
+ubnk:   db     0               ; 0fe65h\r
+       endif\r
 reg.f: db      0               ; 0fe66h\r
 reg.a: db      0               ; 0fe67h\r
 reg.l: db      0               ; 0fe68h\r
@@ -6335,10 +6283,15 @@ $go:
        if      ROMSYS\r
         out (000h),a           ;064c fe6c\r
         out0 (dcntl),l         ;064e\r
-        pop hl                 ;0651\r
+        pop hl\r
        endif\r
+       if CPU_Z180\r
        out0 (cbar),h           ;0652\r
        out0 (bbr),l            ;0655\r
+       else\r
+        ld a,h\r
+        call selbnk\r
+       endif\r
        pop af                  ;0658\r
        pop hl                  ;0659\r
        ld sp,(reg.sp)          ;065a\r
@@ -6356,11 +6309,20 @@ bpent:
        ld (reg.sp),sp          ;066a\r
        ld sp,reg.l             ;066e\r
        push af                 ;0671\r
+       if CPU_Z180\r
        in0 h,(cbar)            ;0672\r
        in0 l,(bbr)             ;0675\r
-       push hl                 ;0678\r
        ld a,SYS$CBAR           ;0679\r
        out0 (cbar),a           ;067b\r
+;;;     TODO: bbr?\r
+       else\r
+        ld a,(@cbnk)\r
+        ld h,a\r
+        xor a\r
+        ld l,a\r
+        call selbnk\r
+       endif\r
+        push hl                ;0678\r
 \r
        if ROMSYS\r
         in0 l,(dcntl)          ;067e\r
@@ -6380,15 +6342,26 @@ bpent:
         pop af                 ;069a\r
        endif\r
 \r
+       if CPU_Z180\r
        out0 (cbar),h           ;0694\r
        out0 (bbr),l            ;0697\r
        pop hl                  ;069b\r
+       else\r
+        call selbnk\r
+        pop af\r
+       endif\r
 ?exeit:\r
        ds ?lcmax+2\r
        push af                 ;069f\r
+       if CPU_Z180\r
        ld a,SYS$CBAR           ;06a0\r
        out0 (cbar),a           ;06a2\r
 \r
+;;;     TODO: bbr?\r
+       else\r
+        xor a\r
+        call selbnk\r
+       endif\r
        if ROMSYS\r
         ld a,ROM_EN            ;06a5\r
         out (000h),a           ;06a7\r