]> cloudbase.mooo.com Git - ddt180.git/blobdiff - ddt180.z80
Convert relocater to an user command. WIP
[ddt180.git] / ddt180.z80
index 45b3ea57e01272e355b53bc873a3f179b7f62fb2..81b68b483138257f16069a1ba913cecc701e25ae 100644 (file)
 ;   - Use Digital Research Link-80 to generate a .PRL file (op switch).\r
 ;   - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.\r
 \r
+TPA    equ     0100h\r
+\r
+       cseg\r
+ldr_start:\r
+       LD      SP,stack\r
+\r
+;      LD      DE,signon\r
+;      LD      C,BDOS_PSTR\r
+;      CALL    BDOS\r
+\r
+       ld hl,(1)               ;wboot addr\r
+       ld de,?const\r
+       ld b,3\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
+signon:\r
+       call    pstr_inl\r
+       db      'DDTZ/180'\r
+       db      ' - Version '\r
+       maclib  version.inc\r
+       defvers\r
+       dc      CR,LF\r
+\r
+;      ld sp,stack\r
+;      exx\r
+;      ld de,ddtz_base\r
+;      call cp_hl_de\r
+;      jr c,l0079h\r
+;      ex de,hl\r
+;l0079h:\r
+;      ld de,TPA\r
+;l007ch:\r
+;      dec hl\r
+;      ld (hl),000h\r
+;      ld a,h\r
+;      sub d\r
+;      ld b,a\r
+;      ld a,l\r
+;      sub e\r
+;      or b\r
+;      jr nz,l007ch\r
+\r
+       ld a,i\r
+       ld (reg.i),a\r
+       ld a,0f3h\r
+       jp po,l0093h\r
+       ld a,0fbh\r
+l0093h:\r
+       ld (reg.iff),a\r
+       call di_or_ei\r
+       ld hl,ddtz_base\r
+       ld l,000h\r
+       ld (reg_sp),hl\r
+\r
+       jp mainloop\r
+\r
 ;-------------------------------------------------------------------------------\r
 ; Relocation loader\r
 ;\r
-TPA    equ     0100h\r
-       cseg\r
-       .phase  TPA\r
+       LD      HL,ddtz_end             ;start of reloc bitmap\r
+       ld      bc,0108h                ;init bit counter\r
 \r
-       jp      start\r
-       ds      3\r
+       EXX\r
+       LD      HL,(BDOS+1)\r
+       LD      (ddtz_base+1),HL\r
+       LD      BC,ddtz_size-1\r
+       LD      D,B\r
+       LD      E,0FFH\r
+       INC     DE                      ;size rounded up to next page boundary\r
+       INC     BC                      ;ddtz_size\r
+       OR      A\r
+       SBC     HL,DE                   ;BDOS - size\r
+       LD      (BDOS+1),HL             ;-> new BDOS entry\r
 \r
-ldr_end:\r
-ldr_size       equ     $ - TPA\r
-current_phase  defl    $\r
+       push    hl\r
+       PUSH    BC\r
+       ld      de,ldr_end\r
+       sbc     hl,de\r
+       EX      DE,HL                   ;-> DE\r
+       LD      HL,ldr_size\r
+       add     hl,bc\r
+       ld      b,h\r
+       ld      c,l\r
+       LD      HL,TPA\r
+reloc_lp:\r
+       EXX\r
+       djnz    reloc_nl\r
+       ld      b,c                     ;reload bit counter\r
+       LD      e,(HL)                  ;get next 8 relocation bits\r
+       INC     HL\r
+reloc_nl:\r
+       sla     e\r
+       EXX\r
+       JR      NC,reloc_next\r
+       DEC     HL\r
+       LD      A,(HL)\r
+       ADD     A,E\r
+       LD      (HL),A\r
+       INC     HL\r
+       LD      A,(HL)\r
+       ADC     A,D\r
+       LD      (HL),A\r
+reloc_next:\r
+       inc     hl\r
+       dec     bc\r
+       ld      a,b\r
+       or      c\r
+       jr      nz,reloc_lp\r
+       dec     hl\r
+\r
+       POP     BC\r
+       pop     de\r
+       EX      DE,HL\r
+       ADD     HL,BC\r
+       EX      DE,HL\r
+       DEC     DE\r
+       LDDR\r
+       LD      HL,conbuf+2-ddtz_base\r
+       ADD     HL,DE\r
+       JP      (HL)\r
 \r
