\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
\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
; 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
;----------------------------------------------------------------------\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
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
\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
;\r
;out ahl: Phys. (linear) Address\r
\r
+ public hwl2phy\r
\r
hwl2phy:\r
push bc ;\r