]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - z180/init.180
command printenv: new option -s: Print env variables in setenv commands.
[z180-stamp.git] / z180 / init.180
index f43aaeb9eaab90bf2371e17cdf93def37165867c..05c24ff592370f8e14488211d251ccd4a9cf3cef 100644 (file)
@@ -76,9 +76,10 @@ 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
        db      cbar,SYS$CBAR\r
     endif\r
        db     0\r
@@ -151,10 +152,10 @@ hw_reset:
 \r
 kstart:\r
     if CPU_Z180\r
+       ld      a,SYS$CBR       ;TODO:\r
+       out0    (cbr),a\r
        ld      a,SYS$CBAR\r
        out0    (cbar),a\r
-       ld      a,SYS$CBR\r
-       out0    (cbr),a\r
     endif\r
 \r
        ld      sp,$stack       ;01e1\r
@@ -163,7 +164,7 @@ kstart:
 \r
     if CPU_Z180\r
      if 0\r
-       \r
+\r
        ld      hl,dmclrt       ;load DMA registers\r
        call    ioiniml\r
        ld      a,0cbh          ;01ef   dst +1, src fixed, burst\r
@@ -174,7 +175,7 @@ kstart:
 ??cl_1:\r
        out0    (dstat),a       ;01f9   clear (up to) 64k\r
        djnz    ??cl_1          ;       end of RAM?\r
-       \r
+\r
      endif\r
     endif\r
 \r
@@ -185,94 +186,108 @@ kstart:
 ;      --  wstart  --\r
 \r
 wstart:\r
-       call    sysram_init     ;027f\r
+       call    sysram_init\r
        call    ivtab_init\r
     if CPU_Z180\r
-       call    prt0_init\r
+;      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
        call    selbnk\r
     endif\r
 \r
-       im 2                    ;?030e\r
-       ei                      ;0282\r
+       ld      a,INIDONEVAL    ;tell others (CP/M) that hardware and fifos\r
+       ld      (INIDONE),a     ;    are allready initialized\r
+\r
+       im 2\r
+       ei\r
 \r
-       call ?const             ;0284\r
-       call ?const             ;0287\r
-       or a                    ;028a\r
-       call nz,?conin          ;028d\r
+       call ?const\r
+       call ?const\r
+       or a\r
+       call nz,?conin\r
 \r
     if CPU_Z180\r
        ld e,0                  ;Sys$Bank\r
     else\r
 ; TODO:\r
     endif\r
-       jp ddtz                 ;0290\r
+       jp ddtz\r
 \r
 \r
     if CPU_Z180\r
 ; TODO: SYS$CBR\r
-syscbr:        db      1\r
+syscbr:        db      0\r
     endif\r
 \r
 ;\r
 ;----------------------------------------------------------------------\r
 ;\r
 \r
-;TODO: Make a ringbuffer module.\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
+       ld      a,(ix+o.id)\r
+       ld      hl,fifolst\r
+       ld      e,a\r
+       ld      d,0\r
+       add     hl,de\r
+       add     hl,de\r
+       push    ix\r
+       pop     de\r
+       cp      4\r
+       jr      nc,bfi_skip\r
+\r
+       ld      (hl),e\r
+       inc     hl\r
+       ld      (hl),d\r
+\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
+       public  fifolst\r
+fifolst :\r
+       rept 4\r
+        dw     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
@@ -316,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      co.fifo\r
-       db      3\r
-       dw      ci.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
@@ -377,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
@@ -426,12 +427,12 @@ ioi_r:
        dec     a\r
        jr      nz,ioi_r\r
        jr      ioi_nxt\r
-ioi_e: \r
+ioi_e:\r
        pop     bc\r
        ret\r
-       \r
+\r
      else ;(if 1/0)\r
-     \r
+\r
        push    bc\r
        jr      ioi_nxt\r
 ioi_l:\r
@@ -449,7 +450,7 @@ ioi_nxt:
        djnz    ioi_l\r
        pop     bc\r
        ret\r
-       \r
+\r
      endif ;(1/0)\r
 \r
     else\r
@@ -484,7 +485,7 @@ ioml_lp:
        inc     hl\r
        cp      b\r
        jr      z,ioml_e\r
-       \r
+\r
        ld      c,(hl)\r
        inc     hl\r
        otimr\r
@@ -571,6 +572,7 @@ l2p_i:
 ;\r
 ;out ahl: Phys. (linear) Address\r
 \r
+       public  hwl2phy\r
 \r
 hwl2phy:\r
        push    bc              ;\r
@@ -909,4 +911,3 @@ mark_55AA equ 0 - 2 - 4             ;2 byte for trap stack
 \r
 \r
        end\r
-\r