-       .dephase\r
-current_cseg   defl    $\r
+ldr_end:\r
+ldr_size       equ     $ - ldr_start\r
 \r
 ;-------------------------------------------------------------------------------\r
 ; DDT/Z core\r
@@ -49,38 +167,20 @@ BDOS_PSTR  equ     9       ;Print String
 \r
 STACK_SIZE     equ     80      ;ddtz internal stack\r
 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     4       ;Size of a breakpoint record\r
 \r
 ;-------------------------------------------------------------------------------\r
 \r
 ddtz_base:\r
-       jp ddtz_bdos\r
+       jp 0\r
 l0003h:\r
        rst 30h\r
 di_or_ei:\r
        nop\r
        ret\r
-ddtz_bdos:\r
-       jp      0\r
-\r
-current_cseg   defl    $ - current_cseg\r
-       .phase  current_phase + current_cseg\r
-signon:\r
-       db      'DDTZ/180'\r
-       db      ' - Version '\r
-       maclib  version.inc\r
-       defvers\r
-       db      CR,LF,'$'\r
-msgz80:\r
-       db      'Z80 or better required!',cr,lf,'$'\r
-\r
-current_phase  defl    $\r
-       .dephase\r
-current_cseg   defl    $\r
-       ds      STACK_SIZE - (current_phase - signon)\r
 \r
+       ds      STACK_SIZE\r
 \r
 stack:\r
 reg.l2:        db      000h\r
@@ -116,54 +216,6 @@ cmd_rpt:dw mainloop
 conbuf:\r
        db      CONBUF_SIZE\r
 \r
-       ld sp,stack\r
-       exx\r
-       ld de,ddtz_base\r
-       call cp_hl_de\r
-       jr c,l0079h\r
-       ex de,hl\r
-l0079h:\r
-       ld de,TPA\r
-l007ch:\r
-       dec hl\r
-       ld (hl),000h\r
-       ld a,h\r
-       sub d\r
-       ld b,a\r
-       ld a,l\r
-       sub e\r
-       or b\r
-       jr nz,l007ch\r
-       ld a,i\r
-       ld (reg.i),a\r
-       ld a,0f3h\r
-       jp po,l0093h\r
-       ld a,0fbh\r
-l0093h:\r
-       ld (reg.iff),a\r
-       call di_or_ei\r
-       ld hl,ddtz_base\r
-       ld l,000h\r
-       ld (reg_sp),hl\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
@@ -171,9 +223,6 @@ vini_l:
 ?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
@@ -2493,15 +2542,6 @@ disas_nopfx:
 \r
 disas_pfx.ED:\r
        inc iy\r
-       ld hl,b_1bc9_start              ;1 byte opcode, no arguments\r
-       call lookup_op\r
-       ld b,2\r
-       ret c\r
-       ld hl,b_1bf4_start\r
-       call lookup_op_arg\r
-       ld b,2\r
-       ret c\r
-\r
        ld hl,l228bh\r
        call lookup_op_arg\r
        ld b,3\r
@@ -2509,6 +2549,32 @@ disas_pfx.ED:
        ld hl,b_1c40_start\r
        call lookup_op_arg\r
        ld b,4\r
