13 ;
.globl _ser_putchar_irq
16 ;; put as
abs in dat at end of file.
.
17 ;
.globl _ser_irq_flags
20 ;
.globl _xget_byte_asm
21 ;
.globl _xset_byte_asm
24 ;; for interrupts the pc
and af are pushed on the stack
26 ;
.globl _irq_info_swi
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
33 ;
.globl _irq_info_int1
34 ;
.globl _irq_info_intt5
39 ;; NOTE
: header might get trashed by linker when code loc ist
not used
!?
230 ld sp
, #0x0FFA0 ; stack
232 call ___sdcc_external_startup
239 ;
or (P01CR
), #0x04 ;
242 ;
ld (P3CR
), #0xA5 ; P30 = RXD, P31 = IN:PaperOut CN3, P32 = TXD, P33 = OUT:CN2.LF P34:IN, P37:IN
245 ;
ld (P4CR
), #0x03 ; address output
257 ;
ld (SCMOD
), #0x03 ; 9600
258 ;
ld (SCMOD
), #0x01 ; 19200
259 ;
or (SCMOD
), #0x08 ; 8-bit data
260 ;
or (SCMOD
), #0x20 ; receiver enable
265 ;
ld (TRUN
), #0x20 ; PRRUN, start prescaler
266 ;
or (TRUN
), #0xE0 ; BRATE, 19200 baud
276 ; res TX_ACTIVE
,(_ser_irq_flags
)
283 ;; Initialise global variables. Skip if __sdcc_external_startup returned
284 ;; non-zero value. Note
: calling convention version
0 only.
298 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
302 ;; get far byte using by
328 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
333 ;; set RX_READY
, (_ser_irq_flags
)
336 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
339 ;; res TX_ACTIVE
,(_ser_irq_flags
)
340 ;;
ld (IRFH
), #0x0F ; clear tx request flag (vector 0x78/8 = 0x0F)
343 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
348 ;;
ld (_swi_pc
), hl ; pc
350 ;;
ld (_swi_af
), hl ; af
351 ;; call _irq_info_swi
355 ;; call _irq_info_intwd
358 ;; call _irq_info_intt0
361 ;; ;call _irq_info_intt1
364 ;; ; hangs when exx is used?
367 ;; ; hangs when exx is used?
368 ;; ;;
ld hl
, (_ticks16
)
370 ;; ;;
ld (_ticks16
), hl
378 ;; call _irq_info_intt3
381 ;; call _irq_info_intt4
384 ;; call _irq_info_int1
387 ;; call _irq_info_intt5
390 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
399 ;; ;; check tx active flag
400 ;; bit TX_ACTIVE
,(_ser_irq_flags
)
404 ;; bit
0,(IRFH
) ; check irq
410 ;; call _wd_reset_asm
411 ;; jr loop1 ; loop
, wait for irq
415 ;;
ld (IRFH
),#0x0F ; clear tx request flag (vector 0x78/8 = 0x0F)
416 ;;
ld (SCBUF
),a ; send
417 ;; set TX_ACTIVE
,(_ser_irq_flags
) ; tx active.
.
421 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
431 ;; call _ser_putchar_asm
435 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
438 ld (WDMOD
), #0x00 ; wd disable code
439 ld (WDCR
), #0xB1 ; wd disable code
443 ld (WDCR
), #0x4E ; wd clear code
446 ; STAR ASIC?
Not needed.
.
466 ;; Ordering of segments for the linker.
484 ; Default-initialized global variables.
500 ; Explicitly initialized global variables.
501 ld bc, #l__INITIALIZER
505 ld de
, #s__INITIALIZED
506 ld hl
, #s__INITIALIZER
516 _ser_irq_flags
= 0xffbf