]> cloudbase.mooo.com Git - ddt180.git/commitdiff
CPU test. Move relocator to expr buffer.
authorLeo C <erbl259-lmu@yahoo.de>
Fri, 5 Aug 2016 12:50:38 +0000 (14:50 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Fri, 5 Aug 2016 12:50:38 +0000 (14:50 +0200)
ddt180.z80

index 56204fb84fda3b4c09d92e95a050d01067d9e7bf..623c553aef136948fad6965fe56b74d4130070be 100644 (file)
@@ -14,74 +14,15 @@ TPA equ     0100h
        cseg\r
        .phase  TPA\r
 \r
-       LD      SP,ldr_end+(stack-ddtz_base)\r
-       LD      DE,ldr_end+(expr_buf-ddtz_base)\r
-       LD      C,BDOS_PSTR\r
-       CALL    BDOS\r
-\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+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
-       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
+       jp      start\r
 \r
 ldr_end:\r
 ldr_size       equ     $ - TPA\r
+current_phase  defl    $\r
 \r
        .dephase\r
+current_cseg   defl    $\r
+\r
 ;-------------------------------------------------------------------------------\r
 ; DDT/Z core\r
 ;\r
@@ -134,7 +75,19 @@ sub_0004h:
        nop                     ;0004   00      .\r
        ret                     ;0005   c9      .\r
 \r
-       ds      STACK_SIZE\r
+current_cseg   defl    $ - current_cseg\r
+       .phase  current_phase + current_cseg\r
+signon:\r
+       db      'DDT/180',TAB\r
+       db      '[8101] 002',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
 \r
 stack:\r
 reg.l2:        db      000h            ;0046   00      .\r
@@ -1388,10 +1341,10 @@ b_06e9_start:
        DC      'HL '\r
        DC      'SP'\r
        DC      'PC'\r
-       DC      'A'''\r
-       DC      'BC'''\r
-       DC      'DE'''\r
-       DC      'HL'''\r
+       DC      'a'''\r
+       DC      'bc'''\r
+       DC      'de'''\r
+       DC      'hl'''\r
        DC      'IX'\r
        DC      'IY'\r
        DC      'I'\r
@@ -1932,8 +1885,86 @@ expr_p2:
        defw expr_buf           ;0b1a   1c 0b   . .\r
 \r
 expr_buf:\r
-       db      'DDT/180',TAB\r
-       db      '[8101] 001',CR,LF,'$'\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+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
+       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