+       ret c\r
+\r
+       ld hl,b_1bc9_start              ;1 byte opcode, no arguments\r
+       call lookup_op\r
+       jr c,da_ed1\r
+\r
+       ld hl,b_1bf4_start\r
+       call lookup_op_arg\r
+       ret nc\r
+\r
+       ld a,e\r
+       cp a_noarg\r
+       jr nz,da_ed0\r
+       ld c,(iy+0)\r
+       ld a,c\r
+       rra\r
+       and 0ch\r
+       ld b,a\r
+       ld a,c\r
+       and 03h\r
+       call str_sel_ab\r
+\r
+da_ed0:\r
+       scf\r
+da_ed1:\r
+       ld b,2\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -2605,22 +2671,6 @@ l1a0ah:
 \r
 ;-------------------------------------------------------------------------------\r
 \r
-lookup_op:\r
-       ld a,(hl)\r
-       cp 0ffh\r
-       ret z\r
-       cp (iy+000h)\r
-       jr z,l1a7fh\r
-       inc hl\r
-       inc hl\r
-       jr lookup_op\r
-l1a7fh:\r
-       ld e,a_noarg\r
-       inc hl\r
-       ld b,(hl)\r
-       jr get_mnemonic\r
-\r
-\r
 test_DDFD:\r
        ld a,(hl)\r
        and a\r
@@ -2631,27 +2681,29 @@ test_DDFD:
        scf\r
        ret\r
 \r
-lookup_op_arg:\r
-       ld a,(iy+000h)\r
-       and (hl)\r
-       inc hl\r
-       cp (hl)\r
-       inc hl\r
-       jr z,l1aa8h\r
+lookup_op:\r
+       ld a,(hl)\r
        inc hl\r
+       cp 0ffh\r
+       ret z\r
+       cp (iy+000h)\r
+       jr z,l1a7fh\r
        inc hl\r
-       ld a,(hl)\r
-       and a\r
-       jr nz,lookup_op_arg\r
-       ret\r
-\r
-l1aa8h:\r
+       jr lookup_op\r
+l1a7fh:\r
        ld b,(hl)\r
-       inc b\r
+       ld e,a_noarg\r
+       jr get_mnemonic\r
+\r
+lookup_op_arg:\r
+       call lookup_branch_op\r
+       ret nc\r
+       ld a,e\r
+       ld e,d\r
+       cp a,0ffh\r
        ret z                   ;carry clear\r
-       dec b\r
-       inc hl\r
-       ld e,(hl)\r
+       ld b,a\r
+\r
 get_mnemonic:\r
        ld hl,t_MNEMONICS\r
        bit 7,b\r
@@ -2662,6 +2714,7 @@ get_mnemonic:
        rra\r
        rra\r
        and 07h\r
+str_sel_ab:\r
        add b\r
        ld b,a\r
 get_m1:\r
@@ -2670,18 +2723,17 @@ get_m1:
        ret\r
 \r
 lookup_branch_op               ;TODO\r
-       ld a,(iy+000h)\r
-       and (hl)\r
+       ld a,(hl)\r
+       and a\r
+       ret z\r
        inc hl\r
+       and (iy+000h)\r
        cp (hl)\r
        inc hl\r
        jr z,l1aa8_br\r
        inc hl\r
        inc hl\r
-       ld a,(hl)\r
-       and a\r
-       jr nz,lookup_branch_op\r
-       ret\r
+       jr lookup_branch_op\r
 \r
 l1aa8_br:\r
        ld e,(hl)\r
@@ -2699,14 +2751,14 @@ b_1ab6_start:
        db 0f3h,i_DI            ;di\r
        db 0fbh,i_EI            ;ei\r
        db 000h,i_NOP           ;nop\r
-       db 007h,i_RLCA          ;rlca\r
-       db 00fh,i_RRCA          ;rrca\r
-       db 017h,i_RLA           ;rla\r
-       db 01fh,i_RRA           ;rra\r
-       db 027h,i_DAA           ;daa\r
-       db 02fh,i_CPL           ;cpl\r
-       db 037h,i_SCF           ;scf\r
-       db 03fh,i_CCF           ;ccf\r
+;      db 007h,i_RLCA          ;rlca\r
+;      db 00fh,i_RRCA          ;rrca\r
+;      db 017h,i_RLA           ;rla\r
+;      db 01fh,i_RRA           ;rra\r
+;      db 027h,i_DAA           ;daa\r
+;      db 02fh,i_CPL           ;cpl\r
+;      db 037h,i_SCF           ;scf\r
+;      db 03fh,i_CCF           ;ccf\r
        db 0c9h,i_RET           ;ret\r
        db 0ffh\r
 \r
