13 .globl _ser_putchar_irq
16 ;; put as
abs in dat at end of file.
.
17 ;
.globl _ser_irq_flags
24 ;; for interrupts the pc
and af are pushed on the stack
27 .globl _irq_info_intwd
28 .globl _irq_info_intt0
29 .globl _irq_info_intt1
31 .globl _irq_info_intt3
32 .globl _irq_info_intt4
34 .globl _irq_info_intt5
39 ;; NOTE
: header might get trashed by linker when code loc ist
not used
!?
190 ld sp
, #0x0FFA0 ; stack
198 ld (P3CR
), #0xA5 ; P30 = RXD, P31 = IN:PaperOut CN3, P32 = TXD, P33 = OUT:CN2.LF P34:IN, P37:IN
201 ld (P4CR
), #0x03 ; address output
213 ;
ld (SCMOD
), #0x03 ; 9600
214 ld (SCMOD
), #0x01 ; 19200
215 or (SCMOD
), #0x08 ; 8-bit data
216 or (SCMOD
), #0x20 ; receiver enable
221 ld (TRUN
), #0x20 ; PRRUN, start prescaler
222 or (TRUN
), #0xE0 ; BRATE, 19200 baud
230 ld hl
, #0xFF20 ; data start
238 cp hl
, #0xFFC0 ; io start, 160 bytes data
243 res TX_ACTIVE
,(_ser_irq_flags
)
250 ;; Initialise global variables
261 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
265 ;; get far byte using by
291 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
296 set RX_READY
, (_ser_irq_flags
)
299 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
302 res TX_ACTIVE
,(_ser_irq_flags
)
303 ld (IRFH
), #0x0F ; clear tx request flag (vector 0x78/8 = 0x0F)
306 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
311 ld (_swi_pc
), hl ; pc
313 ld (_swi_af
), hl ; af
324 ;call _irq_info_intt1
327 ; hangs when exx is used?
330 ; hangs when exx is used?
353 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
362 ;; check tx active flag
363 bit TX_ACTIVE
,(_ser_irq_flags
)
367 bit
0,(IRFH
) ; check irq
374 jr loop1 ; loop
, wait for irq
378 ld (IRFH
),#0x0F ; clear tx request flag (vector 0x78/8 = 0x0F)
380 set TX_ACTIVE
,(_ser_irq_flags
) ; tx active.
.
384 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
394 call _ser_putchar_asm
398 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
401 ld (WDMOD
), #0x00 ; wd disable code
402 ld (WDCR
), #0xB1 ; wd disable code
406 ld (WDCR
), #0x4E ; wd clear code
409 ; STAR ASIC?
Not needed.
.
429 ;; Ordering of segments for the linker.
446 ld bc, #l__INITIALIZER
450 ld de
, #s__INITIALIZED
451 ld hl
, #s__INITIALIZER
460 _ser_irq_flags
= 0xffbf