]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/commitdiff
New stack(s)
authorLeo C <erbl259-lmu@yahoo.de>
Wed, 29 Jun 2016 14:37:47 +0000 (16:37 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Wed, 29 Jun 2016 14:37:47 +0000 (16:37 +0200)
boot$stack: Used by boot and wboot (new)
bs$stack: Used by (char) bios functions that switch to bank 0, and now also for seldsk/read/write.
i$stack (formerly istack): Now global and used by *all* interrupt routines.

cbios/Makefile
cbios/bioskrnl.180
cbios/mm.180
cbios/time.180

index 0b21a4a6b8de31bc88d5d1f41d40591d73404954..76fc0ad69ebf12d4a469ea017cdfd48c1b3b5919 100644 (file)
@@ -1,9 +1,9 @@
 
 
-SRC := bioskrnl.180 boot.180 stampf.180 chario.180 drvtbl.180
-SRC += move.180 time.180 mm.180 misc.180 utils.180 fifo.180
+SRC := bioskrnl.180 boot.180 chario.180
 SRC += msgbuf.180 conbuf.180 ascii.180
-SRC += sdio.180 cfio.180
+SRC += drvtbl.180 sdio.180 cfio.180 stampf.180
+SRC += move.180 time.180 fifo.180 utils.180 misc.180 mm.180
 SRC += scb.180
 ALLSRC := $(SRC) ldrbios.180
 
index 339a7599989c7fbe97ecda7d194d3f4c2a18952a..794e0ff4f1f191c0ccd5825233a4c0568ecae7c1 100644 (file)
@@ -78,7 +78,8 @@ ccp   equ     0100h           ; Console Command Processor gets loaded
        public ?conos,?auxis,?auxos,?dvtbl,?devin,?drtbl\r
        public ?mltio,?flush,?mov,?tim,?bnksl,?stbnk,?xmov\r
 \r
-       public bs$stack\r
+       extrn bs$stack\r
+       extrn _b0call\r
 \r
 \r
     ; BIOS Jump vector.\r
@@ -130,6 +131,12 @@ ccp        equ     0100h           ; Console Command Processor gets loaded
 ?ioctl jp      ioctl           ;\r
 \r
 \r
+       rept    48\r
+        db     '|'\r
+       endm\r
+boot$stack:\r
+\r
+\r
        ; BOOT\r
        ;       Initial entry point for system startup.\r
 \r
@@ -140,7 +147,7 @@ boot:
        out0    (cbr),a\r
        ld      a,USR$CBAR\r
        out0    (cbar),a\r
-       ld      sp,bs$stack\r
+       ld      sp,boot$stack\r
 \r
        call    hwinit          ; first time hardware initialisation\r
 \r
@@ -193,7 +200,7 @@ boot$1:
        ;       Entry for system restarts.\r
 \r
 wboot:\r
-       ld      sp,bs$stack\r
+       ld      sp,boot$stack\r
        call    set$jumps       ; initialize page zero\r
        call    ?rlccp          ; reload CCP\r
        jp      ccp             ; then reset jmp vectors and exit to ccp\r
@@ -216,9 +223,6 @@ set$jumps:
        ret\r
 \r
 \r
-       ds bs$stack$size\r
-bs$stack       equ $\r
-\r
 \r
        ; DEVTBL\r
        ;       Return address of character device table\r
@@ -450,6 +454,10 @@ bnksel:
        ;               in <HL>\r
 \r
 seldsk:\r
+       b0call  _seldsk\r
+       ret\r
+\r
+_seldsk:\r
        ld      a,c             ; save drive select code\r
        ld      (@adrv),a\r
        xor     a\r
@@ -558,6 +566,10 @@ sectrn:
        ;               extended disk parameter header (XDPH).\r
 \r
 read:\r
+       b0call  _read\r
+       ret\r
+\r
+_read:\r
        ld      a,1\r
        ld      (@op),a\r
        ld      ix,(@xdph)      ; get drive descriptor pointer\r
@@ -572,6 +584,10 @@ read:
        ;               extended disk parameter header (XDPH).\r
 \r
 write:\r
+       b0call  _write\r
+       ret\r
+\r
+_write:\r
        ld      a,2\r
        ld      (@op),a\r
        ld      ix,(@xdph)      ; get drive descriptor pointer\r
@@ -616,5 +632,4 @@ flush:
 \r
 @cbnk: db      0               ; bank for processor operations\r
 \r
-\r
        end\r
index 4128fe9702a74df8e43cfb4273d36e7c089468f7..d1f472c8778ed1e1c5bf9190780b562f99a2acc1 100644 (file)
@@ -221,8 +221,6 @@ phy2log:
 ; Switch stack pointer to "system" stack in top ram\r
 ; Save cbar\r
 ;\r
-       extrn   bs$stack\r
-\r
        cseg    ; common!\r
 \r
        public  _b0call\r
@@ -446,8 +444,8 @@ isv_sw:                                     ;
 isv_sw:                                        ;\r
        ex      (sp),hl                 ;save hl, 'return adr' in hl\r
 \r
-       ld      (istack),sp             ;save user stack pointer\r
-       ld      sp,istack\r
+       ld      (i$stack),sp            ;save user stack pointer\r
+       ld      sp,i$stack\r
        push    de                      ;\r
        push    bc                      ;\r
        push    af                      ;\r
@@ -466,14 +464,18 @@ isv_sw:                                   ;
        pop     af                      ;\r
        pop     bc                      ;\r
        pop     de                      ;\r
-       ld      sp,(istack)             ;\r
+       ld      sp,(i$stack)            ;\r
        pop     hl                      ;\r
        ei                              ;\r
        ret                             ;\r
 \r
    endif\r
-       ds      24\r
-istack:\r
+\r
+       public  i$stack\r
+       rept    24\r
+        db     '|'\r
+       endm\r
+i$stack:\r
        dw      0\r
 \r
        dseg\r
@@ -636,4 +638,12 @@ bnk2bbr:
   endif\r
 \r
 \r
+       cseg\r
+       public  bs$stack\r
+\r
+       rept bs$stack$size\r
+        db     '|'\r
+       endm\r
+bs$stack:\r
+\r
        end\r
index 24f92eff7bd8d31f051fb6ea2df5e0234eabdd2c..36e5d6b00d8e02bafbaf6578fb2e21ad7daf2d58 100644 (file)
@@ -169,42 +169,47 @@ prt0ini:
 ;\r
 ;    1,25 ms clock tick\r
 \r
+       extrn   i$stack\r
 \r
        cseg    ;common!\r
 isvprt0:                       ;\r
+       ld      (i$stack),sp    ;               +       19\r
+       ld      sp,i$stack      ;               +        9\r
+\r
        push    af              ;                       11\r
        in0     a,(tcr)         ;reset TIF0 flag        12\r
        in0     a,(tmdr0l)      ;                       12\r
        in0     a,(tmdr0h)      ;                       12\r
                                ;\r
-\r
-       push    hl                      ;11\r
-       ld      hl,uptime               ; 9\r
-       inc     (hl)            ;                       10      77\r
-       jr      nz,iprt_1       ;                       6/8             -2\r
-       inc     hl                      ; 4\r
+       push    hl              ;                       11\r
+       ld      hl,time_to      ;                        9\r
+       ld      a,(hl)          ;                        6\r
+       sub     a,1             ;                        6       79\r
+       jr      c,iprt_0        ;                       6/8\r
+       ld      (hl),a          ;                        7\r
+iprt_0:                                ;                                87      92\r
+       inc     hl              ;                        4\r
+       inc     (hl)            ;                       10      101\r
+       jr      nz,iprt_1       ;                       6/8     109     -2\r
+       inc     hl              ;                        4\r
        inc     (hl)            ;                       10              14\r
        jr      nz,iprt_1       ;                       6/8\r
-       inc     hl                      ; 4\r
-       inc     (hl)                    ;10\r
-       jr      nz,iprt_1               ;6/8\r
-       inc     hl                      ; 4\r
-       inc     (hl)                    ;10\r
-iprt_1:                        ;                               85      138\r
-       pop     hl                      ; 9\r
-       ld      a,(time_to)     ;                       12\r
-       sub     a,1             ;                        6      112\r
-       jr      c,iprt_0        ;                       6/8\r
-       ld      (time_to),a     ;                       13\r
-iprt_0:                                ;                               120     178\r
+       inc     hl              ;                        4\r
+       inc     (hl)            ;                       10\r
+       jr      nz,iprt_1       ;                       6/8\r
+       inc     hl              ;                        4\r
+       inc     (hl)            ;                       10\r
+iprt_1:                        ;                               109     138\r
+       pop     hl              ;                        9\r
        pop     af              ;                        9\r
+       ld      sp,(i$stack)    ;               +       18\r
        ei                      ;                        3\r
-       ret                     ;                        9      141     199\r
-                               ;               +intack 18      159     217\r
+       ret                     ;                        9      139     199\r
+                               ;               +intack 18      157     217\r
 \r
-uptime:\r
-       dw      0,0\r
 time_to:\r
        db      0\r
+uptime:\r
+       dw      0,0\r
 \r
        end\r