@@ -2717,22 +2769,27 @@ b_1ab6_start:
 b_1ad1_start:\r
        db 0c0h,040h,i_LD       ;ld r[y],r[z]\r
        db a_rr\r
-       db 0f8h,080h,i_ADD      ;add a,r[z]\r
-       db a_ar\r
-       db 0f8h,088h,i_ADC      ;adc a,r[z]\r
-       db a_ar\r
-       db 0f8h,090h,i_SUB      ;sub r[z]\r
-       db a_r\r
-       db 0f8h,098h,i_SBC      ;sbc a,r[z]\r
-       db a_ar\r
-       db 0f8h,0a0h,i_AND      ;and r[z]\r
-       db a_r\r
-       db 0f8h,0a8h,i_XOR      ;xor r[z]\r
-       db a_r\r
-       db 0f8h,0b0h,i_OR       ;or r[z]\r
-       db a_r\r
-       db 0f8h,0b8h,i_CP       ;cp r[z]\r
+\r
+       db 0c0h,080h,i_ADD+080h ;add a,r[z]\r
        db a_r\r
+\r
+;      db 0f8h,080h,i_ADD      ;add a,r[z]\r
+;      db a_ar\r
+;      db 0f8h,088h,i_ADC      ;adc a,r[z]\r
+;      db a_ar\r
+;      db 0f8h,090h,i_SUB      ;sub r[z]\r
+;      db a_r\r
+;      db 0f8h,098h,i_SBC      ;sbc a,r[z]\r
+;      db a_ar\r
+;      db 0f8h,0a0h,i_AND      ;and r[z]\r
+;      db a_r\r
+;      db 0f8h,0a8h,i_XOR      ;xor r[z]\r
+;      db a_r\r
+;      db 0f8h,0b0h,i_OR       ;or r[z]\r
+;      db a_r\r
+;      db 0f8h,0b8h,i_CP       ;cp r[z]\r
+;      db a_r\r
+\r
        db 0c7h,0c0h,i_RET      ;ret cc\r
        db a_cc\r
        db 0c7h,0c7h,i_RST      ;rst\r
@@ -2765,28 +2822,37 @@ b_1ad1_start:
        db a_pa\r
        db 0efh,00ah,i_LD       ;ld a,(rp) ;rp=bc,de\r
        db a_ap\r
+\r
+       db 0c7h,007h,i_RLCA+080h;rlca\r
+       db a_noarg\r
+\r
        db 0\r
 \r
 ; 2 byte opcodes\r
 b_1b54_start:\r
        db 0c7h,006h,i_LD       ;ld r[y],nn\r
        db a_rn\r
-       db 0ffh,0c6h,i_ADD      ;add a,nn\r
-       db a_an\r
-       db 0ffh,0ceh,i_ADC      ;adc a,nn\r
-       db a_an\r
-       db 0ffh,0d6h,i_SUB      ;sub nn\r
-       db a_n\r
-       db 0ffh,0deh,i_SBC      ;sbc a,nn\r
-       db a_an\r
-       db 0ffh,0e6h,i_AND      ;and nn\r
-       db a_n\r
-       db 0ffh,0eeh,i_XOR      ;xor nn\r
-       db a_n\r
-       db 0ffh,0f6h,i_OR       ;or nn\r
-       db a_n\r
-       db 0ffh,0feh,i_CP       ;cp nn\r
+\r
+       db 0c7h,0c6h,i_ADD+080h ;add a,r[z]\r
        db a_n\r
