]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/commitdiff
b0call --> b0hlcall
authorLeo C <erbl259-lmu@yahoo.de>
Mon, 16 Mar 2020 13:16:49 +0000 (14:16 +0100)
committerLeo C <erbl259-lmu@yahoo.de>
Mon, 16 Mar 2020 13:16:49 +0000 (14:16 +0100)
function pointer in HL. A not saved

cbios/bioskrnl.180
cbios/chario.180
cbios/config.inc
cbios/mm.180
cbios/time.180

index 0610b31207fde06760d2fa050d131d547d475e3d..989b53c9a487c587375ddc91fbdc7ba24aef4302 100644 (file)
@@ -79,7 +79,7 @@ ccp   equ     0100h           ; Console Command Processor gets loaded
        public ?mltio,?flush,?mov,?tim,?bnksl,?stbnk,?xmov\r
 \r
        extrn bs$stack\r
-       extrn _b0call\r
+       extrn _b0hlcall\r
 \r
 \r
     ; BIOS Jump vector.\r
@@ -131,7 +131,7 @@ ccp equ     0100h           ; Console Command Processor gets loaded
 ?ioctl jp      ioctl           ;\r
 \r
 \r
-       rept    48\r
+       rept    32\r
         db     '|'\r
        endm\r
 boot$stack:\r
@@ -147,7 +147,7 @@ boot:
        out0    (cbr),a\r
        ld      a,USR$CBAR\r
        out0    (cbar),a\r
-       ld      sp,boot$stack\r
+       ld      sp,bs$stack\r
 \r
        call    hwinit          ; first time hardware initialisation\r
 \r
@@ -191,6 +191,7 @@ d$init$next:
        cseg    ; following in resident memory\r
 \r
 boot$1:\r
+       ld      sp,boot$stack\r
        call    set$jumps\r
        call    ?ldccp          ; fetch CCP for first time\r
        jp      ccp\r
@@ -478,16 +479,15 @@ seldsk:
        ld      a,(hl)\r
        ld      (@RDRV),a\r
        jr      nz,notfirst     ; examine login bit\r
-       ld      hl,-6\r
+\r
+       ld      hl,-6           ; call LOGIN\r
        add     hl,de\r
        ld      a,(hl)\r
        inc     hl\r
        ld      h,(hl)\r
        ld      l,a\r
-       ld      (bs$stack),sp\r
-       ld      sp,bs$stack\r
-       call    ijphl           ; call LOGIN\r
-       ld      sp,(bs$stack)\r
+       call    _b0hlcall\r
+\r
 notfirst:\r
        ld      hl,(@xdph)      ; recover DPH pointer\r
        ret\r
@@ -565,15 +565,13 @@ sectrn:
        ;               extended disk parameter header (XDPH).\r
 \r
 read:\r
-       ld      (bs$stack),sp\r
-       ld      sp,bs$stack\r
        ld      a,1\r
        ld      (@op),a\r
        ld      ix,(@xdph)      ; get drive descriptor pointer\r
        ld      l,(ix-8)        ; get read routine entry\r
        ld      h,(ix-7)\r
-       call    ijphl           ; call LOGIN\r
-       ld      sp,(bs$stack)\r
+\r
+       call    _b0hlcall\r
        ret\r
 \r
        ; WRITE\r
@@ -582,15 +580,13 @@ read:
        ;               extended disk parameter header (XDPH).\r
 \r
 write:\r
-       ld      (bs$stack),sp\r
-       ld      sp,bs$stack\r
        ld      a,2\r
        ld      (@op),a\r
        ld      ix,(@xdph)      ; get drive descriptor pointer\r
        ld      l,(ix-10)       ; get write routine entry\r
        ld      h,(ix- 9)\r
-       call    ijphl           ; call LOGIN\r
-       ld      sp,(bs$stack)\r
+\r
+       call    _b0hlcall\r
        ret\r
 \r
 \r
index 7133b7745b5a86b94e452540eee3c276eb5d5f0e..930a86dac7c1960ca904c4e0f2d6405f42d15b07 100644 (file)
@@ -9,7 +9,7 @@
 \r
        extrn   ff_dev\r
        extrn   as0_dev,as1_dev\r
-       extrn   _b0call\r
+       extrn   _b0hlcall\r
 \r
        maclib z180reg.inc\r
        maclib config.inc\r
