X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/ad9bc17c8ecab1f0bbd26f2270d4d396f4bc5e52..c3ce66a888beadf2a6d524101dd009d5acd452ae:/z180/init.180 diff --git a/z180/init.180 b/z180/init.180 index b0b4b21..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,90 +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 (ix+o.mask),a - 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 - add hl,de push ix pop de -; TODO: address translation + 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 - db 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 @@ -355,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: + ; @@ -416,6 +372,12 @@ ivt_i1: ;---------------------------------------------------------------------- +; Reload value for 10 ms Int. (0.1KHz): +; tc10ms = phi/prescale/0.1KHz = phi / (prescale/10) + +PRT_TC10MS equ 18432 / (PRT_PRE/10) + + if CPU_Z180 prt0_init: ld a,i @@ -610,6 +572,7 @@ l2p_i: ; ;out ahl: Phys. (linear) Address + public hwl2phy hwl2phy: push bc ;