+\r
+;      db 0ffh,0c6h,i_ADD      ;add a,nn\r
+;      db a_an\r
+;      db 0ffh,0ceh,i_ADC      ;adc a,nn\r
+;      db a_an\r
+;      db 0ffh,0d6h,i_SUB      ;sub nn\r
+;      db a_n\r
+;      db 0ffh,0deh,i_SBC      ;sbc a,nn\r
+;      db a_an\r
+;      db 0ffh,0e6h,i_AND      ;and nn\r
+;      db a_n\r
+;      db 0ffh,0eeh,i_XOR      ;xor nn\r
+;      db a_n\r
+;      db 0ffh,0f6h,i_OR       ;or nn\r
+;      db a_n\r
+;      db 0ffh,0feh,i_CP       ;cp nn\r
+;      db a_n\r
+\r
        db 0ffh,010h,i_DJNZ     ;djnz\r
        db a_j\r
        db 0ffh,018h,i_JR       ;jr\r
@@ -2829,22 +2895,22 @@ b_1bc9_start:
        db 04dh,i_RETI          ;reti\r
        db 067h,i_RRD           ;rrd\r
        db 06fh,i_RLD           ;rld\r
-       db 0a0h,i_LDI           ;ldi\r
-       db 0a1h,i_CPI           ;cpi\r
-       db 0a2h,i_INI           ;ini\r
-       db 0a3h,i_OUTI          ;outi\r
-       db 0a8h,i_LDD           ;ldd\r
-       db 0a9h,i_CPD           ;cpd\r
-       db 0aah,i_IND           ;ind\r
-       db 0abh,i_OUTD          ;outd\r
-       db 0b0h,i_LDIR          ;ldir\r
-       db 0b1h,i_CPIR          ;cpir\r
-       db 0b2h,i_INIR          ;inir\r
-       db 0b3h,i_OTIR          ;otir\r
-       db 0b8h,i_LDDR          ;lddr\r
-       db 0b9h,i_CPDR          ;cpdr\r
-       db 0bah,i_INDR          ;indr\r
-       db 0bbh,i_OTDR          ;otdr\r
+;      db 0a0h,i_LDI           ;ldi\r
+;      db 0a1h,i_CPI           ;cpi\r
+;      db 0a2h,i_INI           ;ini\r
+;      db 0a3h,i_OUTI          ;outi\r
+;      db 0a8h,i_LDD           ;ldd\r
+;      db 0a9h,i_CPD           ;cpd\r
+;      db 0aah,i_IND           ;ind\r
+;      db 0abh,i_OUTD          ;outd\r
+;      db 0b0h,i_LDIR          ;ldir\r
+;      db 0b1h,i_CPIR          ;cpir\r
+;      db 0b2h,i_INIR          ;inir\r
+;      db 0b3h,i_OTIR          ;otir\r
+;      db 0b8h,i_LDDR          ;lddr\r
+;      db 0b9h,i_CPDR          ;cpdr\r
+;      db 0bah,i_INDR          ;indr\r
+;      db 0bbh,i_OTDR          ;otdr\r
        db 08bh,i_OTDM          ;otdm\r
        db 09bh,i_OTDMR         ;otdmr\r
        db 083h,i_OTIM          ;otim\r
@@ -2853,6 +2919,8 @@ b_1bc9_start:
        db 0ffh                 ;<end mark>\r
 \r
 b_1bf4_start:\r
+       db 0e4h,0a0h,i_LDI\r
+       db a_noarg\r
        db 0ffh,070h,i_IN       ;in (c)    ;\r
        db a_c\r
        db 0c7h,040h,i_IN       ;in r,(c)  ;r=b,c,d,e,h,l,a\r
@@ -2906,20 +2974,23 @@ b_1c40_start:
 \r
 ; CB\r
 b_1c55_start:\r