@@ -74,7 +74,7 @@ null_dev:
        ld      b,c\r
        ld      c,0             ;\r
 ioctl:\r
-       b0call  _ioctl\r
+       b0hlcall _ioctl\r
        ret\r
 \r
        dseg\r
@@ -90,7 +90,7 @@ _ioctl:
 \r
        cseg\r
 ?ci:                           ; character input\r
-       b0call  _ci\r
+       b0hlcall _ci\r
        ret\r
 \r
        dseg\r
@@ -106,7 +106,7 @@ _ci:
 \r
        cseg\r
 ?cist:                         ; character input\r
-       b0call  _cist\r
+       b0hlcall _cist\r
        ret\r
 \r
        dseg\r
@@ -123,7 +123,7 @@ _cist:                              ; character input status
 \r
        cseg\r
 ?co:                           ; character input\r
-       b0call  _co\r
+       b0hlcall _co\r
        ret\r
 \r
        dseg\r
@@ -141,7 +141,7 @@ _co:                                ; character output
 \r
        cseg\r
 ?cost:                         ; character input\r
-       b0call  _cost\r
+       b0hlcall _cost\r
        ret\r
 \r
        dseg\r
index fe1b1f5ad37fe99fbc8cbe8f154b27ecb6c60128..26158e45b38a77a79bd276b7eb83071c46ef7a87 100644 (file)
@@ -212,9 +212,9 @@ inidate     macro
 \r
 ;-----------------------------------------------------\r
 \r
-b0call macro   address\r
-       call    _b0call\r
-       dw      address\r
+b0hlcall macro address\r
+       ld      hl,address\r
+       call    _b0hlcall\r
        endm\r
 \r
 ;-----------------------------------------------------\r
index 0c3fc363a3c782517ca0b4688b349ea1971131ad..57f192bd85158eb547b51e5ab3012a8fafc2af70 100644 (file)
@@ -220,114 +220,14 @@ phy2log:
 ; Trampoline for routines in banked ram.\r
 ; Switch stack pointer to "system" stack in top ram\r
 ; Save cbar\r
+;\r
+; HL: function pointer\r
 ;\r
        cseg    ; common!\r
 \r
-       public  _b0call\r
-\r
-   if 0\r
-\r
-_b0call:\r
-       push    af\r
-       in0     a,(bbr)\r
-       jr      nz,b0c_doit\r
-       pop     af\r
-\r
-       ex      (sp),hl                 ;16\r
-       push    de\r
-       ld      e,(hl)\r
-       inc     hl\r
-       ld      d,(hl)\r
-       inc     hl\r
-       ld      (b0c_fast_go),de\r
-       pop     de\r
-       ex      (sp),hl                 ;16\r
-b0c_fast_go equ        $+1\r
-       jp      0\r
-\r
-b0c_doit:\r
-       ld      (b0_save_hl),hl\r
-       ld      (b0_save_de),de\r
-       pop     hl\r
-       ld      (b0_save_af),hl\r
-\r
-       pop     de                      ;get ptr to 'function address' in de\r
-       ld      hl,2\r
-       add     hl,de\r
-       push    hl                      ;put return address on stack\r
-\r
-   if 0 ; link80\r
-\r
-       ld      hl,0\r
-       add     hl,sp                   ;\r
-       ld      a,h\r
-       cp      high (bs$stack-bs$stack$size) ;link80 can't process this\r
-       jr      nc,$ + 5                ;skip if stack allready in common bios ram\r
-\r
-   else\r
-\r
-       ld      hl,bs$stack-bs$stack$size\r
-       ld      a,h\r
-       dec     a\r
-       ld      hl,0\r
-       add     hl,sp                   ;\r
-       cp      h\r
-       jr      c,$ + 5                 ;skip if stack allready in common bios ram\r
-   endif\r
-       ld      sp,bs$stack             ;\r
-\r
-       push    hl                      ;save   user stack pointer\r
-\r
-       in0     h,(bbr)                 ;\r
-       push    hl                      ;\r
-       ld      hl,b0c_ret\r
-       push    hl\r
-       xor     a\r
-       out0    (bbr),a                 ;\r
-       ex      de,hl                   ;ptr\r
-       ld      e,(hl)                  ;get 'function address'\r
-       inc     hl                      ;\r
-       ld      d,(hl)                  ;\r
-       push    de                      ;put on (switched) stack\r
-\r
-       ld      hl,(b0_save_af)         ;get back users registers\r
-       push    hl\r
-       pop     af\r
-       ld      de,(b0_save_de)\r
-       ld      hl,(b0_save_hl)\r
-       ret                             ;go to function\r
-b0c_ret:\r
-       ld      (b0_save_hl),hl\r
-\r
-       pop     hl                      ;\r
-       out0    (bbr),h                 ;\r
-       pop     hl                      ;\r
-       ld      sp,hl                   ;\r
-       ld      hl,(b0_save_hl)\r
-       ret                             ;\r
-   else\r
-\r
-_b0call:\r
-       push    af\r
-       ld      (b0_save_hl),hl\r
-       ld      (b0_save_de),de\r
-       pop     hl\r
-       ld      (b0_save_af),hl\r
-\r
-       pop     de                      ;get ptr to 'function address' in de\r
-       ld      hl,2\r
-       add     hl,de\r
-       push    hl                      ;put return address on stack\r
-\r
-   if 0 ; link80\r
-\r
-       ld      hl,0\r
-       add     hl,sp                   ;\r
-       ld      a,h\r
-       cp      high (bs$stack-bs$stack$size) ;link80 can't process this\r
-       jr      nc,$ + 5                ;skip if stack allready in common bios ram\r
-\r
-   else\r
+       public  _b0hlcall\r
+_b0hlcall:\r
+       ld      (b0_save_r),hl\r
 \r
        ld      hl,bs$stack-bs$stack$size\r
        ld      a,h\r
