]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - z180/init.180
env.c needs getopt-min.h
[z180-stamp.git] / z180 / init.180
index b0b4b21f681a8898fe84ae737304a326fda91f4a..05c24ff592370f8e14488211d251ccd4a9cf3cef 100644 (file)
@@ -76,7 +76,7 @@ start:
 \r
 hwini0:\r
     if CPU_Z180\r
-       db      3               ;count\r
+       db                      ;count\r
        db      rcr,CREFSH      ;configure DRAM refresh\r
        db      dcntl,INIWAITS  ;wait states\r
        db      cbr,SYS$CBR\r
@@ -152,7 +152,7 @@ hw_reset:
 \r
 kstart:\r
     if CPU_Z180\r
-       ld      a,SYS$CBR\r
+       ld      a,SYS$CBR       ;TODO:\r
        out0    (cbr),a\r
        ld      a,SYS$CBAR\r
        out0    (cbar),a\r
@@ -192,8 +192,8 @@ wstart:
 ;      call    prt0_init\r
     endif\r
 \r
+       call    msginit\r
        call    charini\r
-       call    bufferinit\r
 \r
     if CPU_Z80\r
        ld      a,0\r
@@ -228,90 +228,66 @@ syscbr:   db      0
 ;----------------------------------------------------------------------\r
 ;\r
 \r
-       global  buf.init\r
+       global  bufinit\r
 \r
-buf.init:\r
-       ld      (ix+o.in_idx),0\r
+bufinit:\r
+       ld      (ix+o.in_idx),0         ;reset pointers (empty fifo)\r
        ld      (ix+o.out_idx),0\r
-       ld      (ix+o.mask),a\r
-\r
        ld      a,(ix+o.id)\r
-       cp      4\r
-       ret     nc\r
-\r
-       push    de\r
-       push    hl\r
-       ld      hl,fifo_list\r
-       push    hl              ;save fifo_list\r
+       ld      hl,fifolst\r
        ld      e,a\r
        ld      d,0\r
        add     hl,de\r
        add     hl,de\r
-       add     hl,de\r
        push    ix\r
        pop     de\r
-; TODO: address translation\r
+       cp      4\r
+       jr      nc,bfi_skip\r
+\r
        ld      (hl),e\r
        inc     hl\r
        ld      (hl),d\r
-       pop     hl              ;get fifo_list back\r
-       or      a\r
-       jr      nz,bufi_ex\r
 \r
-       ld      (040h),hl\r
-       ld      (040h+2),a\r
-bufi_ex:\r
-       pop     hl\r
-       pop     de\r
+bfi_skip:\r
+       ex      de,hl\r
+       call    hwl2phy                 ;get phys. address of fifo\r
+       ld      c,a\r
+       ld      a,(ix+o.id)             ;fifo id\r
+       or      a                       ;test if fifo 0\r
+       ret     z\r
 \r
+       ld      b,a\r
+       push    bc                      ;c: bank-addr, b: ignored\r
+       push    hl                      ;address\r
+       ld      c,0\r
+       push    bc                      ;c: function, b:subf\r
+       ld      b,5\r
+       ld      h,c\r
+       ld      l,c\r
+       add     hl,sp\r
+       call    msg.sm\r
+       pop     hl\r
+       pop     hl\r
+       pop     hl\r
        ret\r
 \r
-\r
-fifo_list:\r
+       public  fifolst\r
+fifolst :\r
        rept 4\r
         dw     0\r
-        db     0\r
        endm\r
 \r
 ;----------------------------------------------------------------------\r
 \r
+       extrn   msg.sm\r
        extrn   msginit,msg.sout\r
        extrn   mtx.fifo,mrx.fifo\r
-       extrn   co.fifo,ci.fifo\r
+       extrn   ff.init,co.fifo,ci.fifo\r
 \r
 \r
-bufferinit:\r
+fifoinit:\r
     if CPU_Z180\r
-       call    msginit\r
-\r
-       ld      hl,buffers\r
-       ld      b,buftablen\r
-bfi_1:\r
-       ld      a,(hl)\r
-       inc     hl\r
-       ld      (bufdat+0),a\r
-       ld      e,(hl)\r
-       inc     hl\r
-       ld      d,(hl)\r
-       inc     hl\r
-       ex      de,hl\r
 \r
-       or      a\r
-       jr      nz,bfi_2\r
-;      call    hwl2phy\r
-;      ld      (40h+0),hl\r
-;      ld      (40h+2),a\r
-       out     (AVRINT5),a\r
-       jr      bfi_3\r
-bfi_2:\r
-       call    hwl2phy\r
-       ld      (bufdat+1),hl\r
-       ld      (bufdat+3),a\r
-       ld      hl,inimsg\r
-       call    msg.sout\r
-bfi_3:\r
-       ex      de,hl\r
-       djnz    bfi_1\r
        ret\r
 \r
     else ;CPU_Z180\r
@@ -355,27 +331,7 @@ bfi_3:
        ret\r
     endif\r
 \r
-buffers:\r
-       db      0\r
-       dw      mtx.fifo\r
-       db      1\r
-       dw      mrx.fifo\r
-       db      2\r
-       dw      ci.fifo\r
-       db      3\r
-       dw      co.fifo\r
-buftablen equ  ($ - buffers)/3\r
-\r
-inimsg:\r
-       db      inimsg_e - $ -1\r
-       db      0AEh\r
-       db      inimsg_e - $ -1\r
-       db      0\r
-bufdat:\r
-       db      0\r
-       dw      0\r
-       db      0\r
-inimsg_e:\r
+\r
 \r
 \r
 ;\r
@@ -416,6 +372,12 @@ ivt_i1:
 \r
 ;----------------------------------------------------------------------\r
 \r
+; Reload value for 10 ms Int. (0.1KHz):\r
+; tc10ms = phi/prescale/0.1KHz  = phi / (prescale/10)\r
+\r
+PRT_TC10MS     equ     18432 / (PRT_PRE/10)\r
+\r
+\r
     if CPU_Z180\r
 prt0_init:\r
        ld      a,i\r
@@ -610,6 +572,7 @@ l2p_i:
 ;\r
 ;out ahl: Phys. (linear) Address\r
 \r
+       public  hwl2phy\r
 \r
 hwl2phy:\r
        push    bc              ;\r