-       db 0f8h,000h,i_RLC      ;rlc g\r
-       db a_cbr\r
-       db 0f8h,008h,i_RRC      ;rrc g\r
-       db a_cbr\r
-       db 0f8h,010h,i_RL       ;rl g\r
-       db a_cbr\r
-       db 0f8h,018h,i_RR       ;rr g\r
-       db a_cbr\r
-       db 0f8h,020h,i_SLA      ;sla g\r
-       db a_cbr\r
-       db 0f8h,028h,i_SRA      ;sra g\r
-       db a_cbr\r
-       db 0f8h,038h,i_SRL      ;srl g\r
+       db 0c0h,000h,i_RLC+080h ;rlc g\r
        db a_cbr\r
+\r
+;      db 0f8h,000h,i_RLC      ;rlc g\r
+;      db a_cbr\r
+;      db 0f8h,008h,i_RRC      ;rrc g\r
+;      db a_cbr\r
+;      db 0f8h,010h,i_RL       ;rl g\r
+;      db a_cbr\r
+;      db 0f8h,018h,i_RR       ;rr g\r
+;      db a_cbr\r
+;      db 0f8h,020h,i_SLA      ;sla g\r
+;      db a_cbr\r
+;      db 0f8h,028h,i_SRA      ;sra g\r
+;      db a_cbr\r
+;      db 0f8h,038h,i_SRL      ;srl g\r
+;      db a_cbr\r
        db 0c0h,040h,i_BIT      ;bit b,g\r
        db a_bcbr\r
        db 0c0h,080h,i_RES      ;res b,g\r
@@ -2973,8 +3044,8 @@ a_rr      equ     $-t_argf
        db      fi_ry,','               ;ld r[y],r[z]\r
 a_r    equ     $-t_argf\r
        db      fi_rz,0                 ;op r[z]\r
-a_ar   equ     $-t_argf\r
-       db      'A,',fi_rz,0            ;op A,r[z]\r
+;a_ar  equ     $-t_argf\r
+;      db      'A,',fi_rz,0            ;op A,r[z]\r
 a_cc   equ     $-t_argf\r
        db      fi_ccy,0                ;op cc[y]\r
 a_rst  equ     $-t_argf\r
@@ -3003,8 +3074,8 @@ a_ap      equ     $-t_argf
 ;  2 byte opcodes\r
 a_rn   equ     $-t_argf\r
        db      fi_ry,',',fi_n,0        ;ld r[y],n\r
-a_an   equ     $-t_argf\r
-       db      'A,'                    ;op a,n\r
+;a_an  equ     $-t_argf\r
+;      db      'A,'                    ;op a,n\r
 a_n    equ     $-t_argf\r
        db      fi_n,0                  ;op n\r
 a_ccj  equ     $-t_argf\r
@@ -3247,25 +3318,13 @@ pstr_inl:
 opc    macro   x\r
 \r
 i_&x   equ     opc_index\r
-o_&x   equ     $-opc_tabstart\r
+;o_&x  equ     $-opc_tabstart\r
        dc      '&x'\r
 opc_index      defl    opc_index+1\r
        endm\r
 \r
-opc1   macro   x,y\r
-\r
-i_&x&y equ     opc_index\r
-o_&x&y equ     $-opc_tabstart\r
-       db      '&x'\r
-i_&y   equ     opc_index+1\r
-o_&y   equ     $-opc_tabstart\r
-       dc      '&y'\r
-opc_index      defl    opc_index+2\r
-       endm\r
-\r
-\r
 t_MNEMONICS:\r
-opc_tabstart   defl    $\r
+;opc_tabstart  defl    $\r
 opc_index      defl    0\r
 ; 1-byte other\r
        opc NOP\r
@@ -3328,8 +3387,7 @@ opc_index defl    0
        opc RRD\r
        opc RLD\r
 \r
-;Block instructions\r
-t_mn_bli:\r
+; Block instructions\r
        opc LDI\r
        opc CPI\r
        opc INI\r
@@ -3347,7 +3405,7 @@ t_mn_bli:
        opc INDR\r
        opc OTDR\r
 \r
