summaryrefslogtreecommitdiff
path: root/z180/init.180
diff options
context:
space:
mode:
Diffstat (limited to 'z180/init.180')
-rw-r--r--z180/init.180113
1 files changed, 37 insertions, 76 deletions
diff --git a/z180/init.180 b/z180/init.180
index 4c7bd77..05c24ff 100644
--- a/z180/init.180
+++ b/z180/init.180
@@ -76,7 +76,7 @@ start:
hwini0:
if CPU_Z180
- db 3 ;count
+ db ;count
db rcr,CREFSH ;configure DRAM refresh
db dcntl,INIWAITS ;wait states
db cbr,SYS$CBR
@@ -152,7 +152,7 @@ hw_reset:
kstart:
if CPU_Z180
- ld a,SYS$CBR
+ ld a,SYS$CBR ;TODO:
out0 (cbr),a
ld a,SYS$CBAR
out0 (cbar),a
@@ -192,8 +192,8 @@ wstart:
; call prt0_init
endif
+ call msginit
call charini
- call bufferinit
if CPU_Z80
ld a,0
@@ -228,86 +228,66 @@ syscbr: db 0
;----------------------------------------------------------------------
;
- global buf.init
+ global bufinit
-buf.init:
- ld (ix+o.in_idx),0
+bufinit:
+ ld (ix+o.in_idx),0 ;reset pointers (empty fifo)
ld (ix+o.out_idx),0
-
ld a,(ix+o.id)
- cp 4
- ret nc
-
- push de
- push hl
- ld hl,fifo_list
- push hl ;save fifo_list
+ ld hl,fifolst
ld e,a
ld d,0
add hl,de
add hl,de
push ix
pop de
+ cp 4
+ jr nc,bfi_skip
+
ld (hl),e
inc hl
ld (hl),d
- pop hl ;get fifo_list back
- or a
- jr nz,bufi_ex
- ld (040h),hl
- ld (040h+2),a
-bufi_ex:
- pop hl
- pop de
+bfi_skip:
+ ex de,hl
+ call hwl2phy ;get phys. address of fifo
+ ld c,a
+ ld a,(ix+o.id) ;fifo id
+ or a ;test if fifo 0
+ ret z
+ ld b,a
+ push bc ;c: bank-addr, b: ignored
+ push hl ;address
+ ld c,0
+ push bc ;c: function, b:subf
+ ld b,5
+ ld h,c
+ ld l,c
+ add hl,sp
+ call msg.sm
+ pop hl
+ pop hl
+ pop hl
ret
-
-fifo_list:
+ public fifolst
+fifolst :
rept 4
dw 0
endm
;----------------------------------------------------------------------
+ extrn msg.sm
extrn msginit,msg.sout
extrn mtx.fifo,mrx.fifo
- extrn co.fifo,ci.fifo
+ extrn ff.init,co.fifo,ci.fifo
-bufferinit:
+fifoinit:
if CPU_Z180
- call msginit
-
- ld hl,buffers
- ld b,buftablen
-bfi_1:
- ld a,(hl)
- inc hl
- ld (bufdat+0),a
- ld e,(hl)
- inc hl
- ld d,(hl)
- inc hl
- ex de,hl
- or a
- jr nz,bfi_2
-; call hwl2phy
-; ld (40h+0),hl
-; ld (40h+2),a
- out (AVRINT5),a
- jr bfi_3
-bfi_2:
- call hwl2phy
- ld (bufdat+1),hl
- ld (bufdat+3),a
- ld hl,inimsg
- call msg.sout
-bfi_3:
- ex de,hl
- djnz bfi_1
ret
else ;CPU_Z180
@@ -351,27 +331,7 @@ bfi_3:
ret
endif
-buffers:
- db 0
- dw mtx.fifo
- db 1
- dw mrx.fifo
- db 2
- dw ci.fifo
- db 3
- dw co.fifo
-buftablen equ ($ - buffers)/3
-
-inimsg:
- db inimsg_e - $ -1
- db 0AEh
- db inimsg_e - $ -1
- db 0
-bufdat:
- db 0
- dw 0
- db 0
-inimsg_e:
+
;
@@ -612,6 +572,7 @@ l2p_i:
;
;out ahl: Phys. (linear) Address
+ public hwl2phy
hwl2phy:
push bc ;