]> cloudbase.mooo.com Git - ddt180.git/commitdiff
Optionally convert Symbols to upper or lower case when loading.
authorLeo C <erbl259-lmu@yahoo.de>
Sat, 20 Aug 2016 19:55:47 +0000 (21:55 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Sat, 20 Aug 2016 19:55:47 +0000 (21:55 +0200)
ddt180.z80

index 29595585e962a3d921721e059866cef7137b8c56..8e3ad31da24c65750ee8441a8dba49131289f15c 100644 (file)
@@ -14,6 +14,7 @@ TPA   equ     0100h
        .phase  TPA\r
 \r
        jp      start\r
+       ds      3\r
 \r
 ldr_end:\r
 ldr_size       equ     $ - TPA\r
@@ -64,11 +65,12 @@ BP_CNT              equ     12      ;Number of breakpoints
 BP_SIZE                equ     8       ;Size of a breakpoint record\r
 YREG_CNT       equ     10      ;Number of Y registers (0..9)\r
 \r
-SYMCASE_SENS   equ     1       ;Symbols are case sensitive\r
-SYMCASE_CONV   equ     2       ;Convert case when symbols are loaded\r
-SYMCASE_LOWER  equ     4       ;Convert to lower case if set, else to upper case\r
+SYMCASE_SENS   equ     0       ;Symbols are case sensitive\r
+SYMCASE_CONV   equ     1       ;Convert case when symbols are loaded\r
+SYMCASE_LOWER  equ     2       ;Convert to lower case if set, else to upper case\r
 \r
 ;-------------------------------------------------------------------------------\r
+\r
 ddtz_base:\r
        jp ddtz_bdos\r
 l0003h:\r
@@ -461,6 +463,7 @@ p_goto_col:
 \r
 \r
 inchar:\r
+       push ix\r
        push hl\r
        push de\r
        push bc\r
@@ -475,6 +478,7 @@ l0284h:
        pop bc\r
        pop de\r
        pop hl\r
+       pop ix\r
        ret\r
 \r
 get_line:\r
@@ -500,10 +504,20 @@ toupper:
        cp 'a'\r
        ret c\r
        cp 'z'+1\r
-       ret nc\r
+       ccf\r
+       ret c\r
        and 05fh\r
        ret\r
 \r
+tolower:\r
+       cp 'A'\r
+       ret c\r
+       cp 'Z'+1\r
+       ccf\r
+       ret c\r
+       or 020h\r
+       ret\r
+\r
 skipbl0:\r
        inc de\r
 skipbl:\r
@@ -1088,6 +1102,9 @@ do_factor:
        ld hl,(var.$)\r
        cp '$'\r
        ret z\r
+       ld hl,ddtz_base\r
+       cp 'Z'\r
+       ret z\r
        cp '-'\r
        jr z,fact_factneg\r
        cp '~'\r
@@ -1879,12 +1896,12 @@ sub_09cah:
        and a\r
        ld a,008h\r
        jr nz,l09edh\r
-       ld a,004h\r
+       rra\r
 l09edh:\r
        ld (ix+000h),a\r
        ret\r
 \r
-sub_09f1h:\r
+bp_set_to_mem:\r
        ld b,BP_CNT\r
        ld ix,bp_tab\r
 l09f7h:\r
@@ -1927,7 +1944,7 @@ user_go:
        call sub_1ffeh\r
        ld c,008h\r
 l0a41h:\r
-       call sub_09f1h\r
+       call bp_set_to_mem\r
        ld sp,reg.l2\r
        pop hl\r
        pop de\r
@@ -3073,8 +3090,10 @@ read_symfile:
        call pstr_inl\r
        db      'SYMBOLS',CR,LF+80h\r
 \r
-       dec de\r
-       call file_open\r
+       dec     de\r
+       call    file_open\r
+       ld      a,(symattrib)\r
+       ld      c,a\r
 rs_1:\r
        call    read_byte\r
 rs_2:\r
@@ -3106,11 +3125,17 @@ rs_5:
        call    read_byte       ; next char of symbol name\r
        call    test_sym_char   ; valid char?\r
        jr      nz,rs_6\r
+       bit     SYMCASE_CONV,c\r
+       jr      z,rs_51\r
+       call    toupper\r
+       bit     SYMCASE_LOWER,c\r
+       call    nz,tolower\r
+rs_51:\r
        ld      (hl),a          ;\r
        inc     b               ; symlen++\r
-       ld      a,b             ;\r
-       cp      10h+1           ;\r
-       jr      c,rs_5          ;\r
+       ld      a,(symlen_max)  ;\r
+       cp      b               ;\r
+       jr      nc,rs_5         ;\r
 error3:\r
        jp      ERROR           ;\r
 \r
@@ -3143,13 +3168,14 @@ rs_61:
        ld      de,(BDOS+1)     ;\r
        ld      (BDOS+1),hl     ;\r
        ex      de,hl           ;\r
-       pop     af              ; symlen\r
-       ld      (hl),a          ;\r
+       pop     bc              ; symlen\r
+       ld      (hl),b          ;\r
        inc     hl              ;\r
        pop     de              ; symval\r
        ld      (hl),e          ;\r
        inc     hl              ;\r
        ld      (hl),d          ;\r
+       ld      a,b             ;\r
        ld      hl,symlen_cur   ;\r
        cp      (hl)            ; new max?\r
        jr      c,$+3           ;\r