@@ -336,44 +236,30 @@ _b0call:
        add     hl,sp                   ;\r
        cp      h\r
        jr      c,$ + 5                 ;skip if stack allready in common bios ram\r
-   endif\r
        ld      sp,bs$stack             ;\r
 \r
        push    hl                      ;save   user stack pointer\r
 \r
        in0     h,(bbr)                 ;\r
        push    hl                      ;\r
-       ld      hl,b0c_ret\r
+       ld      hl,b0hlc_ret\r
        push    hl\r
        xor     a\r
        out0    (bbr),a                 ;\r
-       ex      de,hl                   ;ptr\r
-       ld      e,(hl)                  ;get 'function address'\r
-       inc     hl                      ;\r
-       ld      d,(hl)                  ;\r
-       push    de                      ;put on (switched) stack\r
-\r
-       ld      hl,(b0_save_af)         ;get back users registers\r
-       push    hl\r
-       pop     af\r
-       ld      de,(b0_save_de)\r
-       ld      hl,(b0_save_hl)\r
-       ret                             ;go to function\r
-b0c_ret:\r
-       ld      (b0_save_hl),hl\r
+       ld      hl,(b0_save_r)\r
+       jp      (hl)\r
+b0hlc_ret:\r
+       ld      (b0_save_r),hl\r
 \r
        pop     hl                      ;\r
        out0    (bbr),h                 ;\r
        pop     hl                      ;\r
        ld      sp,hl                   ;\r
-       ld      hl,(b0_save_hl)\r
+       ld      hl,(b0_save_r)\r
        ret                             ;\r
-   endif\r
 \r
-b0_save_hl: dw 0\r
-b0_save_de: dw 0\r
-b0_save_af: dw 0\r
 \r
+b0_save_r: dw  0\r
 \r
 ;--------------------------------------------------------------------\r
 ; Trampoline for interrupt routines in banked ram.\r
index 6b489e0eaa1f78402eb75ebfe4ee32567e96b287..67fae73420afeea69130f4bdd800cafe57aa1dd4 100644 (file)
@@ -8,7 +8,7 @@
        extrn   f_cpu\r
        extrn   ioiniml,div32_16\r
        extrn   msg.sm,msg.recv\r
-       extrn   _b0call\r
+       extrn   _b0hlcall\r
 \r
        maclib z180reg.inc\r
        maclib config.inc\r
@@ -30,7 +30,7 @@
 \r
        dec     c\r
 time_set:\r
-       b0call  gs_rtc\r
+       b0hlcall gs_rtc\r
        ld      a,0ffh\r
        ld      (time_to),a\r
        ret\r