\r
extrn ddtz,bpent\r
extrn $stack\r
- extrn $coninit,$cists,$ci\r
+ extrn charini,?const,?conin\r
\r
extrn romend\r
\r
;----------------------------------------------------------------------\r
\r
start:\r
- push af ;003c\r
- in0 a,(itc) ;003d Illegal opcode trap?\r
- jp p,??st01 ;0040\r
- pop af ;0043\r
- jp bpent ;0044 yes, handle\r
+ ld (tmpstack),sp\r
+ ld sp,tmpstack\r
+ push af\r
+ in0 a,(itc) ;Illegal opcode trap?\r
+ jp m,??st01\r
+ ld a,i ;I register == 0 ?\r
+ jr z,??st02 ; yes, harware reset\r
\r
??st01:\r
- ld a,i ;0047 I register == 0 ?\r
- jr z,??st02 ;004b yes, harware reset\r
- pop af ;004d\r
- jp bpent ;004e no, allready set up\r
+ ld a,(syscbr)\r
+ out0 (cbr),a\r
+ pop af ;restore registers\r
+ ld sp,(tmpstack) ;\r
+ jp bpent ;\r
\r
??st02:\r
di ;0058\r
\r
ld a,M_NCD ;No Clock Divide\r
out0 (ccr),a\r
- ld a,M_X2CM ;X2 Clock Multiplier\r
- out0 (cmr),a\r
+; ld a,M_X2CM ;X2 Clock Multiplier\r
+; out0 (cmr),a\r
\r
; search warm start mark\r
\r
\r
alloc:\r
out0 (cbr),c ;01de\r
+ ld a,c\r
+ ld (syscbr),a\r
ld sp,$stack ;01e1\r
\r
; Clear RAM using DMA0\r
\r
call prt0_init\r
\r
+ call charini\r
\r
-;;; call bufferinit\r
-\r
-\r
- call $coninit\r
-\r
+ call bufferinit\r
\r
\r
\r
im 2 ;?030e\r
ei ;0282\r
\r
- call $cists ;0284\r
- call $cists ;0287\r
+ call ?const ;0284\r
+ call ?const ;0287\r
or a ;028a\r
- call nz,$ci ;028d\r
+ call nz,?conin ;028d\r
\r
ld a,(banktab) ;\r
ld e,a ;\r
jp ddtz ;0290\r
\r
\r
+ ds 8\r
+tmpstack:\r
+ dw 2\r
+syscbr: db 1\r
+\r
;\r
;----------------------------------------------------------------------\r
;\r
\r
;----------------------------------------------------------------------\r
if 0\r
- extrn msginit,msg.sout,msg_fifo\r
- extrn tx.buf,rx.buf\r
-\r
+ extrn msginit,msg_tx_fifo,msg_rx_fifo\r
+ extrn msg.sout\r
\r
bufferinit:\r
- call msginit\r
\r
- ld hl,buffers\r
- ld bc,0300h\r
-bfi_1:\r
- ld e,(hl)\r
- inc hl\r
- ld d,(hl)\r
- inc hl\r
- push hl\r
+ ld de,msg_tx_fifo\r
in0 a,cbr\r
call log2phys\r
ld (40h+0),hl\r
ld (40h+2),a\r
- ld a,c\r
+\r
+; ld (bufdat+1),hl\r
+; ld (bufdat+3),a\r
+; ld a,1\r
+; ld (bufdat+0),a\r
+; ld hl,inimsg\r
+; call msg.sout\r
+\r
+ ld de,msg_rx_fifo\r
+ in0 a,cbr\r
+ call log2phys\r
+ ld (bufdat+1),hl\r
+ ld (bufdat+3),a\r
+ ld a,2\r
ld (bufdat+0),a\r
ld hl,inimsg\r
call msg.sout\r
- pop hl\r
- inc c\r
- djnz bfi_1\r
- ret\r
\r
- rept 20\r
- db 0\r
- endm\r
-\r
-buffers:\r
- dw msg_fifo\r
- dw tx.buf\r
- dw rx.buf\r
+ ret\r
\r
inimsg:\r
- db inimsg_e - $ -2\r
- db PMSG\r
- db 81h\r
- db inimsg_e - $ -1\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
endif\r
;----------------------------------------------------------------------\r
;\r
-if 0\r
\r
- extrn msginit,msg.sout,msg_fifo\r
- extrn tx.buf,rx.buf\r
+ extrn msginit,msg.sout\r
+ extrn mtx.fifo,mrx.fifo\r
+ extrn co.fifo,ci.fifo\r
\r
\r
bufferinit:\r
call msginit\r
\r
ld hl,buffers\r
- ld bc,0300h\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
push hl\r
+\r
+ or a\r
+ jr nz,bfi_2\r
+ in0 a,cbr\r
+ call log2phys\r
+ ld (40h+0),hl\r
+ ld (40h+2),a\r
+ out0 (AVRINT5),a\r
+ jr bfi_3 \r
+bfi_2:\r
in0 a,cbr\r
call log2phys\r
ld (bufdat+1),hl\r
ld (bufdat+3),a\r
- ld a,c\r
- ld (bufdat+0),a\r
ld hl,inimsg\r
call msg.sout\r
+bfi_3:\r
pop hl\r
- inc c\r
djnz bfi_1\r
ret\r
\r
- rept 20\r
- db 0\r
- endm\r
-\r
buffers:\r
- dw msg_fifo\r
- dw tx.buf\r
- dw rx.buf\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 - $ -2\r
- db PMSG\r
- db 81h\r
+ db inimsg_e - $ -1\r
+ db 0AEh\r
db inimsg_e - $ -1\r
db 0\r
bufdat:\r
db 0\r
inimsg_e:\r
\r
-endif\r
\r
;\r
;----------------------------------------------------------------------\r