-;Z180\r
+; Z180\r
        opc IN0\r
        opc OUT0\r
        opc TST\r
@@ -3453,7 +3511,7 @@ t_op_branch:
        dw l20ach\r
        db 0ffh,0edh            ;Prefix ED\r
        dw l20b8h\r
-t_op_branch0:\r
+\r
        db 0ffh,0cdh            ;call mn\r
        dw l2080h\r
        db 0ffh,0c3h            ;jp mn\r
@@ -3636,91 +3694,6 @@ bp_tab:
         endm\r
        endm\r
 \r
-expr_buf:\r
-current_cseg   defl    $ - current_cseg\r
-       .phase  current_phase + current_cseg\r
-\r
-start:\r
-       LD      SP,ldr_end+(stack-ddtz_base)\r
-       LD      DE,signon               ;ldr_end+(expr_buf-ddtz_base)\r
-       LD      C,BDOS_PSTR\r
-       CALL    BDOS\r
-\r
-       xor     a\r
-       dec     a\r
-       jp      po,reloc\r
-       ld      de,msgz80\r
-       LD      C,BDOS_PSTR\r
-       CALL    BDOS\r
-       jp      0\r
-\r
-reloc:\r
-       LD      HL,ldr_end+ddtz_size    ;start of reloc bitmap\r
-       ld      bc,0108h                ;init bit counter\r
-\r
-       EXX\r
-       LD      HL,(BDOS+1)\r
-       LD      (ldr_end+(ddtz_bdos+1-ddtz_base)),HL\r
-       LD      BC,ddtz_size-1\r
-       LD      D,B\r
-       LD      E,0FFH\r
-       INC     DE                      ;size rounded up to next page boundary\r
-       INC     BC                      ;ddtz_size\r
-       OR      A\r
-       SBC     HL,DE                   ;BDOS - size\r
-       LD      (BDOS+1),HL             ;-> new BDOS entry\r
-\r
-       push    hl\r
-       PUSH    BC\r
-       ld      de,ldr_end\r
-       sbc     hl,de\r
-       EX      DE,HL                   ;-> DE\r
-       LD      HL,ldr_size\r
-       add     hl,bc\r
-       ld      b,h\r
-       ld      c,l\r
-       LD      HL,TPA\r
-reloc_lp:\r
-       EXX\r
-       djnz    reloc_nl\r
-       ld      b,c                     ;reload bit counter\r
-       LD      e,(HL)                  ;get next 8 relocation bits\r
-       INC     HL\r
-reloc_nl:\r
-       sla     e\r
-       EXX\r
-       JR      NC,reloc_next\r
-       DEC     HL\r
-       LD      A,(HL)\r
-       ADD     A,E\r
-       LD      (HL),A\r
-       INC     HL\r
-       LD      A,(HL)\r
-       ADC     A,D\r
-       LD      (HL),A\r
-reloc_next:\r
-       cpi\r
-       jp      pe,reloc_lp\r
-       dec     hl\r
-\r
-       POP     BC\r
-       pop     de\r
-       EX      DE,HL\r
-       ADD     HL,BC\r
-       EX      DE,HL\r
-       DEC     DE\r
-       LDDR\r
-       LD      HL,conbuf+2-ddtz_base\r
-       ADD     HL,DE\r
-       JP      (HL)\r
-\r
-current_phase  defl    $\r
-       .dephase\r
-current_cseg   defl    $\r
-\r
-       ds      EXPR_BUF_SIZE - ($ - expr_buf)\r
-expr_bufe:\r
-\r
 ;-------------------------------------------------------------------------------\r
 \r
 last_S:\r
@@ -3748,7 +3721,7 @@ last_L:
        dw      TPA\r
 \r
 pbl_loop_adr:\r
-       dw      0\r
+       dw      0addeh\r
 \r
 ddtz_size      equ     $-ddtz_base\r
 ddtz_end:\r