; Source Equivalent for ThinkPad Embedded Controller Firmware
; H8S/2161BV Pin Assignments
; 32..25 PE -> keyboard scan matrix outputs
; 50..43 PF -> keyboard scan matrix outputs
; 58..51 PG <- keyboard scan matrix inputs
; 108 P13 -> BJT -> ThinkLight LED
; 3 P44 -> BJT -> IGFET -> fan motor
; 80 P62 <- BJT <- fan tachometer signal
.include "h8s2161.h"
; ThinkPad Type and ID Selection (mutually exclusive)
type1R = 0
type1V = 0
type1Y = -1
type70 = 0
type76 = 0
id = 29
.macro conf type buildid1 typestr buildid2 typeid version level timestamp1 timestamp2 checksum1 checksum2 checksum3 md5=-
.ifndef type\type
type\type = 0 ; assign constant for use of simpler expressions
.elseif type\type \(&&) id == \buildid1
type\type = -1 ; reassign ~0 if !0 for simpler &-expressions
.print "# \type\()HT\buildid1\()WW (version \version)"
.ifnc -, \md5
.print "\md5 -"
.endif
typestr = \typestr
buildid1 = (\buildid1 / 10 + '0) << 8 | (\buildid1 % 10 + '0) ; binary -> ascii
buildid2 = \buildid2
typeid = \typeid
version = \version
level = \level
timestamp1 = \timestamp1
timestamp2 = \timestamp2
checksum1 = \checksum1
checksum2 = \checksum2
checksum3 = \checksum3
.endif
.endm
; Type 1Y: T43/p 2668..2669, 0x2678..2679, 0x2686..2687
conf 1Y 29 0x3159 0x3239 0x4a 0x1060 0x01060000 0xcba4dff 0xcba4dff 0xe27d 0xb3ca 0xf0b3 79d91ad18613acc99e2bfc7486ce1cd4
.macro zero register ; mov #0, register
xor \register, \register
.endm
i = 7 ; CCR Interrupt Mask Bit
c = 0 ; CCR Carry Flag
.macro set bit ; Set CCR Bit
orc #1 << \bit, ccr
.endm
.macro clr bit ; Clear CCR Bit
andc #1 << \bit ^ M8, ccr
.endm
; Relative 16-bit Jump Table for Switch
.macro case index=-1 c0=-1 c1=-1 c2=-1 c3=-1 c4=-1 c5=-1 c6=-1 c7=-1
.if \index > 0 ; Index 0 resets case
.fill \index - .case, 2 ; Use 0 for holes in case range
.endif
.ifnc -1, \index ; Allow ,, to continue index
.case = \index
.endif
.irp case, \c0, \c1, \c2, \c3, \c4, \c5, \c6, \c7
.ifnc -1, \case
.word \case - .
.case = .case + 1
.endif
.endr
.endm
.text ; ROM/Flash Memory
; Exception Handling Vector Table
.org 0 * 4
_reset: .long reset ; Reset Vector
.org 6 * 4 ; Power-Down Modes
_dtrns: .long NULL ; Direct Transition
.org 7 * 4
_nmi: .long rte ; Non-Maskable External Interrupt
_trap0: .long NULL ; Trap Instruction 0
_trap1: .long NULL ; Trap Instruction 1
_trap2: .long NULL ; Trap Instruction 2
_trap3: .long NULL ; Trap Instruction 3
.org 16 * 4 ; Maskable External Interrupts
_irq0: .long irq0 ; External Interrupt Request 0
_irq1: .long rte ; External Interrupt Request 1
_irq2: .long irq2 ; External Interrupt Request 2
_irq3: .long rte ; External Interrupt Request 3
_irq4: .long rte ; External Interrupt Request 4
_irq5: .long rte ; External Interrupt Request 5
_irq6: .long irq6_irq7 ; IRQ6/KIN0..KIN7
_irq7: .long irq6_irq7 ; IRQ7/WUE0..WUE7/KIN8..KIN15
.org 24 * 4 ; Internal Interrupts
_swtend: .long rte ; Software-Activated Data Transfer End
_wovi0: .long rte ; WDT_0 Watchdog Interval Timer
_wovi1: .long wovi1 ; WDT_1 Watchdog Interval Timer
_break: .long rte ; Address Break (Breakpoint)
_adi: .long rte ; A/D Conversion End
.org 48 * 4 ; 16-bit Free Running Timer
_icia: .long icia ; FRT Input Capture A
_icib: .long icib ; FRT Input Capture B
_icic: .long icic ; FRT Input Capture C
_icid: .long rte ; FRT Input Capture D
_ocia: .long ocia ; FRT Output Compare A
_ocib: .long rte ; FRT Output Compare B
_fovi: .long fovi ; FRT Overflow
.org 64 * 4 ; 8-bit Timer Channel 0
_cmia0: .long rte ; TMR_0 Compare Match A
_cmib0: .long rte ; TMR_0 Compare Match B
_ovi0: .long rte ; TMR_0 Overflow
.org 68 * 4 ; 8-bit Timer Channel 1
_cmia1: .long rte ; TMR_1 Compare Match A
_cmib1: .long rte ; TMR_1 Compare Match B
_ovi1: .long rte ; TMR_1 Overflow
.org 72 * 4 ; 8-bit Timer Channel X/Y
_cmiay: .long cmiay ; TMR_Y Compare Match A
_cmiby: .long rte ; TMR_Y Compare Match B
_oviy: .long rte ; TMR_Y Overflow
_icix: .long rte ; Input Capture X
.org 76 * 4 ; X-BUS (ISA Host Bus)
_ibf1: .long rte ; XBS IDR_1 Reception Completion
_ibf2: .long rte ; XBS IDR_2 Reception Completion
_ibf3: .long rte ; XBS IDR_3 Reception Completion
_ibf4: .long rte ; XBS IDR_4 Reception Completion
.org 80 * 4 ; Serial Communication (UART/IrDA)
_eri0: .long rte ; SCI_0 Reception Error
_rxi0: .long rte ; SCI_0 Reception Completion
_txi0: .long rte ; SCI_0 Transmission Data Empty
_tei0: .long rte ; SCI_0 Transmission End
_eri1: .long rte ; SCI_1 Reception Error
_rxi1: .long rte ; SCI_1 Reception Completion
_txi1: .long rte ; SCI_1 Transmission Data Empty
_tei1: .long rte ; SCI_1 Transmission End
_eri2: .long rte ; SCI_2 Reception Error
_rxi2: .long rte ; SCI_2 Reception Completion
_txi2: .long rte ; SCI_2 Transmission Data Empty
_tei2: .long rte ; SCI_2 Transmission End
.org 92 * 4 ; I²C Bus (SMBus)
_iici0: .long iici0 ; IIC_0 Transmission/Reception Completion
_ddcswi: .long rte ; IIC_0 Format Switch
_iici1: .long iici1 ; IIC_1 Transmission/Reception Completion
.org 96 * 4 ; Keyboard Buffer Controller (PS/2 Mouse/Keyboard)
_kbia: .long kbia ; Keyboard Reception Completion A
_kbib: .long kbib ; Keyboard Reception Completion B
_kbic: .long kbic ; Keyboard Reception Completion C
.org 108 * 4 ; Low Pin Count (LPC) Host Bus
_erri: .long rte ; LPC Transfer Error
_ibfi1: .long ibfi1 ; LPC IDR1 Reception Completion (0x60/0x64)
_ibfi2: .long ibfi2 ; LPC IDR2 Reception Completion (0x62/0x66)
_ibfi3: .long ibfi3 ; LPC IDR3 Reception Completion
.org 0x000200, -(type1Y || level < 0x01050000)
.octa 0x434f52502e2049424d20323030312041
.octa 0x4c4c2052494748545320524553455256
.word 0x4544
.align 3, -(type1Y || level < 0x01050000)
byte0xE8: .word version
.byte typeid
.byte 0
byte0xF8: .long timestamp1
.byte 0, 0
.align 4, -(type1Y || level < 0x01050000)
byte0xF0: .word typestr
.ascii "HT"
.word buildid1
.ascii "WW"
.ascii "________"
byte0xEF: .byte 3
byte0xEB: .byte 4
.byte 2, 6
.org 0x000264
.octa 0x28432920436f70797269676874204942
.long 0x4d20436f, 0x72702e20, 0x32303031
.byte 0x2c, 0x20, 0x32, 0x30, 0x30, 0x35
.octa 0x20416c6c205269676874732052657365
.octa 0x7276656420555320476f7665726e6d65
.octa 0x6e742055736572732052657374726963
.octa 0x74656420526967687473202d20557365
.octa 0x2c206475706c69636174696f6e206f72
.octa 0x20646973636c6f737572652072657374
.octa 0x72696374656420627920475341204144
.octa 0x50205363686564756c6520436f6e7472
.octa 0x61637420776974682049424d20436f72
.byte 0x70, 0x2e, 0x20
.octa 0x28432920436f70797269676874204c45
.octa 0x4e4f564f20323030352c203230303620
.octa 0x416c6c20526967687473205265736572
.byte 0x76, 0x65, 0x64
.org 0x000400 - 2, -(type1Y || level < 0x01050000)
chksum1: .word checksum1 ; checksum #1 (0x000000..0x0003fd)
dataStart:
chksum2: .word checksum2 ; checksum #2 (0x000402..0x000fff)
.align 4, -1
.byte 0x00, 0x40
.byte typeid
.align 2, -1
byte0xFC: .long timestamp2
off_00418:
.long 0f, 1f
num_00418 = (. - off_00418) / 4
0: .long 10f, 11f, 12f
1: .long 20f, 21f, 22f
dacTabsPtr: .long dacTabs
fnTabsPtr: .long fnTabs
keyLocTabPtr: .long keyLocTab
volAccKeyTabPtr:.long volAccKeyTab
delayTabPtr: .long delayTab
fanLevelTabPtr: .long fanLevelTab
off_00450:
.long 5f, 6f
num_00450 = (. - off_00450) / 4
5: .long 50f, 51f, 52f
num_5 = (. - 5b) / 4
6: .long 60f, 61f, 62f
off_00470: .long byte_00b16
off_00474: .long byte_00b20
10: .word 0x28
.long byte_0062c, byte_0065f, byte_00681, byte_00692
.long byte_006b4, byte_006c5, byte_006d6, byte_006e7
.long byte_006f8, byte_0071a, byte_0073c, byte_0074d
.long byte_0074d, byte_0074d, byte_0074d, byte_0074d
11: .word 0x2a
.long byte_0063d, byte_00670, byte_00681, byte_006a3
.long byte_006b4, byte_006c5, byte_006d6, byte_006e7
.long byte_00709, byte_0072b, byte_0073c, byte_0074d
.long byte_0074d, byte_0074d, byte_0074d, byte_0074d
12: .word 0x26
.long byte_0064e, byte_00670, byte_00681, byte_006a3
.long byte_006b4, byte_006c5, byte_006d6, byte_006e7
.long byte_00709, byte_0072b, byte_0073c, byte_0074d
.long byte_0074d, byte_0074d, byte_0074d, byte_0074d
20: .word 0x28
.long byte_0075e, byte_00791, byte_007b3, byte_007c4
.long byte_007e6, byte_007f7, byte_00808, byte_00819
.long byte_0082a, byte_0084c, byte_0086e, byte_0087f
.long byte_0087f, byte_0087f, byte_0087f, byte_0087f
21: .word 0x2a
.long byte_0076f, byte_007a2, byte_007b3, byte_007d5
.long byte_007e6, byte_007f7, byte_00808, byte_00819
.long byte_0083b, byte_0085d, byte_0086e, byte_0087f
.long byte_0087f, byte_0087f, byte_0087f, byte_0087f
22: .word 0x26
.long byte_00780, byte_007a2, byte_007b3, byte_007d5
.long byte_007e6, byte_007f7, byte_00808, byte_00819
.long byte_0083b, byte_0085d, byte_0086e, byte_0087f
.long byte_0087f, byte_0087f, byte_0087f, byte_0087f
dacTabs: .long volumeTab, volumeTab
.long curBrightnessTab, curBrightnessTab + 9
.fill 6, 4
byte_0062c: .byte 0x9a, 1, 1, 0x64, 0, 0x36, 0x34, 0x61, 0x5f, 0x63, 0x80, 0x30, 0x2b, 0x34, 0x2f, 0x5e, 0x5c
byte_0063d: .byte 0x9a, 1, 1, 0x64, 0, 0x5e, 0x5c, 0x61, 0x5f, 0x63, 0x80, 0x2e, 0x29, 0x41, 0x3c, 0x5b, 0x58
byte_0064e: .byte 0x9a, 1, 1, 0x65, 0, 0x5f, 0x5d, 0x61, 0x5f, 0x63, 0x80, 0x2e, 0x29, 0x41, 0x3c, 0x5c, 0x59
byte_0065f: .byte 0x9a, 4, 1, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x29, 0x24, 0x30, 0x2b, 0x80, 0x80
byte_00670: .byte 0x9a, 4, 1, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x2a, 0x25, 0x2d, 0x28, 0x80, 0x80
byte_00681: .byte 0x98, 0, 2, 0x44, 0, 0x41, 0x3f, 0x80, 0x80, 0x43, 0x80, 0x80, 0x80, 0x80, 0x80, 0x3f, 0x3c
byte_00692: .byte 0x9a, 3, 1, 0x7d, 0, 0x3d, 0x3b, 0x7a, 0x78, 0x7c, 0x80, 0x30, 0x2b, 0x33, 0x2e, 0x36, 0x33
byte_006a3: .byte 0x9a, 3, 1, 0x7d, 0, 0x5f, 0x5d, 0x7a, 0x78, 0x7c, 0x80, 0x2f, 0x2a, 0x39, 0x34, 0x5c, 0x59
byte_006b4: .byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_006c5: .byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_006d6: .byte 0x80, 0, 2, 0x4b, 0, 0x37, 0x32, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_006e7: .byte 0x80, 0, 2, 0x4b, 0, 0x32, 0x2d, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_006f8: .byte 0x96, 0, 2, 0x80, 0, 0x46, 0x44, 0x4b, 0x49, 0x80, 0x80, 0x2a, 0x25, 0x2b, 0x26, 0x41, 0x3e
byte_00709: .byte 0x96, 0, 2, 0x80, 0, 0x46, 0x44, 0x4b, 0x49, 0x80, 0x80, 0x2d, 0x28, 0x2f, 0x2a, 0x41, 0x3e
byte_0071a: .byte 0x9a, 0, 1, 0x4a, 0, 0x43, 0x41, 0x47, 0x45, 0x49, 0x80, 0x2a, 0x25, 0x2b, 0x26, 0x2e, 0x2b
byte_0072b: .byte 0x9a, 0, 1, 0x4a, 0, 0x43, 0x41, 0x47, 0x45, 0x49, 0x80, 0x2a, 0x25, 0x2d, 0x28, 0x40, 0x3d
byte_0073c: .byte 0x9a, 2, 1, 0x68, 0, 0x61, 0x5f, 0x65, 0x63, 0x67, 0x80, 0x80, 0x80, 0x80, 0x80, 0x5e, 0x5b
byte_0074d: .byte 0x00, 0, 0, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_0075e: .byte 0x9a, 1, 1, 0x64, 0, 0x34, 0x32, 0x61, 0x5f, 0x63, 0x80, 0x30, 0x2b, 0x32, 0x2d, 0x5e, 0x5c
byte_0076f: .byte 0x9a, 1, 1, 0x64, 0, 0x5e, 0x5c, 0x61, 0x5f, 0x63, 0x80, 0x2d, 0x28, 0x40, 0x3b, 0x5b, 0x58
byte_00780: .byte 0x9a, 1, 1, 0x65, 0, 0x5f, 0x5d, 0x61, 0x5f, 0x63, 0x80, 0x2e, 0x29, 0x41, 0x3c, 0x5c, 0x59
byte_00791: .byte 0x9a, 4, 1, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x2a, 0x25, 0x31, 0x2c, 0x80, 0x80
byte_007a2: .byte 0x9a, 4, 1, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x29, 0x24, 0x2c, 0x27, 0x80, 0x80
byte_007b3: .byte 0x98, 0, 2, 0x44, 0, 0x41, 0x3f, 0x80, 0x80, 0x43, 0x80, 0x80, 0x80, 0x80, 0x80, 0x3f, 0x3c
byte_007c4: .byte 0x9a, 3, 1, 0x7d, 0, 0x3d, 0x3b, 0x7a, 0x78, 0x7c, 0x80, 0x30, 0x2b, 0x33, 0x2e, 0x36, 0x33
byte_007d5: .byte 0x9a, 3, 1, 0x7d, 0, 0x5f, 0x5d, 0x7a, 0x78, 0x7c, 0x80, 0x2f, 0x2a, 0x39, 0x34, 0x5c, 0x59
byte_007e6: .byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_007f7: .byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_00808: .byte 0x80, 0, 2, 0x4b, 0, 0x37, 0x32, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_00819: .byte 0x80, 0, 2, 0x4b, 0, 0x32, 0x2d, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
byte_0082a: .byte 0x96, 0, 2, 0x80, 0, 0x46, 0x44, 0x4b, 0x49, 0x80, 0x80, 0x2a, 0x25, 0x2b, 0x26, 0x41, 0x3e
byte_0083b: .byte 0x96, 0, 2, 0x80, 0, 0x46, 0x44, 0x4b, 0x49, 0x80, 0x80, 0x27, 0x22, 0x29, 0x24, 0x41, 0x3e
byte_0084c: .byte 0x9a, 0, 1, 0x4a, 0, 0x43, 0x41, 0x47, 0x45, 0x49, 0x80, 0x2a, 0x25, 0x2b, 0x26, 0x2e, 0x2b
byte_0085d: .byte 0x9a, 0, 1, 0x4a, 0, 0x43, 0x41, 0x47, 0x45, 0x49, 0x80, 0x2f, 0x2a, 0x32, 0x2d, 0x40, 0x3d
byte_0086e: .byte 0x9a, 2, 1, 0x68, 0, 0x61, 0x5f, 0x65, 0x63, 0x67, 0x80, 0x80, 0x80, 0x80, 0x80, 0x5e, 0x5b
byte_0087f: .byte 0x00, 0, 0, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x9a, 1, 1, 0x64, 0, 0x5e, 0x5c, 0x61, 0x60, 0x62, 0x80, 0x2d, 0x2b, 0x3b, 0x35, 0x57, 0x54
.byte 0x9a, 4, 1, 0x45, 0, 0x3d, 0x3b, 0x40, 0x3e, 0x43, 0x80, 0x2d, 0x2b, 0x34, 0x31, 0x38, 0x35
.byte 0x98, 0, 2, 0x44, 0, 0x3d, 0x3b, 0x40, 0x3e, 0x42, 0x80, 0x27, 0x25, 0x2c, 0x28, 0x3a, 0x38
.byte 0x9a, 3, 1, 0x7d, 0, 0x76, 0x73, 0x79, 0x77, 0x7b, 0x80, 0x2f, 0x2d, 0x38, 0x35, 0x62, 0x5f
.byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x80, 0, 1, 0x64, 0, 0x5a, 0x50, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x80, 0, 2, 0x4b, 0, 0x37, 0x32, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x80, 0, 2, 0x4b, 0, 0x32, 0x2d, 0x80, 0x80, 0x49, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x96, 0, 2, 0x64, 0, 0x4b, 0x46, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x9a, 0, 1, 0x64, 0, 0x41, 0x3c, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x9a, 2, 1, 0x64, 0, 0x46, 0x41, 0x80, 0x80, 0x5f, 0x80, 0x80, 0x80, 0x3c, 0x37, 0x42, 0x3f
.byte 0x00, 0, 0, 0x80, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
.byte 0x9a, 1, 1, 0x64, 0, 0x5e, 0x5c, 0x61, 0x60, 0x62, 0x80, 0x2d, 0x2b, 0x3b, 0x35, 0x57, 0x53
.byte 0x9a, 1, 1, 0x64, 0, 0x5e, 0x5c, 0x61, 0x60, 0x62, 0x80, 0x2d, 0x2b, 0x3b, 0x35, 0x57, 0x52
.align 1, -1
volumeTab: .byte num_volumeTab
.byte 0, 40, 56, 72, 87, 100, 112, 124, 136, 149, 163, 179, 197, 219, 255
num_volumeTab = . - volumeTab - 1
brightnessTabsStart:
brightnessTab1: .byte 8
.word 18, 9790, 22650, 43263, 2048, 3100, 11584, 23416
.byte 158
brightnessTab2: .byte 8
.word 18, 9790, 22650, 43263, 2048, 2839, 9520, 17240
.byte 119
brightnessTab3: .byte 8
.word 1816, 11330, 23939, 45311, 2048, 1549, 6441, 16475
.byte 124
num_brightnessTabs = (. - brightnessTabsStart) / 9 / 2
.align 1, -1
fnTabs: .long fnTab1, fnTab2
fnTab1: .byte size_fnTab1
.byte 0x03, 112, 0x03, 113, 0x03, 114, 0x73, 115 ; F1, F2, F3, F4
.byte 0x47, 80, 0x57, 81, 0x03, 118, 0x03, 119 ; Home, End, F7, F8
.byte 0x03, 120, 0x03, 77, 0x03, 122, 0x83, 123 ; F9, Access, F11, F12
.byte 0x27, 78, 0x17, 88, 0x33, 94, 0x63, 85 ; Vol-, Vol+, Mute, PgUp
.byte 0x03, 75, 0x03, 76, 0x03, 15, 0x03, 61 ; Ins, Del, BS, Space
.byte 0x03, 116, 0x03, 117, 0x03, 121, 0x03, 86 ; F5, F6, F10, PgDn
size_fnTab1 = . - fnTab1 - 1
fnTab2: .byte size_fnTab2
.byte 0x03, 112, 0x03, 113, 0x03, 114, 0x03, 115 ; F1, F2, F3, F4
.byte 0x47, 80, 0x57, 81, 0x03, 118, 0x03, 119 ; Home, End, F7, F8
.byte 0x03, 120, 0x03, 77, 0x03, 122, 0x03, 123 ; F9, Access, F11, F12
.byte 0x27, 75, 0x17, 76, 0x33, 15, 0x63, 85 ; Ins, Del, BS, PgUp
.byte 0x03, 78, 0x03, 88, 0x03, 94, 0x03, 61 ; Vol-, Vol+, Mute, Space
.byte 0x03, 116 ; F5
.byte 0x03, 117, 0x03, 121, 0x03, 86 ; F6, F10, PgDn
size_fnTab2 = . - fnTab2 - 1
.align 1, -1
keyLocTab: .byte 1, 2, 17, 16, 31, 110, 46, 65 ; ` 1 Q Tab A Esc Z (App)
.byte 112, 3, 18, 30, 32, 45, 47, 0 ; F1 2 W CapsLk S (|) X __
.byte 113, 4, 19, 114, 33, 115, 48, 0 ; F2 3 E F3 D F4 C __
.byte 6, 5, 20, 21, 34, 35, 49, 50 ; 5 4 R T F G V B
.byte 7, 8, 23, 22, 37, 36, 52, 51 ; 6 7 U Y J H M N
.byte 13, 9, 24, 28, 38, 117, 53, 56 ; = 8 I ] K F6 , (/)
.byte 119, 10, 25, 118, 39, 66, 54, 67 ; F8 9 O F7 L ?? . ??
.byte 12, 11, 26, 27, 40, 41, 42, 55 ; - 0 P [ ; ' (#) ?
.byte 120, 121, 14, 15, 29, 116, 43, 61 ; F9 F10 ?? BS \ F5 Enter Space
.byte 75, 123, 63, 59, 71, 0, 0, 89 ; Ins F12 (WinR) (WinL) ?? __ __ Right
.byte 76, 122, 88, 78, 94, 77, 0, 84 ; Del F11 Vol+ Vol- Mute Access __ Down
.byte 85, 86, 0, 0, 0, 0, 109, 111 ; PgUp PgDn __ __ __ __ Back Forward
.byte 80, 81, 73, 72, 107, 83, 126, 79 ; Home End ?? ?? ?? Up Pause Left
.byte 0, 124, 125, 0, 0, 60, 0, 62 ; __ PrtSc ScrLk __ __ AltL __ AltR
.byte 0, 0, 0, 44, 0, 0, 57, 0 ; __ __ __ ShiftL __ __ ShiftR __
.byte 58, 0, 0, 0, 0, 0, 64, 0 ; CtrlL __ __ __ __ __ CtrlR __
.byte 0, 0, 0, 0, 0, 74, 0, 0 ; __ __ __ __ __ ?? __ __
.align 1, -1
volAccKeyTab: .octa 0x000000000000000000003c0000000000 ; Vol+, Vol-, Mute, Access
.byte 0x00
.align 1, -1
delayTab: .word 500
.word 250
.word 1000
.word 500
.align 1, -1
fanLevelTab: .byte num_fanLevelTab
.byte 0, 1, 1, 2, 2, 2, 3, 3
num_fanLevelTab = . - fanLevelTab - 1
.align 1, -1
50: .byte 4
.word 8972, 58382, 42512, 19071
.align 1, -1
51: .byte 4
.word 9740, 58383, 53778, 18559
.align 1, -1
52: .byte 4
.word 9740, 58383, 53778, 18559
.align 1, -1
60: .byte 4
.word 8972, 7181, 31247, 53887
.align 1, -1
61: .byte 4
.word 9740, 7183, 30737, 53375
.align 1, -1
62: .byte 4
.word 9740, 7183, 30737, 53375
.align 1, -1
byte_00b16: .byte 8
.byte 0, 34, 42, 80, 57, 85, 60, 44
.align 1, -1
byte_00b20: .byte 8
.align 1, 0x77
.word 0, -1 ; 0
.word 0, -1 ; 1
.word 30, -1 ; 2
.word -1, 5 ; 3
.word 1800, 30 ; 4
.word -1, 60 ; 5
.word -1, 80 ; 6
.word -1, 100 ; 7
long_00b42: .ascii "Z75L" ; 0
.ascii "Z75M" ; 1
.ascii "Z7SN" ; 2
.ascii "Z75S" ; 3
.ascii "Z75T" ; 4
.ascii "Z7SR" ; 5
.ascii "Z75X" ; 6
.ascii "Z7EG" ; 7
.ascii "Z7SV" ; 8
.long 0 ; 9
.org 0x001000, -1
codeStart:
checkSums: mov #off_01038, er1
loc_01006: mov @er1+, er2
cmp #-1, er2
beq loc_0102a
mov @er1+, er3
zero er4
loc_0101a: mov @er2+, r5
add r5, r4
cmp er2, er3
bne loc_0101a
cmp #0, r4
bne loc_0102a
bra loc_01006
loc_0102a: cmp #0, r4
beq loc_01034
set c
bra loc_01036
loc_01034: clr c
loc_01036: jmp @er0
off_01038: .long ROM
.long dataStart
.long codeStart
.long ROMend
.long -1
checkHiRAM: mov #off_010ba, er7 ; High Internal RAM Start
bra loc_0105a
checkLoRAM: mov #off_010b2, er7 ; Low Internal RAM Start
loc_0105a: mov #0, r3
mov @er7, er4
mov @(4,er7), er2 ; RAM End
loc_01068: mov r3, @-er2
cmp er2, er4
bne loc_01068
mov #testpatterns, er6
loc_01074: mov r3l, r3h
mov @er6+, r3l
mov #loc_01080, er1
bra checkPattern ; RAM Start
loc_01080: bcs loc_0108c
mov #off_010b2, er2 ; Low Internal RAM Start
cmp er2, er6
bne loc_01074
loc_0108c: jmp @er0
checkPattern: mov @er7, er2
mov @(4,er7), er4 ; RAM End
loc_01098: mov @er2, r5h
mov r3l, @er2
cmp r3h, r5h
bne loc_010aa
adds #1, er2
cmp er4, er2
bne loc_01098
clr c
jmp @er1
loc_010aa: set c
jmp @er1
testpatterns: .byte 0b10101010, 0b01010101, 0b11111111, 0b00000000
off_010b2: .long RAM & M24 ; Low Internal RAM Start
.long RAMend & M24 ; Low Internal RAM End
off_010ba: .long RAM8 & M24 ; High Internal RAM Start
.long RAM8end & M24 ; High Internal RAM End
clearRAM: mov #0, r2
mov #stack, er3
mov #RAMend & M24, er4 ; Low Internal RAM End
loc_010d2: mov r2, @er3
adds #2, er3
cmp er3, er4
bne loc_010d2
mov #RAM8 & M24, er3 ; High Internal RAM Start
mov #RAM8end & M24, er4 ; High Internal RAM End
loc_010e6: mov r2, @er3
adds #2, er3
cmp er3, er4
bne loc_010e6
jmp @er0
.global reset
reset: mov #loc_010fa, er6
jmp nop1
loc_010fa: mov #buildid2, r0 ; # of build id (e.g. .ascii "28")
mov @byte_ffe080, r1 ; # of build id in RAM
cmp r0, r1
bne loc_01124
mov #loc_01112, er0
jmp clearRAM
loc_01112: mov #80000, er0 ; 80000 * 5 states @ 10 MHz = 40 ms
delay: nop
nop
dec #1, er0
bne delay
bra loc_0118e:16
loc_01124: mov #loc_0112e, er0
jmp checkSums
loc_0112e: mov #1, r0h
bcs loc_0114a
mov #loc_0113c, er0
jmp checkLoRAM
loc_0113c: bcs loc_01148
mov #loc_01148, er0
jmp checkHiRAM
loc_01148: mov #2, r0h
loc_0114a: bcs loc_01158
mov @mdcr:8, r0h ; Mode Control Register
and #3, r0h
cmp #2, r0h ; Advanced Mode, ROM Enabled
beq loc_01158
mov #3, r0h ; Assume Normal Mode
set c
loc_01158: bcc advanced
b clr mstpcrl.mstp0 ; LPC, WUEMRB (Module Stop Control Register L)
b set hicr_0.lpc1e ; LPC Channel 1 Enable (0x60/0x64) (LPC Host Interface Control Register 0)
mov #0xfc, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
loc_0116a: b tst str2.ibf2 ; Input Buffer Full (LPC Status Register 2 (0x66))
beq loc_01182
mov @idr2, r0h ; LPC Input Data Register 2 (0x62/0x66)
cmp #0xff, r0h
bne loc_01182
b set mstpcrl.mstp0 ; LPC, WUEMRB (Module Stop Control Register L)
bra reset:16
loc_01182: bra loc_0116a
advanced: mov #buildid2, r0 ; # of build id (e.g. .ascii "28")
mov r0, @byte_ffe080 ; # of build id in RAM
loc_0118e: mov @rts_0126c, r0 ; the program code for 'rts'
mov r0, @hook ; initially contains 0x5470 (rts)
mov #stack, sp
jsr sub_0eb2c
mov #0, r0h
mov #0x0f, r0l
mov #taskQueueIdx, er1
loc_011ae: mov r0h, @-er1
dec r0l
bne loc_011ae
mov #seq0Init, r0
bsr doTaskSeq:16
mov #0, r0h
mov #0, r0l
loc_011c0: b ld pb2pin ; Pin PB2/-WUE2/-CS3 (Port B Input Data Register)
bxor #0, r0l
bcc loc_011d0
mov #0, r0h
bild #0, r0l
bst #0, r0l
bra loc_011d2
loc_011d0: inc r0h
loc_011d2: cmp #0x20, r0h
blo loc_011c0
btst #0, r0l
bne loc_011e6
mov #seq3, r0h
mov r0h, @taskSeqOffset
bra loc_0128a:16
loc_011e6: mov #seq1InitA, r0
bsr doTaskSeq
mov #7, r0h
jsr sub_06968
mov #seq1, r0h
mov r0h, @taskSeqOffset
bra loc_0128a:16
sub_011fe: mov #seq3Init, r0
mov #seq3, r1h
loc_01204: extu er0
mov r1h, @taskSeqOffset
mov #stack, sp
bsr doTaskSeq
bra loc_0128a
sub_01216: mov #seq2Init, r0
mov #seq2, r1h
bra loc_01204
sub_0121e: mov #seq1InitB, r0
loc_01222: mov #seq1, r1h
bra loc_01204
mov #seq1InitA, r0
bra loc_01222
doTaskSeq: push er0
jsr hook
pop er0
mov #taskSeqTab, er1
exts er0
add er1, er0
mov @er0+, er1
mov @er0+, er0
sub er1, er0
shlr #2, er0 ; # of entries
taskLoop0: cmp #0, r0l
beq rts_0126c
mov @er1+, er2
push er0
push er1
jsr @er2
pop er1
pop er0
dec r0l
bra taskLoop0
rts_0126c: rts
sub_0126e: mov #seq3, r0h
bra loc_01278
sub_01272: mov #seq2, r0h
bra loc_01278
sub_01276: mov #seq1, r0h
loc_01278: mov @taskSeqOffset, r0l
cmp r0h, r0l
bne loc_01286
clr c
bra rts_01288
loc_01286: set c
rts_01288: rts
loc_0128a: bsr initScheduler:16
zero er0
mov @taskSeqOffset, r0l
cmp #seq2, r0l
beq loc_012a0
cmp #seq3, r0l
bne loc_012a6
loc_012a0: bset #6, @byte_ffff00:8
bra loc_012aa
loc_012a6: bclr #6, @byte_ffff00:8
loc_012aa: add #taskSeqTab, er0
mov @er0, er0
subs #4, er0
push er0
zero er2
mov er2, @long_ffe868
mov er2, @long_ffe86c
mainLoop: mov @word_ffe870, er1
inc #1, er1
mov er1, @word_ffe870
jsr hook
bsr runTasks:16
mov @sp, er0 ; pop+push er0
mov #taskQueueIdx, er1
taskLoop: mov @er1, r2l
beq loc_01342
exts r2
exts er2
add er2, er1
shll #2, er2
add er2, er0
mov @er0, er2
stm er0-er1, @-sp
jsr @er2
ldm @sp+, er0-er1
btst #6, @byte_ffff00:8
beq loc_01340
stc ccr, r2h
mov er1, er3
sub #taskQueueIdx, er3
dec r3l
zero er4
mov r3l, r4l
shlr #2, r4l
shlr r4l
add #long_ffe868, er4
and #7, r3l
ldc r2h, ccr
bcc loc_0133c
bset r3l, @er4
bra loc_01340
loc_0133c: bclr r3l, @er4
loc_01340: bra taskLoop
loc_01342: btst #6, @byte_ffff00:8
beq loc_01376
mov @long_ffe868, er2
bne loc_01376
mov @long_ffe86c, er2
bne loc_01376
jsr sub_0eb4e
bcc loc_01376
mov #seqSleep1, r0
bsr doTaskSeq:16
jsr sleep
mov #seqSleep2, r0
bsr doTaskSeq:16
loc_01376: bra mainLoop:16
initScheduler: mov #0, r0h
mov r0h, @taskQueueIdx
mov #taskQueue, er0
mov #0x80, r1h
mov #0x40, r1l
clearQueue: mov r1h, @er0
adds #1, er0
dec r1l
bne clearQueue
zero er0
mov @taskSeqOffset, r0l
add #taskSeqTab, er0
mov @er0+, er1
mov @er0, er2
mov #taskEnabledBitVec, er3
mov #0, r4l
mov r4l, @er3
loc_013b6: mov @er1+, er0
beq loc_013c0 ; NULL pointer
bset r4l, @er3
loc_013c0: inc r4l
cmp #8, r4l
bne loc_013cc
mov #0, r4l
adds #1, er3
mov r4l, @er3
loc_013cc: cmp er2, er1
bne loc_013b6
mov @taskEnabledBitVec + 0, er0
mov @taskEnabledBitVec + 4, er1
mov er0, @backTaskReadyBitVec + 0
mov er1, @backTaskReadyBitVec + 4
bset #5, @byte_ffff00:8
rts
runTasks: bsr runFrontTask
bsr runBackTask
rts
runBackTask: btst #5, @byte_ffff00:8
beq rts_01414
bclr #5, @byte_ffff00:8
mov #backTaskReadyBitVec, er0
mov #sub_01472, er1
bsr sub_01436
rts_01414: rts
runFrontTask: btst #4, @byte_ffff00:8
beq rts_0142e
bclr #4, @byte_ffff00:8
mov #frontTaskReadyBitVec, er0
mov #sub_0149c, er1
bsr sub_01436
rts_0142e: rts
sub_01430: bclr #6, @byte_ffff00:8
rts
sub_01436: mov er1, er3
mov #0, r1h
loc_0143a: mov #8, r1l
loc_0143c: mov #0, r2l
set i
mov @er0, r2h
mov r2l, @er0
clr i
adds #1, er0
mov r2h, r2l
beq loc_01466
mov #8, r2l
loc_0144e: inc r1h
shlr r2h
bcc loc_01460
stm er0-er3, @-sp
mov r1h, r0h
jsr @er3
ldm @sp+, er0-er3
loc_01460: dec r2l
bne loc_0144e
bra loc_01468
loc_01466: add #8, r1h
loc_01468: dec r1l
bne loc_0143c
cmp #0x40, r1h
blo loc_0143a
rts
sub_01472: mov #taskQueueIdx, er1
bsr sub_014be
bcc rts_0149a
mov @taskQueueIdx, r3l
beq loc_01486
sub r0h, r3l
loc_01486: mov r0h, @taskQueueIdx
zero er4
mov r0h, r4l
add #taskQueueIdx, er4
mov r3l, @er4
rts_0149a: rts
sub_0149c: mov #taskQueueIdx, er1
bsr sub_014be
bcs rts_014bc
mov @er1, r2l
exts r2
exts er2
mov er1, er3
add er2, er3
mov @er3, r4l
beq loc_014b6
add r2l, r4l
loc_014b6: mov r4l, @er1
mov #0x80, r0h
mov r0h, @er3
rts_014bc: rts
sub_014be: mov #0, r0l
loc_014c0: mov @er1, r2l
bne loc_014c8
set c
bra rts_014da
loc_014c8: add r2l, r0l
cmp r0h, r0l
bne loc_014d2
clr c
bra rts_014da
loc_014d2: exts r2
exts er2
add er2, er1
bra loc_014c0
rts_014da: rts
schedBackTask: ; r0h: task offset
mov #backTaskReadyBitVec, er2
bset #5, @byte_ffff00:8
loc_014e6: shlr #2, r0h
zero er1
mov r0h, r1l
shlr #2, r1l
shlr r1l
and #7, r0h
add er1, er2
add #taskEnabledBitVec, er1
btst r0h, @er1
beq rts_01506
bset r0h, @er2
rts_01506: rts
schedFrontTask: ; r0h: task offset
mov #frontTaskReadyBitVec, er2
bset #4, @byte_ffff00:8
bra loc_014e6
taskSeqTab:
seq0Init = . - taskSeqTab
.long taskSeq0Init ; 0x00 (after reset)
seq1InitA = . - taskSeqTab
.long taskSeq1InitA ; 0x04
seq1 = . - taskSeqTab
.long taskSeq1 ; 0x08
seq2Init = . - taskSeqTab
.long taskSeq2Init ; 0x0c
seq2 = . - taskSeqTab
.long taskSeq2 ; 0x10
seq1InitB = . - taskSeqTab
.long taskSeq1InitB ; 0x14
seq3Init = . - taskSeqTab
.long taskSeq3Init ; 0x18
seq3 = . - taskSeqTab
.long taskSeq3 ; 0x1c
seqSleep1 = . - taskSeqTab
.long taskSeqSleep ; 0x20 before sleep
seqSleep2 = . - taskSeqTab
.long taskSeqSleep ; 0x24 after sleep
.long taskSeqsEnd ; 0x28 tab end
rte: rte ; Return from Exception
sub_01542: mov #0x40, r0l
mov #task00o, r0h
mov r0h, @byte_ffe3a3
mov #byte_ffe3a4, er1
mov #0x80, r0h
loc_01554: mov r0h, @er1
adds #1, er1
dec r0l
bne loc_01554
rts
task00: mov #word_ffe872, er1
mov #byte_ffe3a3, er2
loc_0156a: mov @er2, r0l
beq loc_015e8
exts r0
exts er0
mov er0, er3
shal er3
add er1, er3
mov @er3, r4
stm er0-er3, @-sp
mov r4, r0
jsr cmpTick
ldm @sp+, er0-er3
bcc loc_015b4
mov er2, er3
add er0, er3
mov @er3, r4h
beq loc_01594
add r0l, r4h
loc_01594: mov r4h, @er2
mov #0x80, r4h
mov r4h, @er3
sub #byte_ffe3a3, er3
dec r3l
stm er0-er3, @-sp
mov r3l, r0h
shll #2, r0h
jsr schedBackTask
ldm @sp+, er0-er3
bra loc_015e6
loc_015b4: mov @er3, r3
mov @tick, r4
cmp r3, r4
bhs loc_015c4
sub r4, r3
bra loc_015ca
loc_015c4: not r4
inc #1, r4
add r4, r3
loc_015ca: mov r3, r4
beq loc_015e4
stm er0-er3, @-sp
mov #0, r0h
mov r3, r0
jsr sub_034c2
mov #task00o, r0h
jsr schedFrontTask
ldm @sp+, er0-er3
loc_015e4: bra loc_015f4
loc_015e6: bra loc_015f0
loc_015e8: mov #task00o, r0h
jsr schedFrontTask
bra loc_015f4
loc_015f0: bra loc_0156a:16
loc_015f4: clr c
rts
schedBackTaskDelayed: ; r0h: task offset, r1: delay in ms
shlr #2, r0h
inc r0h
stm er0-er1, @-sp
bsr checkSchedTaskI:16
mov er1, er2
ldm @sp+, er0-er1
bcs loc_01622
mov @er2, r3l
exts r3
exts er3
mov er3, er4
add er2, er4
mov @er4, r0l
beq loc_0161c
add r3l, r0l
loc_0161c: mov r0l, @er2
mov #0x80, r0l
mov r0l, @er4
loc_01622: mov r1, r2
bne loc_01632
dec r0h
shll #2, r0h
jsr schedBackTask
bra rts_016a4:16
loc_01632: mov #byte_ffe3a3, er2
zero er3
mov r0h, r3l
add er3, er2
shll er3
add #word_ffe872, er3
mov @tick, r0
add r1, r0
mov r0, @er3
push er2
mov #byte_ffe3a3, er1
mov #word_ffe872, er2
loc_01662: mov @er1, r3l
beq loc_01686
exts r3
exts er3
mov er3, er4
shal er4
add er4, er2
mov @er2, r4
cmp r0, r4
blo loc_0167c
sub r0, r4
bpl loc_01686
bra loc_01682
loc_0167c: mov r0, r5
sub r4, r5
bmi loc_01686
loc_01682: add er3, er1
bra loc_01662
loc_01686: pop er2
mov @er1, r0l
beq loc_01696
exts r0
exts er0
add er1, er0
sub er2, er0
loc_01696: mov er2, er3
sub er1, er3
mov r3l, @er1
mov r0l, @er2
mov #task00o, r0h
jsr schedBackTask
rts_016a4: rts
checkSchedTaskI: ; r0h: task index
mov #byte_ffe3a3, er1
jmp sub_014be
checkSchedTask: ; r0h: task offset
shlr #2, r0h
inc r0h
bra checkSchedTaskI
sub_016b6: mov #task00o, r0h
jmp schedBackTask
cmpTick: mov @tick, r1
loc_016c2: cmp r0, r1
blo loc_016ca
sub r0, r1
bra loc_016d2
loc_016ca: mov #0xffff, r2
sub r0, r2
add r2, r1
loc_016d2: mov #0x7fff, r2
mov r1, r0
cmp r2, r1
rts
sub_016dc: mov @word_ffe9bc, r1
bra loc_016c2
sub_016e4: mov @word_ffe9be, r1
bra loc_016c2
parity: clr c
bxor #0, r0h
bxor #1, r0h
bxor #2, r0h
bxor #3, r0h
bxor #4, r0h
bxor #5, r0h
bxor #6, r0h
bxor #7, r0h
rts
delay25: mov #25, r0h ; 25 * 10 states @ 10 MHz = 25 µs
bra busywait
delay50: mov #50, r0h ; 50 * 10 states @ 10 MHz = 50 µs
bra busywait
delay100: mov #100, r0h ; 100 * 10 states @ 10 MHz = 100 µs
busywait: nop
nop
nop
nop
nop
nop
nop
dec r0h
bne busywait
rts
; 13.1 ms @ 10 MHz
setWaitTime1: b set sbycr.sts2 ; Standby Timer Select 2 (Standby Control Register)
b clr sbycr.sts1 ; Standby Timer Select 1 (Standby Control Register)
b clr sbycr.sts0 ; Standby Timer Select 0 (Standby Control Register)
bsr sub_01970:16
rts
sub_01730: mov #100, r0
mov @tick, r1
add r1, r0
mov r0, @tock
rts
task01: mov @P2DDRcopy, r0h
btst #4, r0h
beq loc_0179c
b ild p24dr ; Pin P24/PW12 (Port 2 Data Register)
bcc loc_0179c
b ild p94dr ; Pin P94/-IOW (Port 9 Data Register)
bcc loc_0176e
mov #100, r0
mov @tick, r1
add r1, r0
mov r0, @tock
bra loc_01798
loc_0176e: mov @tock, r0
jsr cmpTick
bcc loc_01798
push er0
stc ccr, r0l
set i
mov @P2DDRcopy, r0h
bclr #4, r0h ; p24ddr = 0
mov r0h, @P2DDRcopy
mov r0h, @p2ddr:8 ; Port 2 Data Direction Register
ldc r0l, ccr
pop er0
loc_01798: set c
bra rts_0179e
loc_0179c: clr c
rts_0179e: rts
sub_017a0: push er0
stc ccr, r0l
set i
b clr p24dr ; Pin P24/PW12 (Port 2 Data Register)
mov @P2DDRcopy, r0h
bset #4, r0h ; p24ddr = 1
mov r0h, @P2DDRcopy
mov r0h, @p2ddr:8 ; Port 2 Data Direction Register
ldc r0l, ccr
pop er0
jmp sub_011fe
sub_017c6: push er0
stc ccr, r0l
set i
b clr pb1odr ; Pin PB1/-WUE1/HIRQ4/LSCI (Port B Output Data Register)
mov @PBDDRcopy, r0h
bset #1, r0h
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
rts
setupPB1DDRin: push er0
stc ccr, r0l
set i
mov @PBDDRcopy, r0h
bclr #1, r0h ; pb1ddr = 0
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
rts
sub_0180a: jsr sub_05704
jsr sub_0535a
jsr sub_05cf6
rts
sub_01818: jsr sub_035d4
jsr sub_056f4
jsr sub_0537c
jsr sub_05d14
jsr sub_02ee6
rts
loc_0182e: mov #0, r3h
loc_01830: mov @er0+, er1
beq loc_01840
mov @er0+, er2
sub er1, er2
add r2l, r3h
bra loc_01830
loc_01840: mov r3h, r0h
set c
rts
loc_01846: mov er0, @long_ffe8f8
mov @er0, er1
mov er1, @long_ffe8fc
jsr sub_01862
set c
rts
sub_01862: mov @long_ffe8fc, er1
mov @er1+, r0h
loc_0186c: mov @long_ffe8f8, er2
mov @(4,er2), er3
cmp er3, er1
blo loc_018a2
add #8, er2
mov @er2, er1
beq loc_0189e
mov er1, @long_ffe8fc
mov er2, @long_ffe8f8
clr c
bra loc_018a0
loc_0189e: set c
loc_018a0: bra rts_018ac
loc_018a2: mov er1, @long_ffe8fc
clr c
rts_018ac: rts
loc_018ae: mov er1, @long_ffe8f8
mov @er1, er1
mov er1, @long_ffe8fc
jsr sub_018ca
set c
rts
sub_018ca: mov @long_ffe8fc, er1
mov r0h, @er1
adds #1, er1
bra loc_0186c
mov r0h, r1l
mov #0, r1h
mov #100, r2h
divxu r2h, r1
mov r1l, r0h
mov #10, r2h
mov r1h, r1l
mov #0, r1h
divxu r2h, r1
shll r1l
shll r1l
shll r1l
shll r1l
or r1l, r1h
mov r1h, r0l
rts
rts
mov #0, r0h
rts
.macro setDDR bit port out level
.if 0x\port <> 7
mov #0x\port << 8 | 1 << 7 | \level << 6 | \bit, r0
.if !\out
and #7, r0l
.endif
.if 0x\port > 9
mov #p\port\()odr, r1
.else
mov #p\port\()dr, r1
.endif
mov #p\port\()ddr, r2
.else
mov #0x\port << 8 | 0 << 7 | \level << 6 | \bit, r0
mov #0, r1
mov #0, r2
.endif
jsr sub_018fe
.endm
.macro setInL port bit
setDDR \bit \port 0 0
.endm
.macro setInH port bit
setDDR \bit \port 0 1
.endm
.macro setOutL port bit
setDDR \bit \port 1 0
.endm
.macro setOutH port bit
setDDR \bit \port 1 1
.endm
sub_018fe: cmp #0, r0h
beq rts_0195c
cmp #0x10, r0h
bhi rts_0195c
mov r2, r3
beq rts_0195c
mov #-1 >> 16, e1
mov e1, e2
mov #P1DDRcopy, er3
dec r0h
add r0h, r3l
addx #0, r3h
bcc loc_01920
inc #1, e3
loc_01920: mov r0l, r0h
and #7, r0h
stc ccr, r4h
set i
btst #7, r0l
beq loc_01944
btst #6, r0l
bne loc_01936
bclr r0h, @er1
bra loc_0193a
loc_01936: bset r0h, @er1
loc_0193a: mov @er3, r4l
bset r0h, r4l
mov r4l, @er3
mov r4l, @er2
bra loc_0195a
loc_01944: mov @er3, r4l
bclr r0h, r4l
mov r4l, @er3
mov r4l, @er2
btst #6, r0l
bne loc_01956
bclr r0h, @er1
bra loc_0195a
loc_01956: bset r0h, @er1
loc_0195a: ldc r4h, ccr
rts_0195c: rts
switch_er1_r0h: zero e0
mov r0h, r0l
mov #0, r0h
shll r0
add er1, er0
mov @er0, r1
exts er1
add er1, er0
jmp @er0
sub_01970: mov #ramFreeArea, er0
mov er0, @ramFreeLevel
rts
malloc: mov #RAMend & M24, er1
mov @ramFreeLevel, er2
sub er2, er1
btst #0, r0l
beq loc_01996
inc #1, r0 ; round up to word size
loc_01996: cmp r1, r0
bhi nomem
push er2
mov #0, e0
add er0, er2
mov er2, @ramFreeLevel
pop er0
clr c
bra rts_019ba
nomem: zero er0
set c
rts_019ba: rts
initPorts1: setOutL 2 0 ; Pin P20/PW8
setOutL 2 1 ; Pin P21/PW9
setOutL 2 2 ; Pin P22/PW10
bset #1, @byte_ffff05:8
bclr #1, @byte_ffff02:8
bset #2, @byte_ffff05:8
bclr #2, @byte_ffff02:8
bset #4, @byte_ffff04:8
bset #4, @byte_ffff01:8
bset #5, @byte_ffff04:8
bclr #5, @byte_ffff01:8
bset #6, @byte_ffff04:8
bclr #6, @byte_ffff01:8
bset #0, @byte_ffff05:8
bset #0, @byte_ffff02:8
bset #3, @byte_ffff05:8
bset #3, @byte_ffff02:8
setOutH 2 6 ; Pin P26/PW14
setOutL d 0 ; Pin PD0
setOutL d 1 ; Pin PD1
setOutL c 5 ; Pin PC5
setOutL c 6 ; Pin PC6
setOutL 1 3 ; Pin P13/PW3
setOutL c 4 ; Pin PC4
setOutL d 6 ; Pin PD6
push er0
stc ccr, r0l
set i
b clr pd5odr ; Pin PD5 (Port D Output Data Register)
mov @PDDDRcopy, r0h
bset #5, r0h
mov r0h, @PDDDRcopy
mov r0h, @pdddr ; Port D Data Direction Register
ldc r0l, ccr
pop er0
setOutL c 7 ; Pin PC7
mov @byte_ffff04, r0h
or #0x0f, r0h
mov r0h, @byte_ffff04
mov @byte_ffff03, r0l
bset #1, r0l
mov r0l, @byte_ffff03
mov @byte_ffff06, r1l
bset #1, r1l
mov r1l, @byte_ffff06
mov @byte_ffff01, r0l
bset #7, r0l
mov r0l, @byte_ffff01
mov @byte_ffff04, r1l
bset #7, r1l
mov r1l, @byte_ffff04
jsr sub_01e16
setOutL 2 3 ; Pin P23/PW11
setInL 7 4 ; Pin P74/AN4
rts
initPorts2: bset #4, @byte_ffff07:8
bclr #0, @byte_ffff02:8
bclr #3, @byte_ffff02:8
setOutH 2 5 ; Pin P25/PW13
setOutH 2 7 ; Pin P27/PW15/CBLANK
b clr p25dr ; Pin P25/PW13 (Port 2 Data Register)
b clr p27dr ; Pin P27/PW15/CBLANK (Port 2 Data Register)
setOutH d 2 ; Pin PD2
setOutL d 3 ; Pin PD3
b set pc5odr ; Pin PC5 (Port C Output Data Register)
b set pc6odr ; Pin PC6 (Port C Output Data Register)
b ild pc5pin ; Pin PC5 (Port C Input Data Register)
mov #0, r0h
jsr setPINcopy
b ld p13dr ; Pin P13/PW3 (Port 1 Data Register)
mov #1, r0h
jsr setPINcopy
b ld pc4pin ; Pin PC4 (Port C Input Data Register)
mov #2, r0h
jsr setPINcopy
b ld pd2pin ; Pin PD2 (Port D Input Data Register)
mov #4, r0h
jsr setPINcopy
b ld pd6pin ; Pin PD6 (Port D Input Data Register)
mov #5, r0h
jsr setPINcopy
b ld pd5pin ; Pin PD5 (Port D Input Data Register)
mov #6, r0h
jsr setPINcopy
bra loc_01c0e
sub_01bee: setOutH 2 5 ; Pin P25/PW13
setOutH 2 7 ; Pin P27/PW15/CBLANK
loc_01c0e: bset #5, @byte_ffff05:8
bset #5, @byte_ffff02:8
jsr sub_01e16
jsr sub_02060
rts
task02_3: btst #4, @byte_ffff07:8
bne 1f
setInL c 4 ; Pin PC4
setInL d 6 ; Pin PD6
setInL d 5 ; Pin PD5
jsr sub_01e16
bset #4, @byte_ffff07:8
1:
task02_1_2: mov @byte_ffe3e4, r0h
mov #off_01c78, er1
jsr switch_er1_r0h
clr c
rts
off_01c78: case 0 sub_01c86 sub_01c8c sub_01ca6 sub_01d38
case 4 sub_01cba sub_01cde sub_01d2e
sub_01c86: bset #7, @byte_ffff07:8
bra sub_01c96
sub_01c8c: mov #task02o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
sub_01c96: mov @byte_ffe3e4, r0h
inc r0h
mov r0h, @byte_ffe3e4
rts
sub_01ca6: mov #task02o, r0h
jsr checkSchedTask
bcs loc_01cb6
mov #task02o, r0h
jsr schedFrontTask
bra rts_01cb8
loc_01cb6: bsr sub_01c96
rts_01cb8: rts
sub_01cba:
jsr sub_07548
bst #0, @byte_ffff07:8
bxor #1, @byte_ffff07:8
bcs loc_01cda
bld #6, @byte_ffff07:8
bxor #7, @byte_ffff07:8
bcs loc_01cda
mov #task02o, r0h
jsr schedFrontTask
bra rts_01cdc
loc_01cda: bsr sub_01c96
rts_01cdc: rts
sub_01cde: btst #6, @byte_ffff07:8
beq loc_01cec
b clr pc6odr ; Pin PC6 (Port C Output Data Register)
bra loc_01cf2
loc_01cec: b set pc6odr ; Pin PC6 (Port C Output Data Register)
loc_01cf2: bld #6, @byte_ffff07:8
bst #7, @byte_ffff07:8
btst #0, @byte_ffff07:8
beq loc_01d08
b clr pc5odr ; Pin PC5 (Port C Output Data Register)
bra loc_01d22
loc_01d08: jsr sub_01276
bcc loc_01d1c
mov #0, r0h
jsr getPINcopy
b ist pc5odr ; Pin PC5 (Port C Output Data Register)
bra loc_01d22
loc_01d1c: b set pc5odr ; Pin PC5 (Port C Output Data Register)
loc_01d22:
bld #0, @byte_ffff07:8
bst #1, @byte_ffff07:8
bra sub_01c96:16
sub_01d2e: mov #4, r0h
mov r0h, @byte_ffe3e4
rts
sub_01d38: jsr sub_0fe8e
jmp sub_01c96
sub_01d40: bset #0, @byte_ffff02:8
bset #3, @byte_ffff02:8
b set p26dr ; Pin P26/PW14 (Port 2 Data Register)
setOutL c 5 ; Pin PC5
setOutL c 6 ; Pin PC6
jsr sub_01fe2
b clr pd6odr ; Pin PD6 (Port D Output Data Register)
setInL d 5 ; Pin PD5
setInH d 2 ; Pin PD2
setInL d 3 ; Pin PD3
sub_01dac: bclr #5, @byte_ffff05:8
setInH 2 5 ; Pin P25/PW13
setInH 2 7 ; Pin P27/PW15/CBLANK
b clr p13dr ; Pin P13/PW3 (Port 1 Data Register)
btst #5, @byte_ffff07:8
bne loc_01e10
b clr pc4odr ; Pin PC4 (Port C Output Data Register)
b clr pd6odr ; Pin PD6 (Port D Output Data Register)
push er0
stc ccr, r0l
set i
b clr pd5odr ; Pin PD5 (Port D Output Data Register)
mov @PDDDRcopy, r0h
bset #5, r0h
mov r0h, @PDDDRcopy
mov r0h, @pdddr ; Port D Data Direction Register
ldc r0l, ccr
pop er0
loc_01e10: jsr sub_01e16
rts
sub_01e16: push er0
push er1
push er2
push er6
mov #loc_01e58, er6
mov @byte_ffff01, r0h
mov @byte_ffff04, r1l
and r1l, r0h
mov @byte_ffff02, r0l
mov @byte_ffff05, r1l
and r1l, r0l
mov @byte_ffff03, r1h
mov @byte_ffff06, r1l
and r1l, r1h
bra loc_01e6a
loc_01e58: pop er6
pop er2
pop er1
pop er0
rts
loc_01e6a: mov #0x18, r1l
loc_01e6c: b clr p20dr ; Pin P20/PW8 (Port 2 Data Register)
shll r0h
rotxl r0l
rotxl r1h
b st p21dr ; Pin P21/PW9 (Port 2 Data Register)
b set p20dr ; Pin P20/PW8 (Port 2 Data Register)
dec r1l
bne loc_01e6c
b clr p22dr ; Pin P22/PW10 (Port 2 Data Register)
b set p22dr ; Pin P22/PW10 (Port 2 Data Register)
jmp @er6
rts_01e8c: rts
sub_01e8e: clr c
rts
sub_01e92: bclr #4, @byte_ffff01:8
jsr sub_01e16
rts
sub_01e9c: bset #4, @byte_ffff01:8
bclr #5, @byte_ffff01:8
bclr #6, @byte_ffff01:8
jsr sub_01e16
rts
sub_01eae: cmp #1, r0h
beq loc_01ebc
bset #5, @byte_ffff01:8
bclr #6, @byte_ffff01:8
bra loc_01ec4
loc_01ebc: bclr #5, @byte_ffff01:8
bset #6, @byte_ffff01:8
loc_01ec4: bset #4, @byte_ffff01:8
loc_01ec8: jmp sub_01e16
sub_01ecc: bclr #5, @byte_ffff01:8
bclr #6, @byte_ffff01:8
bra loc_01ec8
sub_01ed6: b set pc7odr ; Pin PC7 (Port C Output Data Register)
rts
sub_01ede: b clr pc7odr ; Pin PC7 (Port C Output Data Register)
rts
bld #4, @byte_ffff01:8
rts
bild #5, @byte_ffff01:8
rts
setP2_567: bld #2, r0l
b ist p25dr ; Pin P25/PW13 (Port 2 Data Register)
bld #3, r0h
b ist p26dr ; Pin P26/PW14 (Port 2 Data Register)
bld #1, r0l
b ist p27dr ; Pin P27/PW15/CBLANK (Port 2 Data Register)
bld #0, r0h
bist #0, @byte_ffff02:8
bld #4, r0h
bist #1, @byte_ffff02:8
bld #5, r0h
bist #2, @byte_ffff02:8
bld #1, r0h
bist #3, @byte_ffff02:8
jmp sub_01e16
nop1: jmp @er6
sub_01f22: b clr pc5odr ; Pin PC5 (Port C Output Data Register)
rts
sub_01f2a:
btst #1, @byte_ffff07:8
bne rts_01f36
b set pc5odr ; Pin PC5 (Port C Output Data Register)
rts_01f36: rts
sub_01f38:
b set pd2odr ; Pin PD2 (Port D Output Data Register)
b set pd3odr ; Pin PD3 (Port D Output Data Register)
rts
sub_01f46:
b clr pd2odr ; Pin PD2 (Port D Output Data Register)
b clr pd3odr ; Pin PD3 (Port D Output Data Register)
rts
lightOn: b set p13dr ; Pin P13/PW3 (Port 1 Data Register)
rts
lightOff: b clr p13dr ; Pin P13/PW3 (Port 1 Data Register)
rts
sub_01f60:
b set pc4odr ; Pin PC4 (Port C Output Data Register)
rts
sub_01f68:
b clr pc4odr ; Pin PC4 (Port C Output Data Register)
rts
rts_01f70: rts
sub_01f72: b set pd6odr ; Pin PD6 (Port D Output Data Register)
rts
sub_01f7a: b clr pd6odr ; Pin PD6 (Port D Output Data Register)
rts
sub_01f82:
push er0
stc ccr, r0l
set i
mov @PDDDRcopy, r0h
bclr #5, r0h
mov r0h, @PDDDRcopy
mov r0h, @pdddr ; Port D Data Direction Register
ldc r0l, ccr
pop er0
rts
sub_01fa4:
push er0
stc ccr, r0l
set i
b clr pd5odr ; Pin PD5 (Port D Output Data Register)
mov @PDDDRcopy, r0h
bset #5, r0h
mov r0h, @PDDDRcopy
mov r0h, @pdddr ; Port D Data Direction Register
ldc r0l, ccr
pop er0
rts
sub_01fba:
sub_01fc2:
rts
sub_01fce: bset #5, @byte_ffff02:8
jsr sub_01e16
rts
sub_01fd8: bclr #5, @byte_ffff02:8
jsr sub_01e16
rts
sub_01fe2: bset #6, @byte_ffff07:8
bra loc_01ff2
sub_01fe8: bclr #6, @byte_ffff07:8
bra loc_01ff2
sub_01fee: bst #6, @byte_ffff07:8
loc_01ff2: mov #task02o, r0h
jsr schedBackTask
rts
mov #0, r0h
b ild pc6pin ; Pin PC6 (Port C Input Data Register)
bst #0, r0h
rts
sub_02006: bld #0, r0h
b st pd0odr ; Pin PD0 (Port D Output Data Register)
bld #1, r0h
b st pd1odr ; Pin PD1 (Port D Output Data Register)
rts
sub_02018: and #0x0f, r0h
set i
mov @byte_ffff01, r0l
and #0xf0, r0l
or r0h, r0l
mov r0l, @byte_ffff01
clr i
jmp sub_01e16
rts
rts
sub_02036: bset #5, @byte_ffff07:8
rts
sub_0203c: bclr #5, @byte_ffff07:8
rts
sub_02042: bset #2, @byte_ffff07:8
rts
sub_02048: bclr #2, @byte_ffff07:8
rts
sub_0204e: bcc loc_02056
jsr sub_14712
bra loc_0205a
loc_02056: jsr sub_1470a
loc_0205a: jsr sub_0b4d8
rts
sub_02060: btst #3, @byte_ffff07:8
beq loc_02072
jsr sub_074bc
bcs loc_02072
jsr sub_01fd8
bra rts_02076
loc_02072: jsr sub_01fce
rts_02076: rts
sub_02078: bset #3, @byte_ffff07:8
bra sub_02060
sub_0207e: bclr #3, @byte_ffff07:8
bra sub_02060
rts_02084: rts
sub_02086: mov @byte_ffff01, r0h
and #0x0f, r0h
rts
sub_02090: mov #task02o, r0h
jsr schedBackTask
rts
sub_02098: jsr sub_020de
mov #byte_0284a, er0
mov er0, @long_ffe904
mov #byte_028ca, er0
mov er0, @long_ffe908
mov #byte_0294a, er0
mov er0, @long_ffe90c
mov #0, r0h
mov r0h, @byte_ffff08
mov #byte_027fa, er0
mov er0, @long_ffe910
rts
sub_020de: mov #0, er0
mov r0h, @byte_ffff09
mov r0h, @byte_ffff0a
mov #0, r1h
loc_020f2: mov r1h, @(byte_ffe3e5,er0)
inc r0l
cmp #0x10, r0l
bne loc_020f2
jsr sub_03742
rts
sub_02106: bset #6, @byte_ffff08
bra loc_02118
sub_02110: bclr #6, @byte_ffff08
loc_02118: jsr sub_02b1e
rts
bld #6, @byte_ffff08
rts
sub_02128:
btst #0, r0h
beq loc_02136
btst #1, @byte_ffff08
bne rts_0214c
loc_02136: bld #0, r0h
bst #1, @byte_ffff0a
bst #1, @byte_ffff09
jsr sub_0241c
rts_0214c: rts
sub_0214e: btst #4, @byte_ffff08
beq sub_02106
rts
sub_0215a: bra sub_02110
bset #4, @byte_ffff08
bra loc_0216e
bclr #4, @byte_ffff08
loc_0216e: jsr sub_054f2
cmp #3, r0l
bne rts_02186
btst #4, @byte_ffff08
bne loc_02184
bsr sub_02106
bra rts_02186
loc_02184: bsr sub_02110
rts_02186: rts
mov #0, r0h
bld #4, @byte_ffff08
bist #0, r0h
rts
sub_02196: mov #0, r1h
mov r1h, @byte_ffe3f5
mov r0h, r3h
jsr sub_038ac
mov r0h, r0l
mov r3h, r0h
cmp #3, r0l
bne loc_021c8
jsr sub_024de
jsr sub_02450
cmp #0, r0l
beq loc_021c6
jsr sub_03610
bild #1, r2h
band #7, r0h
bcs loc_021c6
jsr sub_0261c
loc_021c6: bra loc_02238
loc_021c8: jsr sub_02450
jsr sub_02292
jsr sub_024a6
bcs loc_021e4
bld #7, r0h
mov r1l, r0h
bst #7, r0h
jsr sub_02450
jsr sub_02292
loc_021e4: cmp #0, r0h
beq loc_02238
jsr sub_024b8
bixor #7, r0h
bcc loc_02238
btst #7, r1h
bne loc_021f8
btst #6, r1h
beq loc_02218
loc_021f8: btst #7, r0h
bne loc_0220a
btst #7, r1h
beq loc_02206
jsr sub_0250c
bra loc_0220a
loc_02206: jsr sub_0253e
loc_0220a: jsr sub_0261c
btst #7, r0h
beq loc_02216
jsr sub_0259a
loc_02216: bra loc_02234
loc_02218: btst #2, r1h
beq loc_02222
jsr sub_02690
bra loc_02234
loc_02222: jsr sub_0259a
jsr sub_0261c
btst #1, r1h
beq loc_02234
bset #7, r0h
jsr sub_0261c
loc_02234: jsr sub_024de
loc_02238: jsr sub_023a8
jsr sub_026fa
rts
sub_02242: push er0
jsr sub_035c0
mov r0, r1
pop er0
cmp #0, r1l
bne rts_02290
mov #0, r1h
mov r1h, @byte_ffe3f5
mov r0h, r3h
jsr sub_038ac
mov r0h, r0l
mov r3h, r0h
cmp #3, r0l
bne loc_02280
jsr sub_02450
cmp #0, r0l
beq loc_0227e
jsr sub_03610
btst #0, r2h
bne loc_0227e
jsr sub_0261c
loc_0227e: bra loc_0228c
loc_02280: jsr sub_02450
jsr sub_02292
jsr sub_0261c
loc_0228c: jsr sub_026fa
rts_02290: rts
sub_02292: mov r0h, r1l
bclr #7, r1l
mov #0, r1h
cmp #0x4b, r1l
blo loc_022b6
cmp #0x59, r1l
bhi loc_022b6
btst #1, @byte_ffff0a
beq loc_022ae
bset #7, r1h
bra loc_022b0
loc_022ae: bset #6, r1h
loc_022b0: bset #5, r1h
jmp rts_023a6
loc_022b6: cmp #0x5f, r1l
bne loc_022c2
bset #6, r1h
bset #5, r1h
jmp rts_023a6
loc_022c2: cmp #0x7c, r1l
bne loc_022f2
mov @byte_ffff0a, r1l
and #0x0c, r1l
beq loc_022d2
bset #4, r1h
loc_022d2: btst #5, @byte_ffff0a
bne loc_022e8
btst #4, @byte_ffff0a
bne loc_022e8
bset #7, r1h
loc_022e8: bset #5, r1h
bset #3, r1h
mov #0x44, r1l
bra rts_023a6:16
loc_022f2: cmp #0x7d, r1l
bne loc_02328
mov @byte_ffff0a, r1l
mov r1l, r2h
and #0xc0, r1l
beq loc_02322
btst #3, @byte_ffff08
bne loc_02316
btst #6, @byte_ffff08
bne loc_02322
loc_02316: btst #5, @byte_ffff08
bne loc_02322
bset #4, r1h
loc_02322: bset #3, r1h
mov #0x5a, r1l
bra rts_023a6
loc_02328: cmp #0x7e, r1l
bne loc_0234e
btst #7, r0h
beq loc_02334
mov #0, r0h
bra loc_0234c
loc_02334: mov @byte_ffff0a, r1l
and #0x30, r1l
beq loc_02344
bset #4, r1h
bset #5, r1h
bra loc_02346
loc_02344: bset #2, r1h
loc_02346: bset #3, r1h
bset #1, r1h
mov #0x46, r1l
loc_0234c: bra rts_023a6
loc_0234e: cmp #0x46, r1l
bne loc_02360
btst #7, r0h
beq loc_0235a
mov #0, r0h
bra loc_0235e
loc_0235a: bset #5, r1h
bset #1, r1h
loc_0235e: bra rts_023a6
loc_02360:
cmp #0x5a, r1l
bne loc_0239c
btst #1, @byte_ffff08
beq loc_0239c
btst #7, r0h
bne loc_0239c
push er0
push er1
jsr sub_03924
mov r0h, r2h
pop er1
pop er0
btst #1, r2h
bne loc_02394
btst #1, @byte_ffff0a:16
beq loc_0239a
loc_02394: jsr sub_02404
mov #0, r0h
loc_0239a: bra rts_023a6
loc_0239c: mov @byte_ffff0a, r2h
jsr sub_02766
rts_023a6: rts
sub_023a8: mov r0h, r2l
bclr #7, r2l
cmp #0x2c, r2l
blo loc_023e8
cmp #0x40, r2l
bhi loc_023e8
mov #0, r2h
mov @(byte_0243a - 0x2c,er2), r3h
bmi loc_023e8
bild #7, r0h
bcc loc_023d6
bset r3h, @byte_ffff0a
bset r3h, @byte_ffff09
bra loc_023e6
loc_023d6: bclr r3h, @byte_ffff0a
bclr r3h, @byte_ffff09
loc_023e6: bra rts_02402
loc_023e8: cmp #0x5a, r2l
bne rts_02402
btst #7, r0h
bne rts_02402
push er0
push er1
bsr sub_02404
pop er1
pop er0
rts_02402: rts
sub_02404:
bild #1, @byte_ffff0a
bst #1, @byte_ffff0a
bst #1, @byte_ffff09
sub_0241c: btst #1, @byte_ffff08
beq rts_02438
jsr sub_03924
bld #1, @byte_ffff0a
bst #1, r0h
jsr sub_06968
rts_02438:
rts
byte_0243a: .byte 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 5, -1, 3, -1, 2, -1, 4, -1
sub_02450: push er0
jsr sub_038ac
mov r0h, r2l
pop er0
dec r2l
mov #0, r2h
mov #0, e2
shll #2, er2
mov #long_ffe904, er3
add er2, er3
mov @er3, er2
mov r0h, r3l
bclr #7, r3l
mov #0, r3h
mov #0, e3
add er3, er2
mov @er2, r0l
bne rts_02486
mov #0, r0h
rts_02486: rts
mov #long_ffe904, er3
mov @er3, er2
mov r0h, r3l
bclr #7, r3l
mov #0, r3h
mov #0, e3
add er3, er2
mov @er2, r0l
bne rts_024a4
mov #0, r0h
rts_024a4: rts
sub_024a6: bild #7, r0h
bcs loc_024b4
bild #3, r1h
bcs loc_024b2
jsr sub_024b8
loc_024b2: bra rts_024b6
loc_024b4: bild #4, r1h
rts_024b6: rts
sub_024b8: mov r0h, r3l
bclr #7, r3l
mov r3l, r4h
and #7, r4h
shlr r3l
shlr r3l
shlr r3l
mov #0, r3h
mov #0, e3
mov @(byte_ffe3e5,er3), r3h
clr c
btst r4h, r3h
beq rts_024dc
set c
rts_024dc: rts
sub_024de: mov r0h, r3l
bclr #7, r3l
mov r3l, r4h
and #7, r4h
shlr r3l
shlr r3l
shlr r3l
mov #0, r3h
mov #0, e3
mov @(byte_ffe3e5,er3), r4l
bclr r4h, r4l
bild #7, r0h
bcc loc_02502
bset r4h, r4l
loc_02502: mov r4l, @(byte_ffe3e5,er3)
rts
sub_0250c: mov @byte_ffff09, r2h
and #0xc0, r2h
bne rts_0253c
push er0
push er1
mov #0x2c, r0h
jsr sub_02450
mov #0, r1h
bset #5, r1h
jsr sub_0261c
bset #7, @byte_ffff09
pop er1
pop er0
rts_0253c: rts
sub_0253e: mov @byte_ffff09, r2h
and #0xc0, r2h
beq rts_02598
push er0
push er1
btst #6, @byte_ffff09
beq loc_02568
mov #0xb9, r0h
jsr sub_02450
mov #0, r1h
bset #5, r1h
jsr sub_0261c
loc_02568: btst #7, @byte_ffff09
beq loc_02580
mov #0xac, r0h
jsr sub_02450
mov #0, r1h
bset #5, r1h
jsr sub_0261c
loc_02580: bclr #6, @byte_ffff09
bclr #7, @byte_ffff09
pop er1
pop er0
rts_02598: rts
sub_0259a: mov @byte_ffff09, r2h
mov @byte_ffff0a, r2l
xor r2h, r2l
beq rts_0261a
push er0
push er1
btst #6, r2l
beq loc_025d6
push er2
mov #0x39, r0h
bld #6, @byte_ffff09
bst #7, r0h
jsr sub_02450
mov #0, r1h
bset #5, r1h
jsr sub_0261c
pop er2
loc_025d6: btst #7, r2l
beq loc_025f2
mov #0x2c, r0h
bld #7, @byte_ffff09
bst #7, r0h
jsr sub_02450
mov #0, r1h
bset #5, r1h
jsr sub_0261c
loc_025f2: bld #6, @byte_ffff0a
bst #6, @byte_ffff09
bld #7, @byte_ffff0a
bst #7, @byte_ffff09
pop er1
pop er0
rts_0261a: rts
sub_0261c: push er0
jsr sub_038ac
mov r0h, r2h
pop er0
cmp #3, r2h
beq loc_02662
mov r0h, r2l
bclr #7, r2l
mov r2l, r3h
shlr r2l
shlr r2l
shlr r2l
mov #0, r2h
mov #0, e2
mov @(byte_0283a,er2), r3l
and #7, r3h
btst r3h, r3l
beq loc_02650
bset #5, r1h
loc_02650: btst #5, r1h
beq loc_02662
push er0
mov #0xe0, r0l
jsr sub_026dc
pop er0
loc_02662: btst #7, r0h
beq loc_0268a
push er0
jsr sub_038ac
mov r0h, r2h
pop er0
cmp #1, r2h
beq loc_02688
push er0
mov #0xf0, r0l
jsr sub_026dc
pop er0
bra loc_0268a
loc_02688: bset #7, r0l
loc_0268a: jsr sub_026dc
rts
sub_02690: push er0
mov #0xe1, r0l
jsr sub_026dc
mov #0x3a, r0h
jsr sub_02450
mov #0, r1h
jsr sub_0261c
pop er2
push er0
mov r2, r0
jsr sub_0261c
push er0
mov #0xe1, r0l
jsr sub_026dc
pop er2
pop er0
push er2
bset #7, r0h
jsr sub_0261c
pop er0
bset #7, r0h
jsr sub_0261c
rts
sub_026dc: mov @byte_ffe3f5, r2l
mov #0, r2h
mov #0, e2
mov r0l, @(byte_ffe3f6,er2)
inc r2l
mov r2l, @byte_ffe3f5
rts
sub_026fa: push er0
jsr sub_035c0
mov @byte_ffe3f5, r2l
beq loc_0273c
cmp r0h, r2l
bhi loc_02738
mov #0, er3
loc_02714: mov @(byte_ffe3f6,er3), r0h
push er2
push er3
jsr sub_034e4
pop er3
pop er2
inc r3l
cmp r2l, r3l
bne loc_02714
bra loc_0273c
loc_02738: jsr sub_02742
loc_0273c: pop er0
rts
sub_02742: push er0
push er1
jsr sub_038ac
cmp #1, r0h
bne loc_02756
mov #-1, r0h
bra loc_02758
loc_02756: mov #0, r0h
loc_02758: jsr sub_03526
pop er1
pop er0
rts
sub_02766: btst #7, @byte_ffff08
bne rts_027b8
mov @long_ffe910, er2
mov r0h, r3l
bclr #7, r3l
cmp #0x40, r3l
bhs rts_027b8
mov #0, r3h
mov #0, e3
add er3, er2
mov @er2, r1l
beq rts_027b8
btst #7, r0h
bne loc_027b6
btst #6, @byte_ffff08
beq loc_027aa
btst #1, @byte_ffff08
beq loc_027b6
jsr sub_0551e
bcc loc_027b6
loc_027aa: btst #1, @byte_ffff0a
beq loc_027b6
bset #4, r1h
loc_027b6: bset #3, r1h
rts_027b8: rts
byte_027ba: .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x5b, 0x60, 0x65, 0x5f, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c
.byte 0x61, 0x66, 0x64, 0x6c, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x62, 0x67
.byte 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x68, 0x6a
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
byte_027fa: .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x5b, 0x60, 0x65, 0x5f, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c
.byte 0x61, 0x66, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x62, 0x67
.byte 0x69, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x68, 0x6a
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
byte_0283a: .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8
.byte 0x81, 0x07, 0x00, 0x80, 0x00, 0xb8, 0x00, 0x00
byte_0284a: .byte 0x00, 0x29, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
.byte 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x7d, 0x0e
.byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16
.byte 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x2b, 0x3a, 0x1e
.byte 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26
.byte 0x27, 0x28, 0x2b, 0x1c, 0x2a, 0x56, 0x2c, 0x2d
.byte 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35
.byte 0x73, 0x36, 0x1d, 0x6c, 0x38, 0x39, 0x38, 0x32
.byte 0x1d, 0x7b, 0x79, 0x70, 0x54, 0x45, 0x46, 0x65
.byte 0x66, 0x67, 0x63, 0x52, 0x53, 0x1c, 0x00, 0x4b
.byte 0x47, 0x4f, 0x52, 0x48, 0x50, 0x49, 0x51, 0x53
.byte 0x00, 0x4d, 0x45, 0x47, 0x4b, 0x4f, 0x00, 0x35
.byte 0x48, 0x4c, 0x50, 0x52, 0x37, 0x49, 0x4d, 0x51
.byte 0x53, 0x4a, 0x4e, 0x68, 0x1c, 0x6a, 0x01, 0x69
.byte 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42
.byte 0x43, 0x44, 0x57, 0x58, 0x37, 0x46, 0x45, 0x00
byte_028ca: .byte 0x00, 0x0e, 0x16, 0x1e, 0x26, 0x25, 0x2e, 0x36
.byte 0x3d, 0x3e, 0x46, 0x45, 0x4e, 0x55, 0x6a, 0x66
.byte 0x0d, 0x15, 0x1d, 0x24, 0x2d, 0x2c, 0x35, 0x3c
.byte 0x43, 0x44, 0x4d, 0x54, 0x5b, 0x5d, 0x58, 0x1c
.byte 0x1b, 0x23, 0x2b, 0x34, 0x33, 0x3b, 0x42, 0x4b
.byte 0x4c, 0x52, 0x5d, 0x5a, 0x12, 0x61, 0x1a, 0x22
.byte 0x21, 0x2a, 0x32, 0x31, 0x3a, 0x41, 0x49, 0x4a
.byte 0x51, 0x59, 0x14, 0x48, 0x11, 0x29, 0x11, 0x3a
.byte 0x14, 0x67, 0x64, 0x13, 0x84, 0x77, 0x7e, 0x10
.byte 0x18, 0x20, 0x5e, 0x70, 0x71, 0x5a, 0x00, 0x6b
.byte 0x6c, 0x69, 0x70, 0x75, 0x72, 0x7d, 0x7a, 0x71
.byte 0x00, 0x74, 0x77, 0x6c, 0x6b, 0x69, 0x00, 0x4a
.byte 0x75, 0x73, 0x72, 0x70, 0x7c, 0x7d, 0x74, 0x7a
.byte 0x71, 0x7b, 0x79, 0x28, 0x5a, 0x38, 0x76, 0x30
.byte 0x05, 0x06, 0x04, 0x0c, 0x03, 0x0b, 0x83, 0x0a
.byte 0x01, 0x09, 0x78, 0x07, 0x7c, 0x7e, 0x77, 0x00
byte_0294a: .byte 0x00, 0x0e, 0x16, 0x1e, 0x26, 0x25, 0x2e, 0x36
.byte 0x3d, 0x3e, 0x46, 0x45, 0x4e, 0x55, 0x5d, 0x66
.byte 0x0d, 0x15, 0x1d, 0x24, 0x2d, 0x2c, 0x35, 0x3c
.byte 0x43, 0x44, 0x4d, 0x54, 0x5b, 0x5c, 0x14, 0x1c
.byte 0x1b, 0x23, 0x2b, 0x34, 0x33, 0x3b, 0x42, 0x4b
.byte 0x4c, 0x52, 0x53, 0x5a, 0x12, 0x13, 0x1a, 0x22
.byte 0x21, 0x2a, 0x32, 0x31, 0x3a, 0x41, 0x49, 0x4a
.byte 0x51, 0x59, 0x11, 0x00, 0x19, 0x29, 0x39, 0x00
.byte 0x58, 0x85, 0x86, 0x87, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x67, 0x64, 0x5a, 0x00, 0x61
.byte 0x6e, 0x65, 0x67, 0x63, 0x60, 0x6f, 0x6d, 0x64
.byte 0x00, 0x6a, 0x76, 0x6c, 0x6b, 0x69, 0x00, 0x77
.byte 0x75, 0x73, 0x72, 0x70, 0x7e, 0x7d, 0x74, 0x7a
.byte 0x71, 0x84, 0x7c, 0x00, 0x79, 0x00, 0x08, 0x00
.byte 0x07, 0x0f, 0x17, 0x1f, 0x27, 0x2f, 0x37, 0x3f
.byte 0x47, 0x4f, 0x56, 0x5e, 0x57, 0x5f, 0x62, 0x00
.byte 0x6a, 0x20, 0x00, 0xff, 0xff, 0x0a, 0xe0, 0xc0
.byte 0x47, 0x04, 0x06, 0xfe, 0x40, 0x02, 0x04, 0x01
.byte 0x54, 0x70, 0x6a, 0x20, 0x00, 0xff, 0xff, 0x0a
.byte 0xe0, 0x0c, 0x47, 0x04, 0x06, 0xfe, 0x40, 0x02
.byte 0x04, 0x01, 0x54, 0x70, 0x6a, 0x20, 0x00, 0xff
.byte 0xff, 0x0a, 0xe0, 0x30, 0x47, 0x04, 0x06, 0xfe
.byte 0x40, 0x02, 0x04, 0x01, 0x54, 0x70
sub_02a00: cmp #0, r0h
bne loc_02a24
mov #byte_027fa, er0
mov er0, @long_ffe910
bclr #7, @byte_ffff08
bclr #5, @byte_ffff08
bra rts_02a5c
loc_02a24: cmp #1, r0h
bne loc_02a48
mov #byte_027ba, er0
mov er0, @long_ffe910
bclr #7, @byte_ffff08
bclr #5, @byte_ffff08
bra rts_02a5c
loc_02a48: cmp #2, r0h
bne rts_02a5c
bset #7, @byte_ffff08
bset #5, @byte_ffff08
rts_02a5c: rts
sub_02a5e: cmp #0, r0l
beq loc_02af2:16
cmp #3, r0l
bhi loc_02af2:16
btst #7, @byte_ffff08
bne loc_02af2
mov #long_ffe904, er2
dec r0l
push er0
mov #0, r0h
mov #0, e0
shll #2, er0
add er0, er2
mov @er2, er2
pop er0
mov #0, r0l
mov er2, er3
mov #0, r1h
loc_02a98: mov @er2+, r1l
cmp #0x40, r1h
blo loc_02aa2
cmp #0x5a, r1h
blo loc_02aa6
loc_02aa2: cmp r1l, r0h
beq loc_02aac
loc_02aa6: inc r1h
cmp #0x80, r1h
blo loc_02a98
loc_02aac: cmp #0x80, r1h
bhs loc_02af0
cmp #0x40, r1h
bhs loc_02ac8
mov @long_ffe910, er2
add r1h, r2l
addx #0, r2h
bcc loc_02ac4
inc #1, e2
loc_02ac4: mov @er2, r1h
bra loc_02ae2
loc_02ac8: mov @long_ffe910, er2
mov #0, r4h
loc_02ad2: mov @er2+, r4l
cmp r4l, r1h
beq loc_02ae0
inc r4h
cmp #0x40, r4h
blo loc_02ad2
mov #0, r4h
loc_02ae0: mov r4h, r1h
loc_02ae2: cmp #0, r1h
beq loc_02af0
add r1h, r3l
addx #0, r3h
bcc loc_02aee
inc #1, e3
loc_02aee: mov @er3, r0l
loc_02af0: bra rts_02af4
loc_02af2: mov #0, r0l
rts_02af4: rts
sub_02af6: bset #3, @byte_ffff08
bra sub_02b1e
sub_02b00: bclr #3, @byte_ffff08
bra sub_02b1e
sub_02b0a: bset #2, @byte_ffff08
bra sub_02b1e
sub_02b14: bclr #2, @byte_ffff08
bra sub_02b1e
sub_02b1e: sub er0, er0 ; mov #0, er0
bld #7, @byte_ffff08
bst #4, r0l
bld #3, @byte_ffff08
bst #3, r0l
bld #2, @byte_ffff08
bst #2, r0l
push er0
jsr sub_054f2
pop er1
cmp #0, r0h
beq loc_02b5c
cmp #3, r0l
bne loc_02b56
bset #0, r1l
bra loc_02b5c
loc_02b56: cmp #2, r0l
bne loc_02b5c
bset #1, r1l
loc_02b5c: mov @(long_02bd2,er1), r0h
mov @byte_ffff08, r0l
xor r0h, r0l
and #3, r0l
beq rts_02bd0
mov #-1, r1h
btst #1, r0l
beq loc_02b8c
btst #1, r0h
beq loc_02b8a
bclr #1, @byte_ffff0a:16
bclr #1, @byte_ffff09:16
mov #0, r1h
bra loc_02b8c
loc_02b8a: mov #1, r1h
loc_02b8c: btst #0, r0l
beq loc_02b9a
btst #0, r0h
beq loc_02b98
mov #0, r1h
bra loc_02b9a
loc_02b98: mov #1, r1h
loc_02b9a: push er0
cmp #-1, r1h
beq loc_02bb8
push er1
jsr sub_03924
pop er1
cmp #0, r1h
bne loc_02bb4
bclr #1, r0h
loc_02bb4: jsr sub_06968
loc_02bb8: pop er0
bld #1, r0h
bst #1, @byte_ffff08
bld #0, r0h
bst #0, @byte_ffff08
rts_02bd0: rts
long_02bd2: .long 0x00000000
.long 0x00010101
.long 0x02030000
.long 0x00000000
.long 0x00000000
.long 0x01010100
.long 0x00000000
.long 0x01010100
sub_02bf2: bild #1, @byte_ffff08
rts
sub_02bfc: bild #0, @byte_ffff08
rts
sub_02c06: bld #1, @byte_ffff0a:16
rts
; FRT Output Compare A
ocia: push er0
b clr tier.ociae ; Output Compare Interrupt A Enable (FRT Timer Interrupt Enable Register)
b clr tcsr.ocfa ; Output Compare Flag A (FRT Timer Control/Status Register)
b clr tocr.ocrs ; Output Compare Register Select (FRT Timer Output Compare Control Register)
mov @word_ffe914, r0 ; initially 1250 = 1 ms @ 10 MHz
mov r0, @ocra ; FRT Output Compare Register A
clr i
push er1
push er2
mov @curScanLine, r0h
jsr setScanLine
mov #20, r0h ; 20 * 5 states @ 10 MHz = 10 µs
busywait1: nop
nop
dec r0h
bne busywait1
btst #5, @byte_ffff0b:8
beq loc_02c74
set i
mov @tick, r0
inc #1, r0
mov r0, @tick
clr i
mov @word_ffe928, r0
bmi loc_02c74
dec #1, r0
mov r0, @word_ffe928
bpl loc_02c74
jsr sub_016b6
loc_02c74: btst #7, @byte_ffff0b:8
beq loc_02c7e
jmp loc_02d2c
loc_02c7e: btst #6, @byte_ffff0b:8
beq loc_02d02
bld #5, @byte_ffff0b:8
bxor #4, @byte_ffff0b:8
bcs loc_02d00
mov @pgpin, r1h ; Port G Input Data Register
not r1h
mov @byte_ffe3fe, r1l
cmp r1h, r1l
bne loc_02cf2
mov @byte_ffe3ff, r1l
inc r1l
mov r1l, @byte_ffe3ff
mov @byte_ffe401, r0h
cmp r0h, r1l
blo loc_02cf0
mov @curScanLine, r0l
mov #0, r0h
mov #0, e0
mov @(curScanRead,er0), r1l
cmp r1l, r1h
beq loc_02ce8
mov r1h, @(curScanRead,er0)
bset #3, @byte_ffff0c:8
mov #0x10, r1l
mov r1l, @byte_ffe400
mov #task03o, r0h
jsr schedBackTask
loc_02ce8: bclr #6, @byte_ffff0b:8
jsr nextScanLine
loc_02cf0: bra loc_02d00
loc_02cf2: mov r1h, @byte_ffe3fe
mov #0, r0h
mov r0h, @byte_ffe3ff
loc_02d00: bra loc_02d2c
loc_02d02: bsr readScanLine
btst #6, @byte_ffff0b:8
bne loc_02d24
mov @byte_ffe400, r2l
beq loc_02d22
dec r2l
mov r2l, @byte_ffe400
bne loc_02d22
mov #task03o, r0h
jsr schedBackTask
loc_02d22: bra loc_02d2c
loc_02d24: bld #5, @byte_ffff0b:8
bst #4, @byte_ffff0b:8
loc_02d2c: mov #13, r0h
bsr setScanLine
mov @word_ffe914, r0
mov #625, r1
add r1, r0
mov r0, @word_ffe914 ; +625 / 1.25 MHz = +500 µs @ 10 MHz
bld #5, @byte_ffff0b:8
bist #5, @byte_ffff0b:8
pop er2
pop er1
set i
b set tier.ociae ; Output Compare Interrupt A Enable (FRT Timer Interrupt Enable Register)
pop er0
rte
readScanLine: mov @curScanLine, r0l
mov #0, r0h
mov #0, e0
mov @(curScanRead,er0), r1l
mov @pgpin, r1h ; Port G Input Data Register
not r1h
cmp r1l, r1h
beq loc_02d90
bset #6, @byte_ffff0b:8
mov r1h, @byte_ffe3fe
mov #0, r0h
mov r0h, @byte_ffe3ff
bra rts_02d92
loc_02d90: bsr nextScanLine
rts_02d92: rts
setScanLine: mov #word_02db0, er1
shll r0h
add r0h, r1l
addx #0, r1h
bcc loc_02da4
inc #1, e1
loc_02da4: mov @er1, r0
mov r0h, @peddr ; Port E Data Direction Register
mov r0l, @pfddr ; Port F Data Direction Register
rts
word_02db0: .word 0b0000000100000000 ; 0
.word 0b0000001000000000 ; 1
.word 0b0000010000000000 ; 2
.word 0b0000100000000000 ; 3
.word 0b0001000000000000 ; 4
.word 0b0010000000000000 ; 5
.word 0b0100000000000000 ; 6
.word 0b1000000000000000 ; 7
.word 0b0000000000000001 ; 8
.word 0b0000000000000010 ; 9
.word 0b0000000000000100 ; 10
.word 0b0000000000001000 ; 11
.word 0b0000000000010000 ; 12
.word 0b0000000000100000 ; 13
.word 0b0000000001000000 ; 14
.word 0b0000000010000000 ; 15
nextScanLine: mov @curScanLine, r0l
inc r0l
and #0x0f, r0l
mov r0l, @curScanLine
rts
sub_02de2: b clr tier.ociae ; Output Compare Interrupt A Enable (FRT Timer Interrupt Enable Register)
mov #0, r0
mov r0h, @byte_ffff0b:8
bset #7, @byte_ffff0b:8
mov #curScanRead, er1
mov #prePrevScanRead, er2
mov #16, r3h
clrScanBufs1: mov r0h, @er1
mov r0h, @er2
adds #1, er1
adds #1, er2
dec r3h
bne clrScanBufs1
mov #0x10, r1h
mov r1h, @byte_ffe400
mov #7, r1h
mov r1h, @byte_ffe401
bsr initFRT
jsr sub_02098
jsr sub_033c2
mov #-1, r0h
mov r0h, @byte_ffe40a
rts
initFRT: b clr mstpcrh.mstp13 ; FRT (Module Stop Control Register H)
mov #625, r1 ; 625 / 1.25 MHz = 500 µs @ 10 MHz
stc ccr, r2h
set i
b clr tocr.ocrs ; Output Compare Register Select (FRT Timer Output Compare Control Register)
mov r1, @ocra ; FRT Output Compare Register A
ldc r2h, ccr
b clr tcsr.cclra ; Counter Clear A (FRT Timer Control/Status Register)
b clr tcr.cks1 ; Clock Select 1 (FRT Timer Control Register): phi/8 internal clock
b set tcr.cks0 ; Clock Select 0 (FRT Timer Control Register): = 1.25 MHz @ 10 MHz
mov #1250, r0 ; 1250 / 1.25 MHz = 1 ms @ 10 MHz
mov r0, @word_ffe914
mov #0, r0
stc ccr, r1h
set i
mov r0, @frc ; FRT Free-Running Counter
b clr tcsr.ocfa ; Output Compare Flag A (FRT Timer Control/Status Register)
b set tier.ociae ; Output Compare Interrupt A Enable (FRT Timer Interrupt Enable Register)
ldc r1h, ccr
rts
sub_02e72: mov #0, r0h
bset #7, @byte_ffff0b:8
bclr #6, @byte_ffff0b:8
mov #0, r0h
mov #curScanRead, er1
mov #prePrevScanRead, er2
mov #16, r3h
clrScanBufs2: mov r0h, @er1
mov r0h, @er2
adds #1, er1
adds #1, er2
dec r3h
bne clrScanBufs2
mov r0h, @byte_ffe93a
mov r0h, @byte_ffe94c
mov #0, r0h
mov r0h, @byte_ffe408
mov r0h, @byte_ffff0c:8
bset #6, @byte_ffff0c:8
bclr #7, @byte_ffff0b:8
mov #500, r1 ; 500 ms
mov r1, @typematicDelay
mov #92, r1 ; 92 ms = 10.9 cps
mov r1, @typematicIntvl
jsr sub_020de
rts
stm er0-er3, @-sp
mov #6, r0h
loc_02ed6: bset r0h, @byte_ffff0c:8
loc_02eda: mov #task03o, r0h
jsr schedBackTask
ldm @sp+, er0-er3
rts
sub_02ee6: stm er0-er3, @-sp
mov #6, r0h
loc_02eec: bclr r0h, @byte_ffff0c:8
bra loc_02eda
sub_02ef2: stm er0-er3, @-sp
mov #5, r0h
bra loc_02ed6
sub_02efa: stm er0-er3, @-sp
mov #5, r0h
bra loc_02eec
sub_02f02: stm er0-er3, @-sp
mov #4, r0h
bra loc_02ed6
sub_02f0a: stm er0-er3, @-sp
mov #4, r0h
bra loc_02eec
sub_02f12: bild #4, @byte_ffff0c:8
rts
sub_02f18: mov #0, r0h
mov r0h, @byte_ffe408
rts
sub_02f22: mov r0, @typematicDelay
mov r1, @typematicIntvl
rts
task03: mov @byte_ffff0c:8, r0h
and #0x70, r0h
bne loc_03040:16
btst #3, @byte_ffff0c:8
beq loc_02fda:16
set i
mov @byte_ffe400, r0h
beq loc_02f50
clr i
bra loc_02fda:16
loc_02f50: bclr #3, @byte_ffff0c:8
mov @curScanRead + 0, r0
mov r0, @prevScanRead + 0
mov @curScanRead + 2, r0
mov @curScanRead + 4, r1
mov @curScanRead + 6, r2
mov @curScanRead + 8, r3
mov @curScanRead + 10, r4
mov @curScanRead + 12, r5
mov @curScanRead + 14, r6
clr i
mov r0, @prevScanRead + 2
mov r1, @prevScanRead + 4
mov r2, @prevScanRead + 6
mov r3, @prevScanRead + 8
mov r4, @prevScanRead + 10
mov r5, @prevScanRead + 12
mov r6, @prevScanRead + 14
jsr checkKeyCount
bcc loc_02fd2
btst #7, @byte_ffff0c:8
bne loc_02fcc
mov #task03o, r0h
mov #0, r1
jsr schedBackTaskDelayed
loc_02fcc: bset #7, @byte_ffff0c:8
bra loc_02fda
loc_02fd2: bclr #7, @byte_ffff0c:8
jsr sub_0304a
loc_02fda: btst #7, @byte_ffff0c:8
bne loc_02fea
mov @byte_ffe408, r0h
bmi loc_03040
beq loc_03040
loc_02fea: mov #task03o, r0h
jsr checkSchedTask
bcc loc_03040
btst #7, @byte_ffff0c:8
beq loc_03010
jsr sub_02742
mov #0, r0h
mov r0h, @byte_ffe408
mov #task03o, r0h
mov #750, r1
jsr schedBackTaskDelayed
bra loc_03040
loc_03010: mov @byte_ffe408, r0h
bmi loc_03040
beq loc_03040
jsr sub_024b8
bcc loc_03038
mov @byte_ffe408, r0h
jsr sub_02242
mov #task03o, r0h
mov @typematicIntvl, r1
jsr schedBackTaskDelayed
bra loc_03040
loc_03038: mov #0, r0h
mov r0h, @byte_ffe408
loc_03040: mov #task03o, r0h
jsr schedFrontTask
clr c
rts
sub_0304a: mov #15 + 1, er1
loc_03050: mov @(prevScanRead,er1), r2h
mov @(prePrevScanRead,er1), r2l
xor r2h, r2l
beq loc_0312c:16
mov #7, r3l
loc_03068: btst r3l, r2l
beq loc_0311e:16
mov er1, er4
shal r4l
shal r4l
shal r4l
add r3l, r4l
jsr sub_07a8a
btst r3l, r2h
beq loc_030ac
cmp #0x80, r4l
bhs loc_030ac
push er1
push er2
push er3
push er4
mov r4l, r0h
jsr sub_0790e
pop er4
pop er3
pop er2
pop er1
mov r0h, r4l
loc_030ac: mov @keyLocTabPtr, er0
add r4, r0
bcc loc_030ba
inc #1, e0
loc_030ba: cmp #-1, r4l
beq loc_0311e
mov @er0, r0h
beq loc_0311e
mov #77, r0l ; Access key location
cmp r0l, r0h
bne loc_030e6
btst r3l, r2h
beq loc_030e0
mov #0x2b, r0h
mov @byte_ffe5ed, r0l ; 0x8e
beq loc_030d8
mov r0l, r0h
loc_030d8: mov r0h, @byte_ffe403
bra loc_030e6
loc_030e0: mov @byte_ffe403, r0h
loc_030e6: btst r3l, r2h
bne loc_030ec
bset #7, r0h
loc_030ec: push er1
push er2
push er3
jsr sub_02196
btst #7, r0h
bne loc_03112
mov r0h, @byte_ffe408
mov #task03o, r0h
mov @typematicDelay, r1
jsr schedBackTaskDelayed
loc_03112: pop er3
pop er2
pop er1
loc_0311e: dec r3l
bpl loc_03068:16
mov r2h, @(prePrevScanRead,er1)
loc_0312c: dec r1l
bmi rts_03134
bra loc_03050:16
rts_03134: rts
sub_03136: cmp #0, r0h
beq loc_031a0
mov r0h, r0l
bclr #7, r0l
cmp #0x14, r0l
bhs loc_0319e
mov r0l, r1h
mov r0l, r2l
and #7, r1h
shlr r2l
shlr r2l
shlr r2l
mov #0, r2h
mov #0, e2
mov @(byte_ffe404,er2), r1l
bclr r1h, r1l
btst #7, r0h
bne loc_03164
bset r1h, r1l
loc_03164: mov r1l, @(byte_ffe404,er2)
mov #0x59, r1h
mov r0h, r1l
bclr #7, r1l
add r1h, r1l
bld #7, r0h
bst #7, r1l
mov r1l, r0h
mov r0h, @byte_ffe408
push er0
mov #task03o, r0h
mov @typematicDelay, r1
jsr schedBackTaskDelayed
pop er0
jsr sub_02196
mov r0h, @byte_ffe408
loc_0319e: bra rts_031ac
loc_031a0: jsr sub_02742
mov #0, r0h
mov r0h, @byte_ffe408
rts_031ac: rts
sub_031ae: mov #0, r0h
mov #0, er1
mov #4, r0l
loc_031b8: mov @(byte_ffe404,er1), r2h
beq loc_031d2
mov #0, r2l
loc_031c4: btst r2l, r2h
bne loc_031de
inc r0h
inc r2l
cmp #8, r2l
blo loc_031c4
bra loc_031d4
loc_031d2: add #8, r0h
loc_031d4: inc #1, er1
dec r0l
bne loc_031b8
set c
rts
loc_031de: clr c
rts
checkKeyCount: mov #prevScanRead, er0
mov #16, r1h
mov #0, r1l
loc_031ec: mov @er0+, r2l
beq loc_0321e
mov r2l, r3h
xor r1l, r2l
not r2l
and r1l, r2l
beq loc_0321c
mov #0, r4h
mov #0, e4
mov r3h, r4l
shlr r4l
shlr r4l
shlr r4l
mov @(byte_0326c,er4), r2l
mov r3h, r2h
and #7, r2h
btst r2h, r2l
beq loc_0321c
set c
bra loc_03224
loc_0321c: or r3h, r1l
loc_0321e: dec r1h
bne loc_031ec
clr c
loc_03224: bcs rts_0326a
mov #prevScanRead + 15, er0
mov #16, r1h
mov #0, r1l
loc_03230: mov @er0, r2l
subs #1, er0
beq loc_03264
mov r2l, r3h
xor r1l, r2l
not r2l
and r1l, r2l
beq loc_03262
mov #0, r4h
mov #0, e4
mov r3h, r4l
shlr r4l
shlr r4l
shlr r4l
mov @(byte_0326c,er4), r2l
mov r3h, r2h
and #7, r2h
btst r2h, r2l
beq loc_03262
set c
bra rts_0326a
loc_03262: or r3h, r1l
loc_03264: dec r1h
bne loc_03230
clr c
rts_0326a: rts
byte_0326c: .byte ~0b00010111, ~1, ~1, ~0, ~1, ~0, ~0, ~0
.byte ~1, ~0, ~0, ~0, ~0, ~0, ~0, ~0
.byte ~1, ~0, ~0, ~0, ~0, ~0, ~0, ~0
.byte ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0
sub_0328c: set i
bld #7, @byte_ffff0b:8
bset #7, @byte_ffff0b:8
clr i
bst #0, r0h
bld #6, @byte_ffff0c:8
bset #6, @byte_ffff0c:8
bst #1, r0h
mov r0h, @byte_ffe40b
mov #0, r0h
mov r0h, @peddr ; Port E Data Direction Register
mov r0h, @pfddr ; Port F Data Direction Register
rts
sub_032b6: mov @byte_ffe40b, r0h
bld #0, r0h
bst #7, @byte_ffff0b:8
bld #1, r0h
bst #6, @byte_ffff0c:8
rts
mov @keyLocTabPtr, er1
mov #0, r2h
loc_032d4: mov @er1+, r2l
beq loc_032dc
cmp r0h, r2l
beq loc_032e2
loc_032dc: inc r2h
bpl loc_032d4
mov #-1, r2h
loc_032e2: mov r2h, r0h
rts
getKeyLoc: cmp #128, r0h
bhs loc_032fe
mov @keyLocTabPtr, er1
add r0h, r1l
addx #0, r1h
bcc loc_032fa
inc #1, e1
loc_032fa: mov @er1, r0h
bra rts_03300
loc_032fe: mov #0, r0h
rts_03300: rts
mov r0h, r1l
and #7, r0h
shlr r1l
shlr r1l
shlr r1l
mov #0, r1h
mov #0, e1
mov @(prePrevScanRead,er1), r0l
btst r0h, r0l
beq loc_03322
clr c
bra rts_03324
loc_03322: set c
rts_03324: rts
rts_03326: rts
sub_03328: bset #7, @byte_ffff0b:8
rts
sub_0332e: mov #prePrevScanRead, er1
mov #16, r0h
loc_03336: mov @er1+, r0l
bne loc_0333e
dec r0h
bne loc_03336
loc_0333e: bne loc_03344
set c
bra rts_03346
loc_03344: clr c
rts_03346: rts
sub_03348: mov @byte_ffe409, r0h
cmp #7, r0h
bne loc_03356
set c
bra rts_03358
loc_03356: clr c
rts_03358: rts
sub_0335a: and #7, r0h
mov r0h, @byte_ffe409
cmp #7, r0h
bne loc_0336c
jsr sub_03328
bra rts_03398
loc_0336c: mov r0h, r1l
mov #0, r1h
mov #0, e1
mov @(byte_0339a,er1), r0h
push er0
and #7, r0h
jsr rts_03326
pop er0
shlr r0h
shlr r0h
shlr r0h
shlr r0h
and #7, r0h
jsr sub_02a00
rts_03398: rts
byte_0339a: .byte 0x00, 0x12, 0x01, 0x22, 0x20, 0x02, 0x21, 0x00
sub_033a2: mov @byte_ffe409, r0l
and #7, r0l
mov #0, r0h
mov #0, e1
mov @(byte_0339a,er0), r0h
rts
sub_033ba: mov @byte_ffe409, r0h
rts
sub_033c2: b set p10pcr ; Pin P10/PW0 (Port 1 Pull-Up MOS Control Register)
b set p11pcr ; Pin P11/PW1 (Port 1 Pull-Up MOS Control Register)
b set p12pcr ; Pin P12/PW2 (Port 1 Pull-Up MOS Control Register)
jsr delay25
mov @p1dr:8, r0h ; Port 1 Data Register
and #7, r0h
b clr p10pcr ; Pin P10/PW0 (Port 1 Pull-Up MOS Control Register)
b clr p11pcr ; Pin P11/PW1 (Port 1 Pull-Up MOS Control Register)
b clr p12pcr ; Pin P12/PW2 (Port 1 Pull-Up MOS Control Register)
push er0
bld #2, r0h
bst #3, @byte_ffff0b:8
jsr sub_10fec
pop er0
bclr #2, r0h
push er0
jsr sub_10ed8
pop er0
jmp sub_0335a
sub_03406: set c
bra loc_0340c
sub_0340a: clr c
loc_0340c: mov @byte_ffe40a, r0h
bmi rts_03430
mov #byte_ffe94c, er1
bcc loc_03422
bset r0h, @er1
bra loc_03426
loc_03422: bclr r0h, @er1
loc_03426: bset #3, @byte_ffff0c:8
mov #task03o, r0h
jsr schedBackTask
rts_03430: rts
sub_03432: mov @byte_ffe40a, r0h
bmi loc_03468
mov #byte_ffe93a, er1
btst r0h, @er1
bne loc_03468
bset r0h, @er1
mov @keyLocTabPtr, er1
add #0x80, er1
add r0h, r1l
addx #0, r1h
bcc loc_03460
inc #1, e1
loc_03460: mov @er1, r0h
beq loc_03468
jsr sub_02196
loc_03468: bra sub_03406
sub_0346a: cmp #0, r0h
beq loc_03472
cmp #6, r0h
bne rts_03492
loc_03472: bhi rts_03492
dec r0h
mov @byte_ffe40a, r0l
bmi loc_0348c
cmp r0h, r0l
beq loc_0348c
mov #byte_ffe94c, er1
bclr r0l, @er1
loc_0348c: mov r0h, @byte_ffe40a
rts_03492: rts
chkIfVolAccKey: btst #2, @byte_ffff0b:8
beq loc_034be
mov @volAccKeyTabPtr, er1
mov r0h, r0l
shlr r0l
shlr r0l
shlr r0l
add r0l, r1l
addx #0, r1h
bcc loc_034b2
inc #1, e1
loc_034b2: and #7, r0h
btst r0h, @er1
beq loc_034be
clr c
bra rts_034c0
loc_034be: set c
rts_034c0: rts
sub_034c2: btst #7, r0h
beq loc_034ca
mov #0, r0
loc_034ca: mov r0, @word_ffe928
rts
sub_034d2: bild #3, @byte_ffff0b:8
rts
sub_034d8: set c
bra loc_034de
sub_034dc: clr c
loc_034de: bst #2, @byte_ffff0b:8
rts
sub_034e4: jsr sub_035f0
mov #0x10, r1h
loc_034ea: mov @byte_ffe41e, r1l
mov @byte_ffe420, r0l
cmp r1h, r0l
bhs loc_03522
mov #0, r1h
mov #0, e1
mov r0h, @(byte_ffe40d,er1)
inc r1l
inc r0l
cmp #0x11, r1l
bne loc_03512
mov #0, r1l
loc_03512: mov r1l, @byte_ffe41e
mov r0l, @byte_ffe420
clr c
bra rts_03524
loc_03522: set c
rts_03524: rts
sub_03526: jsr sub_035f0
mov #0x11, r1h
bra loc_034ea
sub_0352e: jsr sub_035f0
btst #7, @byte_ffff0d
beq loc_0354c
mov @byte_ffe40c, r0h
bclr #7, @byte_ffff0d
bra rts_03584
loc_0354c: mov @byte_ffe420, r0l
beq loc_03582
mov @byte_ffe41f, r1l
mov #0, r1h
mov #0, e1
mov @(byte_ffe40d,er1), r0h
inc r1l
dec r0l
cmp #0x11, r1l
bne loc_03572
mov #0, r1l
loc_03572: mov r1l, @byte_ffe41f
mov r0l, @byte_ffe420
clr c
bra rts_03584
loc_03582: set c
rts_03584: rts
sub_03586: jsr sub_035f0
btst #7, @byte_ffff0d
beq loc_0359c
mov @byte_ffe40c, r0h
bra rts_035be
loc_0359c: mov @byte_ffe420, r0l
beq loc_035bc
mov @byte_ffe41f, r1l
mov #0, r1h
mov #0, e1
mov @(byte_ffe40d,er1), r0h
clr c
bra rts_035be
loc_035bc: set c
rts_035be: rts
sub_035c0: jsr sub_035f0
mov #0x10, r0h
mov @byte_ffe420, r0l
sub r0l, r0h
bcc rts_035d2
mov #0, r0h
rts_035d2: rts
sub_035d4: mov #0, r0h
mov r0h, @byte_ffff0d
mov r0h, @byte_ffe41e
mov r0h, @byte_ffe41f
mov r0h, @byte_ffe420
rts
sub_035f0: btst #5, @byte_ffff0d
beq rts_03604
push er0
bsr sub_035d4
pop er0
rts_03604: rts
sub_03606: bset #5, @byte_ffff0d
rts
sub_03610: push er3
mov r0l, r2l
mov r2l, r3l
and #3, r2l
shll r2l
shlr r3l
shlr r3l
mov #0, r3h
mov #0, e3
mov @(byte_ffe44f,er3), r3h
mov #0, r2h
btst r2l, r3h
beq loc_03636
bset #0, r2h
loc_03636: inc r2l
btst r2l, r3h
beq loc_0363e
bset #1, r2h
loc_0363e: pop er3
rts
sub_03644: stc ccr, r0l
set i
bld #0, @byte_ffff0e
bclr #0, @byte_ffff0e
bst #0, r1l
ldc r0l, ccr
bld #0, r1l
rts
sub_03660: mov r0h, r1l
and #3, r0h
shll r0h
shlr r1l
shlr r1l
mov #0, r1h
mov #0, e1
stc ccr, r0l
set i
mov @(byte_ffe427,er1), r2h
mov r2h, r2l
bclr r0h, r2h
mov r2h, @(byte_ffe427,er1)
mov @(byte_ffe44f,er1), r2h
ldc r0l, ccr
mov r0h, r0l
mov #0, r0h
btst r0l, r2h
beq loc_0369c
bset #0, r0h
loc_0369c: inc r0l
btst r0l, r2h
beq loc_036a4
bset #1, r0h
loc_036a4: btst r0l, r2l
beq loc_036aa
bset #7, r0h
loc_036aa: dec r0l
clr c
btst r0l, r2l
beq rts_036b4
set c
rts_036b4: rts
sub_036b6: mov #0, r0l
bra loc_036c2
sub_036ba: mov #3, r0l
bra loc_036c2
sub_036be: mov #1, r0l
bra loc_036c2
loc_036c2: cmp #0xa0, r0h
bhs rts_03740
mov r0h, r1l
bclr #7, r1l
mov r1l, r2l
and #3, r2l
shll r2l
shlr r1l
shlr r1l
mov #0, r1h
mov #0, e1
mov @(byte_ffe44f,er1), r2h
bclr r2l, r2h
bld #0, r0l
bcc loc_036ea
bset r2l, r2h
loc_036ea: inc r2l
bclr r2l, r2h
bld #1, r0l
bcc loc_036f4
bset r2l, r2h
loc_036f4: mov r2h, @(byte_ffe44f,er1)
mov r0h, r1l
bclr #7, r1l
mov r1l, r2l
and #3, r2l
shll r2l
shlr r1l
shlr r1l
mov #0, r1h
mov #0, e1
stc ccr, r0l
set i
mov @(byte_ffe427,er1), r2h
bset r2l, r2h
inc r2l
bset r2l, r2h
mov r2h, @(byte_ffe427,er1)
ldc r0l, ccr
set i
bset #7, @byte_ffff0e
bset #0, @byte_ffff0e
ldc r0l, ccr
rts_03740: rts
sub_03742: push er0
mov #byte_ffe44f, er1
mov #byte_037f0, er2
mov #0x28, r0h
loc_03754: mov @er2+, r0l
mov r0l, @er1
adds #1, er1
dec r0h
bne loc_03754
jsr sub_03786
stc ccr, r0h
set i
mov #0, r2h
mov r2h, @byte_ffe426
bset #3, @byte_ffff0e
bset #7, @byte_ffff0e
ldc r0h, ccr
pop er0
rts
sub_03786: mov #0, er2
loc_0378c: mov r2h, @(byte_ffe427,er2)
inc r2l
cmp #0x28, r2l
bne loc_0378c
rts
sub_0379c: mov #0x00, r1l
mov #1, r1h
loc_037a0: mov #0, er2
loc_037a6: mov r1l, @(byte_ffe44f,er2)
inc r2l
cmp #0x28, r2l
bne loc_037a6
push er1
jsr sub_03786
pop er1
stc ccr, r1l
set i
mov r1h, @byte_ffe426
bset #3, @byte_ffff0e
bset #7, @byte_ffff0e
ldc r1l, ccr
rts
sub_037de: mov #0xff, r1l
mov #2, r1h
bra loc_037a0
sub_037e4: mov #0x55, r1l
mov #3, r1h
bra loc_037a0
sub_037ea: mov #0xaa, r1l
mov #4, r1h
bra loc_037a0
byte_037f0: .byte 0x00, 0x40, 0x01, 0x40, 0x3c, 0x43, 0x0c, 0x40
.byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x04, 0x40
.byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, 0x0d, 0x50
.byte 0x10, 0x44, 0x44, 0x55, 0x55, 0x55, 0x14, 0x14
.byte 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
sub_03818: mov #0, r0h
loc_0381a: mov r0h, r1l
bclr #7, r1l
mov r1l, r2l
and #3, r2l
shll r2l
inc r2l
shlr r1l
shlr r1l
mov #0, r1h
mov #0, e1
stc ccr, r0l
set i
mov @(byte_ffe427,er1), r2h
btst r2l, r2h
beq loc_0384c
dec r2l
bset r2l, r2h
mov r2h, @(byte_ffe427,er1)
loc_0384c: ldc r0l, ccr
inc r0h
cmp #0xa0, r0h
blo loc_0381a
mov #-1, r0h
mov r0h, @byte_ffff0e
mov @typematic, r0h
jsr setTypematic
mov @byte_ffe424, r0h
jsr sub_05ce2
rts
sub_03872: cmp #0, r0h
beq sub_038ac
cmp #4, r0h
bhs loc_03882
mov r0h, r0l
bsr sub_038bc
clr c
bra loc_038aa
loc_03882: mov @byte_ffe421, r0l
btst #6, r0l
bne loc_038a8
cmp #0x81, r0h
beq loc_03898
cmp #0x82, r0h
beq loc_03898
cmp #0x8a, r0h
bne loc_038a8
loc_03898: mov r0h, r0l
bclr #7, r0h
cmp #0x0a, r0h
bne loc_038a2
mov #3, r0h
loc_038a2: bsr sub_038bc
clr c
bra loc_038aa
loc_038a8: set c
loc_038aa: bra rts_038ba
sub_038ac: mov @byte_ffe422, r0h
mov @byte_ffe423, r0l
clr c
rts_038ba: rts
sub_038bc: stc ccr, r1h
set i
bset #6, @byte_ffff0e
bset #7, @byte_ffff0e
mov r0h, @byte_ffe422
mov r0l, @byte_ffe423
ldc r1h, ccr
rts
sub_038e0: stc ccr, r1h
set i
bld #6, @byte_ffff0e
bclr #6, @byte_ffff0e
mov @byte_ffe422, r0h
mov @byte_ffe423, r0l
bst #0, r1h
ldc r1h, ccr
rts
sub_03906: stc ccr, r0l
set i
bset #5, @byte_ffff0e
bset #7, @byte_ffff0e
mov r0h, @byte_ffe424
ldc r0l, ccr
rts
sub_03924: mov @byte_ffe424, r0h
rts
sub_0392c: stc ccr, r1h
set i
bld #5, @byte_ffff0e
bclr #5, @byte_ffff0e
mov @byte_ffe424, r0h
bst #0, r0l
ldc r1h, ccr
bld #0, r0l
rts
sub_0394e: stc ccr, r0l
set i
bset #4, @byte_ffff0e
bset #7, @byte_ffff0e
mov r0h, @typematic
ldc r0l, ccr
rts
mov @typematic, r0h
rts
sub_03974: stc ccr, r1h
set i
bld #4, @byte_ffff0e
bclr #4, @byte_ffff0e
mov @typematic, r0h
bst #0, r0l
ldc r1h, ccr
bld #0, r0l
rts
sub_03996: stc ccr, r1h
set i
bld #3, @byte_ffff0e
bclr #3, @byte_ffff0e
mov @byte_ffe426, r0h
bst #0, r0l
ldc r1h, ccr
bld #0, r0l
rts
sub_039b8: stc ccr, r0l
set i
bset #1, @byte_ffff0e
bset #7, @byte_ffff0e
mov @byte_ffe421, r1h
bclr #7, r1h
mov r1h, @byte_ffe421
ldc r0l, ccr
jsr sub_02f0a
rts
sub_039e2: stc ccr, r0l
set i
bset #1, @byte_ffff0e
bset #7, @byte_ffff0e
mov @byte_ffe421, r1h
bset #7, r1h
mov r1h, @byte_ffe421
ldc r0l, ccr
jsr sub_02f02
rts
mov @byte_ffe421, r0l
bld #7, r0l
rts
sub_03a16: stc ccr, r1h
set i
bld #1, @byte_ffff0e
bclr #1, @byte_ffff0e
mov @byte_ffe421, r0h
bst #0, r0l
ldc r1h, ccr
bld #7, r0h
bst #0, r0h
bld #0, r0l
rts
sub_03a3c: stc ccr, r1h
set i
bld #2, @byte_ffff0e
bclr #2, @byte_ffff0e
bst #0, r0l
ldc r1h, ccr
bld #0, r0l
rts
sub_03a58: stc ccr, r1h
set i
bld #7, @byte_ffff0e
bclr #7, @byte_ffff0e
bst #0, r0l
ldc r1h, ccr
bld #0, r0l
rts
sub_03a74: jsr sub_03742
mov #0x2b, r0h ; 500 ms, 10.9 cps
mov r0h, @typematic
mov #2, r0h
mov r0h, @byte_ffe422
mov r0h, @byte_ffe423
mov #0, r0h
mov r0h, @byte_ffe424
mov r0h, @byte_ffe421
bset #2, r0h
bset #7, r0h
mov r0h, @byte_ffff0e
rts
off_03aa8: .long byte_ffe421, byte_ffe477, NULL
sub_03ab4: mov #off_03aa8, er0
jmp loc_0182e
sub_03abe: mov #off_03aa8, er0
jmp loc_01846
sub_03ac8: jmp sub_01862
sub_03acc: mov #off_03aa8, er1
jmp loc_018ae
sub_03ad6: jsr sub_018ca
bcc rts_03ae2
jsr sub_03818
set c
rts_03ae2: rts
enableLPC1: b clr mstpcrl.mstp0 ; LPC, WUEMRB (Module Stop Control Register L)
b set hicr_0.lpc1e ; LPC Channel 1 Enable (0x60/0x64) (LPC Host Interface Control Register 0)
mov #0, r0h
mov #0x30, r0l
mov #byte_ffe4aa, er1
loc_03af8: mov r0h, @-er1
dec r0l
bne loc_03af8
mov r0h, @str1 ; LPC Status Register 1 (0x64)
mov r0h, @byte_ffff0f
mov r0h, @byte_ffff10
bsr sub_03b3c
mov #0x10, r0h
mov r0h, @str1 ; LPC Status Register 1 (0x64)
mov #0x30, r0h
mov r0h, @byte_ffe47a
mov #0x55, r0h
mov r0h, @odr1 ; LPC Output Data Register 1 (0x60)
b set hicr_2.ibfie1 ; IDR1 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
mov #0, r0h
mov r0h, @byte_ffe4b0
mov #1, r0h
mov r0h, @byte_ffe47b
rts
sub_03b3c: setOutH 4 0 ; Pin P40/TMCI0/TxD2/IrTxD
b clr sirqcr0.irq12e1 ; Host IRQ12 Interrupt Enable 1 (LPC SERIRQ Control Register 0)
b clr sirqcr0.irq1e1 ; Host IRQ1 Interrupt Enable 1 (LPC SERIRQ Control Register 0)
loc_03b58: setOutH 8 1 ; Pin P81/-CS2/GA20
b ld p81dr ; Pin P81/-CS2/GA20 (Port 8 Data Register)
bst #3, @byte_ffff0f
rts
sub_03b76: setInH 4 0 ; Pin P40/TMCI0/TxD2/IrTxD
b ld p81dr ; Pin P81/-CS2/GA20 (Port 8 Data Register)
bst #3, @byte_ffff0f
setInH 8 1 ; Pin P81/-CS2/GA20
b clr hicr_0.lpc1e ; LPC Channel 1 Enable (0x60/0x64) (LPC Host Interface Control Register 0)
rts
sub_03bae: bsr sub_03b3c
b set hicr_0.lpc1e ; LPC Channel 1 Enable (0x60/0x64) (LPC Host Interface Control Register 0)
mov #0, r0h
mov r0h, @byte_ffe4b0
bclr #2, @byte_ffff0f
b set str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
rts
mov #byte_03c0c, er1
mov @byte_ffe4aa, r2h
mov #6, r2l
loc_03bdc: shll r2h
bcc loc_03c04
mov @er1, r0h
push er1
push er2
push er0
jsr sub_024de
pop er0
bset #7, r0h
jsr sub_02196
pop er2
pop er1
loc_03c04: adds #1, er1
dec r2l
bne loc_03bdc
rts
byte_03c0c: .byte 0x2c, 0x39, 0x3a, 0x40, 0x3c, 0x3e
task04: btst #0, @byte_ffff0f
beq loc_03c3a
mov @word_ffe952, r0
jsr cmpTick
bcc loc_03c32
bclr #0, @byte_ffff0f
bra loc_03c3a
loc_03c32: jsr sub_03cd6
jmp rts_03cd4
loc_03c3a: btst #2, @byte_ffff0f
bne loc_03c9a
mov @str1, r1h ; LPC Status Register 1 (0x64)
jsr sub_04454
bcs loc_03c54
jsr sub_03e80
bra loc_03c92
loc_03c54: mov @byte_ffff0f, r1l
btst #7, r1l
beq loc_03c82
mov #0, r0l
btst #5, r1l
beq loc_03c6c
btst #0, r1h
beq loc_03c6c
mov #-1, r0l
bra loc_03c78
loc_03c6c: btst #6, r1l
beq loc_03c78
jsr sub_0447c
bcc loc_03c78
mov #-1, r0l
loc_03c78: cmp #0, r0l
bne loc_03c80
jsr sub_03ea0
loc_03c80: bra loc_03c92
loc_03c82: jsr sub_0447c
bcs loc_03c90
jsr sub_03e22
jsr sub_045ce
loc_03c90: bsr sub_03cd6
loc_03c92: b set hicr_2.ibfie1 ; IDR1 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
bra rts_03cd4
loc_03c9a: mov @byte_ffe479, r0h
cmp #0x80, r0h
bne loc_03cd0
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
bne loc_03cd0
mov @byte_ffe48e, r0h
mov #0, r0l
jsr sub_03d98
bclr #2, @byte_ffff0f
b set str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
mov #0, r0h
mov r0h, @byte_ffe479
bra rts_03cd4
loc_03cd0: jsr sub_04b10
rts_03cd4: rts
sub_03cd6: b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
bne rts_03cfa
mov @byte_ffe47a, r0h
btst #4, r0h
bne loc_03cec
jsr sub_04b10
loc_03cec: mov @byte_ffe47a, r0h
btst #5, r0h
bne rts_03cfa
jsr sub_09180
rts_03cfa: rts
sub_03cfc: cmp #0x80, r0h
bhs rts_03d96:16
mov @byte_ffe490, r2h
cmp r0h, r2h
beq rts_03d96:16
mov @byte_ffe491, r2h
cmp r0h, r2h
beq rts_03d96:16
mov @byte_ffe479, r1l
bmi rts_03d96
push er1
btst #1, r0l
bne loc_03d40
push er0
jsr sub_0539e
pop er0
bcc loc_03d40
mov #1, r0l
jsr sub_02a5e
bra loc_03d42
loc_03d40: mov #0, r0l
loc_03d42: pop er1
mov #0, r1h
mov #0, e1
mov @(byte_ffe49a,er1), r2h
cmp r0h, r2h
beq loc_03d60
cmp #0, r0l
beq loc_03d8e
cmp r0l, r2h
bne loc_03d8e
loc_03d60: cmp #0x0f, r1l
beq loc_03d6e
mov @(byte_ffe49b,er1), r2h
bne loc_03d8a
loc_03d6e: mov @byte_ffe48e, r0h
beq loc_03d7a
mov #0x80, r1l
bra loc_03d88
loc_03d7a: bclr #2, @byte_ffff0f
b set str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
loc_03d88: bra loc_03d8c
loc_03d8a: inc r1l
loc_03d8c: bra loc_03d90
loc_03d8e: mov #0, r1l
loc_03d90: mov r1l, @byte_ffe479
rts_03d96: rts
sub_03d98: push er0
push er1
push er2
and #0b11100000, r0l
mov @str1, r1h ; LPC Status Register 1 (0x64)
and #0b00011111, r1h
or r0l, r1h
bset #4, r1h
mov @byte_ffe47a, r1l
mov #-1, r2h
btst #5, r0l
beq loc_03dde
mov @byte_ffe4ae, r2l
beq loc_03dce
dec r2l
mov r2l, @byte_ffe4ae
bra loc_03dd6
loc_03dce: bset #1, @byte_ffe4ac
loc_03dd6: btst #1, r1l
beq loc_03ddc
mov #1, r2h
loc_03ddc: bra loc_03dfe
loc_03dde: mov @byte_ffe4ad, r2l
beq loc_03df0
dec r2l
mov r2l, @byte_ffe4ad
bra loc_03df8
loc_03df0: bset #0, @byte_ffe4ac
loc_03df8: btst #0, r1l
beq loc_03dfe
mov #0, r2h
loc_03dfe: set i
cmp #-1, r2h
beq loc_03e0a
bset r2h, @sirqcr0 ; LPC SERIRQ Control Register 0
loc_03e0a: mov r1h, @str1 ; LPC Status Register 1 (0x64)
mov r0h, @odr1 ; LPC Output Data Register 1 (0x60)
clr i
pop er2
pop er1
pop er0
rts
sub_03e22: bclr #4, @byte_ffe47a
jsr sub_04b44
jsr sub_04b10
mov #1, r1h
mov r1h, @byte_ffe4ad
bra loc_03e54
loc_03e3c: bclr #5, @byte_ffe47a
jsr sub_089a8
jsr sub_09180
mov #0x14, r1h
mov r1h, @byte_ffe4ae
loc_03e54: bset #0, @byte_ffff0f
push er0
push er1
mov @tick, r0
mov #100, r1
add r1, r0
mov r0, @word_ffe952
pop er1
pop er0
rts
sub_03e80: mov r0h, @byte_ffe477
mov #0, r0l
mov r0l, @byte_ffe478
mov @byte_ffff0f, r1h
bclr #7, r1h
bclr #5, r1h
bclr #6, r1h
mov r1h, @byte_ffff0f
sub_03ea0: mov @byte_ffe477, r1h
mov @byte_ffe478, r1l
mov @byte_ffff0f, r2h
cmp #0x3f, r1h
bhi loc_03ebc
jsr sub_04018
bra loc_03f02
loc_03ebc: cmp #0x7f, r1h
bhi loc_03ec6
jsr sub_04048
bra loc_03f02
loc_03ec6: cmp #0xf0, r1h
blo loc_03ed0
jsr sub_040be
bra loc_03f02
loc_03ed0: mov r1h, r4l
shlr r4l
shlr r4l
shlr r4l
shlr r4l
and #7, r4l
mov #0, r4h
mov #0, e4
mov #off_03f2c, er3
add er4, er3
mov @er3, r4l
beq loc_03f02
add er4, er3
mov r1h, r4l
and #0x0f, r4l
add er4, er3
mov @er3, r4l
beq loc_03f02
add er4, er3
mov @er3, er4
jsr @er4
loc_03f02: mov r1l, @byte_ffe478
mov r2h, @byte_ffff0f
btst #7, r2h
beq rts_03f2a
btst #6, r2h
beq rts_03f2a
set i
btst #7, @byte_ffff11
bne loc_03f28
b set hicr_2.ibfie1 ; IDR1 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
loc_03f28: clr i
rts_03f2a: rts
; Relative 8-bit Jump/Switch Tables
off_03f2c: ; 0x0x..0x6x (0x2x, 0x4x, 0x5x, 0x6x)
.irp off, . . off_03f33 . off_03f43 off_03f53 off_03f63
.byte \off - .
.endr
off_03f33: ; 0x20..0x2f
.irp off, . . . . off_03f74 off_03f78 off_03f7c off_03f80 off_03f84 off_03f88 off_03f8c off_03f90 . off_03f94 off_03f98 .
.byte \off - .
.endr
off_03f43: ; 0x40..0x4f
.irp off, off_03f9c off_03fa0 off_03fa4 off_03fa0 . . . . . . . . . . . .
.byte \off - .
.endr
off_03f53: ; 0x50..0x5f
.irp off, off_03fa8 off_03fac off_03fb0 off_03fb4 off_03fb8 . . . . . . . . . . .
.byte \off - .
.endr
off_03f63: ; 0x60..0x6f
.irp off, off_03fbc . . . . . . . . . . . . . . .
.byte \off - .
.endr
.align 1, -1
off_03f74: .long sub_040f4 ; 0x24
off_03f78: .long sub_04120 ; 0x25
off_03f7c: .long sub_04156 ; 0x26
off_03f80: .long sub_0419a ; 0x27
off_03f84: .long sub_041b0 ; 0x28
off_03f88: .long sub_03fc0 ; 0x29
off_03f8c: .long sub_04002 ; 0x2a
off_03f90: .long sub_03fc0 ; 0x2b
off_03f94: .long sub_041c6 ; 0x2d
off_03f98: .long sub_041dc ; 0x2e
off_03f9c: .long sub_041f2 ; 0x40
off_03fa0: .long sub_0422e ; 0x41, 0x43
off_03fa4: .long sub_0422a ; 0x42
off_03fa8: .long sub_0425e ; 0x50
off_03fac: .long sub_042c0 ; 0x51
off_03fb0: .long sub_042d8 ; 0x52
off_03fb4: .long sub_042f0 ; 0x53
off_03fb8: .long sub_04308 ; 0x54
off_03fbc: .long sub_04324 ; 0x60
sub_03fc0: cmp #0, r1l
bne loc_03fd4
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_03fd4
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_04000
loc_03fd4: cmp #0xa9, r1h
bne loc_03fe0
mov #sub_09100, er3
bra loc_03fe6
loc_03fe0: mov #sub_09e76, er3
loc_03fe6: push er1
push er2
jsr @er3
pop er2
pop er1
mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_04000: rts
sub_04002: push er1
push er2
jsr enableLPC1
pop er2
pop er1
rts
sub_04018: cmp #0, r1l
bne loc_0402c
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_0402c
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_04046
loc_0402c: mov r1h, r3l
and #0x1f, r3l
mov #0, r3h
mov #0, e3
mov @(byte_ffe47a,er3), r0h
mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_04046: rts
sub_04048: cmp #0, r1l
bne loc_04054
bset #7, r2h
bset #6, r2h
inc r1l
bra rts_04076
loc_04054: mov r1h, r3l
and #0x1f, r3l
mov #0, r3h
mov #0, e3
mov r0h, @(byte_ffe47a,er3)
cmp #0, r3l
bne loc_04074
push er2
bsr sub_04078
pop er2
loc_04074: bclr #7, r2h
rts_04076: rts
sub_04078: bld #2, r0h
b st str1.dbu12 ; Defined By User (LPC Status Register 1 (0x64))
push er0
btst #5, r0h
beq loc_0408e
jsr sub_091c0
bra loc_04092
loc_0408e: jsr sub_09180
loc_04092: mov @sp, er0 ; pop+push er0
btst #4, r0h
beq loc_040a0
jsr sub_04b3a
bra loc_040a4
loc_040a0: jsr sub_04b10
loc_040a4: pop er0
btst #1, r0h
bne loc_040b2
b clr sirqcr0.irq12e1 ; Host IRQ12 Interrupt Enable 1 (LPC SERIRQ Control Register 0)
loc_040b2: btst #0, r0h
bne rts_040bc
b clr sirqcr0.irq1e1 ; Host IRQ1 Interrupt Enable 1 (LPC SERIRQ Control Register 0)
rts_040bc: rts
sub_040be: mov #-1 >> 16, e4
mov #1, r6h
loc_040c4: mov #off_0429c, er3
mov #3, r5h
loc_040cc: btst r5h, r1h
bne loc_040e6
mov @er3+, r4h
mov @er3+, r4l
mov @er3+, r5l
cmp #1, r6h
bne loc_040e0
bclr r5l, @er4
bra loc_040e4
loc_040e0: bset r5l, @er4
loc_040e4: bra loc_040ea
loc_040e6: adds #2, er3
adds #1, er3
loc_040ea: dec r5h
bpl loc_040cc
dec r6h
bpl loc_040c4
rts
sub_040f4: cmp #0, r1l
bne loc_04108
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_04108
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_0411e
loc_04108: mov @byte_ffe49a, r0h
beq loc_04114
mov #0xfa, r0h
bra loc_04116
loc_04114: mov #0xf1, r0h
loc_04116: mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_0411e: rts
sub_04120: cmp #0, r1l
bne loc_0412c
bset #7, r2h
bset #6, r2h
inc r1l
bra rts_04154
loc_0412c: cmp #0x11, r1l
bhi loc_0414e
mov r1l, r3l
mov #0, r3h
mov #0, e3
mov r0h, @(byte_ffe499,er3)
inc r1l
cmp #0x11, r1l
bls loc_0414e
mov r3h, @(byte_ffe499,er3)
loc_0414e: cmp #0, r0h
bne rts_04154
bclr #7, r2h
rts_04154: rts
sub_04156: cmp #0, r1l
bne loc_04182
mov @byte_ffe49a, r0h
beq loc_04180
mov r1l, @byte_ffe479
mov @byte_ffe48d, r0h
beq loc_04178
bset #7, r2h
bset #5, r2h
inc r1l
bra loc_04180
loc_04178: b clr str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
bset #2, r2h
loc_04180: bra rts_04198
loc_04182: mov @byte_ffe48d, r0h
mov #0, r0l
jsr sub_03d98
bclr #7, r2h
b clr str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
bset #2, r2h
rts_04198: rts
sub_0419a: bset #5, @byte_ffe47a
push er2
jsr sub_091c0
pop er2
rts
sub_041b0: bclr #5, @byte_ffe47a
push er2
jsr sub_09180
pop er2
rts
sub_041c6: bset #4, @byte_ffe47a
push er2
jsr sub_04b3a
pop er2
rts
sub_041dc: bclr #4, @byte_ffe47a
push er2
jsr sub_04b10
pop er2
rts
sub_041f2: cmp #0, r1l
bne loc_04206
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_04206
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_04210
loc_04206: bsr sub_04212
mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_04210: rts
sub_04212: mov #0, r0h
set c
bst #2, r0h
b ld kbcrh_1.kdi ; Keyboard Data In (PS/2 Keyboard Control Register H Channel 1)
bst #1, r0h
b ld kbcrh_0.kdi ; Keyboard Data In (PS/2 Keyboard Control Register H Channel 0)
bst #0, r0h
rts
sub_0422a: bsr sub_04212
bra loc_04238
sub_0422e: bsr sub_04212
shll r0h
shll r0h
shll r0h
shll r0h
loc_04238: mov @str1, r0l ; LPC Status Register 1 (0x64)
and #0x0f, r0l
and #0xf0, r0h
or r0l, r0h
mov r0h, @str1 ; LPC Status Register 1 (0x64)
b tst str1.ibf1 ; Input Buffer Full (LPC Status Register 1 (0x64))
beq loc_0425a
bclr #7, r2h
bld #2, r2h
b ist str1.burst ; Burst Mode For Polled Command Processing (LPC Status Register 1 (0x64))
bra rts_0425c
loc_0425a: bset #7, r2h
rts_0425c: rts
sub_0425e: cmp #0, r1l
bne loc_04272
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_04272
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_0429a
loc_04272: mov #-1 >> 16, e5
mov #off_042a8, er3
mov #7, r4h
loc_0427e: mov @er3+, r5h
mov @er3+, r5l
mov @er3+, r4l
btst r4l, @er5
beq loc_0428e
bset r4h, r0h
bra loc_04290
loc_0428e: bclr r4h, r0h
loc_04290: dec r4h
bpl loc_0427e
mov #0, r0l
jsr sub_03d98
rts_0429a: rts
off_0429c: .word kbcrl_1 ; PS/2 Keyboard Control Register L Channel 1
.byte 6
.word kbcrl_1 ; PS/2 Keyboard Control Register L Channel 1
.byte 5
.word p8dr ; Port 8 Data Register
.byte 1
.word p4dr ; Port 4 Data Register
.byte 0
off_042a8: .word kbcrh_0 ; PS/2 Keyboard Control Register H Channel 0
.byte 5
.word kbcrh_0 ; PS/2 Keyboard Control Register H Channel 0
.byte 6
.word sirqcr0 ; LPC SERIRQ Control Register 0
.byte 1
.word sirqcr0 ; LPC SERIRQ Control Register 0
.byte 0
.word kbcrh_1 ; PS/2 Keyboard Control Register H Channel 1
.byte 6
.word kbcrh_1 ; PS/2 Keyboard Control Register H Channel 1
.byte 5
.word p8dr ; Port 8 Data Register
.byte 1
.word p4dr ; Port 4 Data Register
.byte 0
sub_042c0: cmp #0, r1l
bne loc_042cc
bset #7, r2h
bset #6, r2h
inc r1l
bra rts_042d6
loc_042cc: bld #1, r0h
b st p81dr ; Pin P81/-CS2/GA20 (Port 8 Data Register)
bst #3, r2h
bclr #7, r2h
rts_042d6: rts
sub_042d8: cmp #0, r1l
bne loc_042e6
bset #7, r2h
bset #6, r2h
bset #5, r2h
inc r1l
bra rts_042ee
loc_042e6: mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_042ee: rts
sub_042f0: cmp #0, r1l
bne loc_042fe
bset #7, r2h
bset #6, r2h
bset #5, r2h
inc r1l
bra rts_04306
loc_042fe: mov #0x20, r0l
jsr sub_03d98
bclr #7, r2h
rts_04306: rts
sub_04308: cmp #0, r1l
bne loc_04314
bset #7, r2h
bset #6, r2h
inc r1l
bra rts_04322
loc_04314: push er2
jsr loc_03e3c
pop er2
bclr #7, r2h
rts_04322: rts
sub_04324: cmp #0, r1l
bne loc_04338
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
beq loc_04338
bset #7, r2h
bset #5, r2h
inc r1l
bra rts_0435a
loc_04338: push er2
jsr sub_04acc
pop er2
bld #0, r0h
mov #0, r0h
bst #0, r0h
b ld kbcrh_1.kclki ; Keyboard Clock In (PS/2 Keyboard Control Register H Channel 1)
bst #1, r0h
mov #0, r0l
jsr sub_03d98
bclr #7, r2h
rts_0435a: rts
sub_0435c: cmp #0xf0, r0h
bne loc_0436c
bset #4, @byte_ffff0f
mov #0, r0h
bra rts_04394
loc_0436c: cmp #0x84, r0h
bhi loc_0438c
mov #byte_04396, er1
add r0h, r1l
addx #0, r1h
bcc loc_0437e
inc #1, e1
loc_0437e: mov @er1, r0h
bld #4, @byte_ffff0f
bor #7, r0h
bst #7, r0h
loc_0438c: bclr #4, @byte_ffff0f
rts_04394: rts
byte_04396: .byte -1, 0x43, 0x41, 0x3f, 0x3d, 0x3b, 0x3c, 0x58
.byte 0x64, 0x44, 0x42, 0x40, 0x3e, 0x0f, 0x29, 0x59
.byte 0x65, 0x38, 0x2a, 0x70, 0x1d, 0x10, 0x02, 0x5a
.byte 0x66, 0x71, 0x2c, 0x1f, 0x1e, 0x11, 0x03, 0x5b
.byte 0x67, 0x2e, 0x2d, 0x20, 0x12, 0x05, 0x04, 0x5c
.byte 0x68, 0x39, 0x2f, 0x21, 0x14, 0x13, 0x06, 0x5d
.byte 0x69, 0x31, 0x30, 0x23, 0x22, 0x15, 0x07, 0x5e
.byte 0x6a, 0x72, 0x32, 0x24, 0x16, 0x08, 0x09, 0x5f
.byte 0x6b, 0x33, 0x25, 0x17, 0x18, 0x0b, 0x0a, 0x60
.byte 0x6c, 0x34, 0x35, 0x26, 0x27, 0x19, 0x0c, 0x61
.byte 0x6d, 0x73, 0x28, 0x74, 0x1a, 0x0d, 0x62, 0x6e
.byte 0x3a, 0x36, 0x1c, 0x1b, 0x75, 0x2b, 0x63, 0x76
.byte 0x55, 0x56, 0x77, 0x78, 0x79, 0x7a, 0x0e, 0x7b
.byte 0x7c, 0x4f, 0x7d, 0x4b, 0x47, 0x7e, 0x7f, 0x6f
.byte 0x52, 0x53, 0x50, 0x4c, 0x4d, 0x48, 0x01, 0x45
.byte 0x57, 0x4e, 0x51, 0x4a, 0x37, 0x49, 0x46, 0x54
.byte 0x80, 0x81, 0x82, 0x41, 0x54, -1
; LPC IDR1 Reception Completion (0x60/0x64)
ibfi1: b clr hicr_2.ibfie1 ; IDR1 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
clr i
push er0
b tst str1.c_d1 ; Command/-Data (0x64/0x60) (LPC Status Register 1 (0x64))
bne loc_0444c
btst #7, @byte_ffff11
bne loc_0444c
mov @idr1, r0h ; LPC Input Data Register 1 (0x60/0x64)
mov r0h, @byte_ffe4af
bset #7, @byte_ffff11
loc_0444c: set i
pop er0
rte
sub_04454: set i
btst #7, @byte_ffff11
bne loc_04476
mov @str1, r0h ; LPC Status Register 1 (0x64)
clr i
btst #3, r0h
beq loc_04476
btst #1, r0h
beq loc_04476
mov @idr1, r0h ; LPC Input Data Register 1 (0x60/0x64)
clr c
bra rts_0447a
loc_04476: clr i
set c
rts_0447a: rts
sub_0447c: btst #7, @byte_ffff11
beq loc_0449c
set i
bclr #7, @byte_ffff11
mov @byte_ffe4af, r0h
clr i
clr c
bra rts_0449e
loc_0449c: set c
rts_0449e: rts
sub_044a0: btst #7, r0l
beq loc_044da
mov @byte_ffe4ab, r1h
mov @byte_ffe47b, r1l
cmp r1h, r1l
bls loc_044d8
inc r1h
mov r1h, @byte_ffe4ab
mov #0xfe, r0h
btst #5, r0l
bne loc_044c8
jsr sub_03e22
bra loc_044cc
loc_044c8: jsr loc_03e3c
loc_044cc: bset #0, @byte_ffff0f
mov #0, r0h
rts
loc_044d8: bra loc_044e2
loc_044da: mov #0, r1h
mov r1h, @byte_ffe4ab
loc_044e2: mov @str1, r1h ; LPC Status Register 1 (0x64)
btst #0, r1h
bne loc_044f4
btst #7, @byte_ffff0f
beq loc_044f8
loc_044f4: mov #-1, r0h
bra rts_04500
loc_044f8: jsr rts_10e5c
jsr sub_04734
rts_04500: rts
sub_04502: bclr #0, @byte_ffff0f
push er0
jsr sub_04636
pop er0
mov #0xc0, r1h
and r0l, r1h
bne loc_04540
btst #5, r0l
bne loc_04540
mov @byte_ffe47a, r1h
btst #6, r1h
beq loc_04540
push er0
jsr sub_0435c
pop er1
mov r1l, r0l
cmp #0, r0h
bne loc_04540
mov #1, r0h
bra loc_04568
loc_04540: btst #2, @byte_ffff0f
beq loc_04562
mov #0xe0, r1h
and r0l, r1h
bne loc_04554
jsr sub_03cfc
loc_04554: btst #2, @byte_ffff0f
beq loc_04560
mov #1, r0h
loc_04560: bra loc_04568
loc_04562: jsr sub_03d98
mov #0, r0h
loc_04568: push er0
jsr sub_045ce
pop er0
rts
sub_04576: set c
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
bne rts_04588
mov @byte_ffe47a, r0h
bld #5, r0h
rts_04588: rts
set c
b tst str1.obf1 ; Output Buffer Full (LPC Status Register 1 (0x64))
bne rts_0459c
mov @byte_ffe47a, r0h
bld #4, r0h
rts_0459c: rts
sub_0459e: mov @byte_ffe47a, r1h
btst #6, r1h
beq rts_045ac
jsr sub_0435c
rts_045ac: rts
set i
loc_045b0: b tst str1.ibf1 ; Input Buffer Full (LPC Status Register 1 (0x64))
beq loc_045b0
b tst str1.c_d1 ; Command/-Data (0x64/0x60) (LPC Status Register 1 (0x64))
bne loc_045c8
mov @idr1, r0h ; LPC Input Data Register 1 (0x60/0x64)
clr c
bra loc_045ca
loc_045c8: set c
loc_045ca: clr i
rts
sub_045ce: jsr sub_10e58
rts
off_045d4: .long byte_ffff0f, byte_ffff10, byte_ffe477, byte_ffe4ab, NULL
sub_045e8: mov #off_045d4, er0
jmp loc_0182e
sub_045f2: b ld p81dr ; Pin P81/-CS2/GA20 (Port 8 Data Register)
bst #3, @byte_ffff0f
mov #off_045d4, er0
jmp loc_01846
sub_04608: jmp sub_01862
sub_0460c: mov #off_045d4, er1
jmp loc_018ae
sub_04616: jsr sub_018ca
bcc rts_04634
mov @byte_ffe47a, r0h
jsr sub_04078
bld #3, @byte_ffff0f
b st p81dr ; Pin P81/-CS2/GA20 (Port 8 Data Register)
set c
rts_04634: rts
sub_04636: btst #5, r0l
bne rts_046b8
btst #0, r0l
beq rts_046b8
push er0
jsr sub_038ac
mov r0h, r1h
pop er0
cmp #1, r1h
bne loc_0465c
bld #7, r0h
bst #7, @byte_ffff12
bclr #7, r0h
loc_0465c: cmp #0xf0, r0h
bne loc_0466a
bset #7, @byte_ffff12
bra rts_046b8
loc_0466a: cmp #0xe0, r0h
bne loc_04678
bset #6, @byte_ffff12
bra rts_046b8
loc_04678: cmp #0xe1, r0h
bne loc_04686
bset #5, @byte_ffff12
bra rts_046b8
loc_04686: btst #5, @byte_ffff12
bne loc_0469c
bsr sub_046ba
mov #0, r1h
mov r1h, @byte_ffff12
bra rts_046b8
loc_0469c: btst #4, @byte_ffff12
bne loc_046b0
bset #4, @byte_ffff12
bra rts_046b8
loc_046b0: mov #0, r1h
mov r1h, @byte_ffff12
rts_046b8: rts
sub_046ba: dec r1h
mov r1h, r1l
mov #8, r2h
mulxu r2h, r1
mov #0, e1
mov #7, r2h
loc_046c8: mov @(byte_04708,er1), r2l
bld #7, r2l
bxor #6, @byte_ffff12
bcs loc_04700
bclr #7, r2l
cmp r2l, r0h
bne loc_04700
mov @byte_ffe4aa, r2l
btst #7, @byte_ffff12
bne loc_046f6
bset r2h, r2l
bra loc_046f8
loc_046f6: bclr r2h, r2l
loc_046f8: mov r2l, @byte_ffe4aa
bra rts_04706
loc_04700: adds #1, er1
dec r2h
bpl loc_046c8
rts_04706: rts
byte_04708: .byte 0x2a, 0x36, 0x1d, 0x80 | 0x1d, 0x38, 0x80 | 0x38, 0x80 | 0x2a, 0x80 | 0x36
.byte 0x12, 0x59, 0x14, 0x80 | 0x14, 0x11, 0x80 | 0x11, 0x80 | 0x12, 0x80 | 0x59
.byte 0x12, 0x59, 0x11, 0x58, 0x19, 0x39, 0x00, 0x00
sub_04720: bset #7, @byte_ffff10
rts
sub_0472a: bclr #7, @byte_ffff10
rts
sub_04734: btst #0, r0l
bne loc_0474a
btst #5, r0l
bne loc_04744
mov #0, r1h
mov r1h, @byte_ffe4b0
loc_04744: jsr sub_04502
bra rts_0476e
loc_0474a: btst #5, r0l
beq loc_04754
jsr sub_04888
bra rts_0476e
loc_04754: mov @byte_ffe4b0, r1l
shll #2, r1l
mov #0, r1h
mov #0, e1
mov @(off_04770,er1), er1
jmp @er1
rts_0476e: rts
off_04770: .long sub_04784, sub_047de, sub_04812, sub_04856, sub_04876
sub_04784: btst #7, @byte_ffff10
bne loc_04794
jsr sub_04502
bra loc_047ca
loc_04794: cmp #0xf0, r0h
bne loc_047a6
jsr sub_04502
mov #2, r1h
mov r1h, @byte_ffe4b0
bra loc_047ca
loc_047a6: cmp #0xe0, r0h
bne loc_047b6
mov #1, r0h
mov r0h, @byte_ffe4b0
mov #1, r0h
bra loc_047ca
loc_047b6: cmp #0xe1, r0h
bne loc_047c6
mov #3, r1h
mov r1h, @byte_ffe4b0
mov #1, r0h
bra loc_047ca
loc_047c6: bsr sub_04820
mov #1, r0h
loc_047ca: push er0
mov #0x33, r0h
jsr sub_10cc0
jsr sub_045ce
pop er0
rts
sub_047de: cmp #0xf0, r0h
bne loc_047f0
jsr sub_04808
mov #0, r1h
mov r1h, @byte_ffe4b0
bra rts_04806
loc_047f0: bsr sub_04838
bcc loc_047fc
jsr sub_0487e
mov #1, r0h
bra rts_04806
loc_047fc: bsr sub_04808
mov #2, r1h
mov r1h, @byte_ffe4b0
rts_04806: rts
sub_04808: mov #0xe0, r0h
jsr sub_04502
mov #-1, r0h
rts
sub_04812: mov #0, r1h
mov r1h, @byte_ffe4b0
jsr sub_04502
rts
sub_04820: bsr sub_04838
bcs loc_04834
jsr sub_04502
mov #0, r1h
mov r1h, @byte_ffe4b0
clr c
bra rts_04836
loc_04834: set c
rts_04836: rts
sub_04838: push er0
jsr sub_038ac
mov r0h, r1h
pop er0
cmp #1, r1h
bne loc_04852
btst #7, r0h
beq loc_04852
clr c
bra rts_04854
loc_04852: set c
rts_04854: rts
sub_04856: mov #sub_04866, er2
loc_0485c: cmp #0xf0, r0h
beq loc_04862
jsr @er2
loc_04862: mov #1, r0h
rts
sub_04866: mov @byte_ffe4b0, r1h
inc r1h
mov r1h, @byte_ffe4b0
rts
sub_04876: mov #sub_0487e, er2
bra loc_0485c
sub_0487e: mov #0, r1h
mov r1h, @byte_ffe4b0
rts
sub_04888: btst #2, r0l
bne loc_04892
jsr sub_04502
bra rts_048ba
loc_04892: btst #7, @byte_ffff10
beq loc_048a4
jsr sub_09114
mov #1, r0h
bra loc_048a8
loc_048a4: jsr sub_04502
loc_048a8: push er0
mov #0x33, r0h
jsr sub_10cc0
jsr sub_045ce
pop er0
rts_048ba: rts
ret0A: mov @byte_ffe47a, r0h
rts
sub_048c4: mov r0h, @byte_ffe47a
jsr sub_04078
rts
sub_048d0: bld #1, @byte_ffe4ac
rts
sub_048da: bld #0, @byte_ffe4ac
rts
sub_048e4: mov #0, r0h
mov r0h, @byte_ffe4ac
mov r0h, @byte_ffe4ad
mov r0h, @byte_ffe4ae
rts
sub_048fa: bclr #0, @byte_ffe4ac
bclr #1, @byte_ffe4ac
rts
sub_0490c: mov #0, r0h
mov r0h, @byte_ffff13
mov r0h, @byte_ffe4b1
jsr sub_056f4
rts
task05: mov @byte_ffff13, r1h
btst #7, r1h
beq loc_04966
jsr sub_054f2
cmp #3, r0l
bne loc_04954
jsr sub_02f12
bcc loc_04954
mov @byte_ffe4b1, r0l
shll #2, r0l
mov #0, r0h
mov #0, e0
mov @(off_04ab0,er0), er0
jsr @er0
bra loc_04960
loc_04954: jsr sub_0496a
mov #0, r1h
mov r1h, @byte_ffe4b1
loc_04960: bcs loc_04966
jsr sub_04a36
loc_04966: clr c
rts
sub_0496a: bsr sub_049c6
bcc rts_04992
bsr sub_049de
bcs loc_0497c
mov #2, r1h
mov r1h, @byte_ffe4b1
bra rts_04992
loc_0497c: jsr sub_05d3a
bcc loc_04990
bsr sub_049f6
bcs loc_0498e
mov #1, r1h
mov r1h, @byte_ffe4b1
loc_0498e: bra rts_04992
loc_04990: set c
rts_04992: rts
sub_04994: bsr sub_049c6
bcc rts_049aa
jsr sub_05d3a
bcc loc_049a2
bsr sub_049f6
bcc rts_049aa
loc_049a2: mov #0, r1h
mov r1h, @byte_ffe4b1
rts_049aa: rts
sub_049ac: bsr sub_049c6
bcc rts_049c4
bsr sub_049de
bcc rts_049c4
jsr sub_09d90
bcs rts_049c4
mov #0, r1h
mov r1h, @byte_ffe4b1
set c
rts_049c4: rts
sub_049c6: btst #5, @byte_ffff13
beq loc_049da
mov @word_ffe956, r0
clr c
bra rts_049dc
loc_049da: set c
rts_049dc: rts
sub_049de: btst #6, @byte_ffff13
beq loc_049f2
mov @word_ffe954, r0
clr c
bra rts_049f4
loc_049f2: set c
rts_049f4: rts
sub_049f6: jsr sub_03586
bcs loc_04a32
mov #1, r0l
jsr sub_02f12
bcs loc_04a0c
jsr sub_0352e
set c
bra loc_04a30
loc_04a0c: btst #4, @byte_ffff13
beq loc_04a2e
jsr sub_0352e
btst #3, @byte_ffff13
beq loc_04a2a
mov #1, r0l
jsr sub_04be0
loc_04a2a: set c
bra loc_04a30
loc_04a2e: clr c
loc_04a30: bra rts_04a34
loc_04a32: set c
rts_04a34: rts
sub_04a36: push er0
jsr rts_10eee
pop er0
push er0
jsr sub_044a0
pop er1
cmp #0, r0h
bne loc_04a5a
bclr #7, @byte_ffff13
loc_04a5a: cmp #-1, r0h
beq rts_04aae
mov @byte_ffff13, r1h
btst #5, r1h
beq loc_04a7c
bclr #5, @byte_ffff13
mov @word_ffe954, r0
jsr loc_05686
bra rts_04aae
loc_04a7c: btst #0, r1l
beq loc_04a84
btst #1, r1l
beq loc_04aa2
loc_04a84: btst #6, r1h
beq loc_04aa2
bclr #6, @byte_ffff13
mov @word_ffe954, r0
mov r0, @word_ffe956
jsr loc_05686
bra rts_04aae
loc_04aa2: jsr sub_0352e
mov #0, r0l
mov r0, @word_ffe956
rts_04aae: rts
off_04ab0: .long sub_0496a, sub_04994, sub_049ac
rts_04abc: rts
sub_04abe: jsr sub_09dbc
mov #0, r0h
mov r0h, @byte_ffff13
rts
sub_04acc: bld #7, @byte_ffff13
bst #0, r0h
bset #1, r0h
rts
sub_04ada: mov @word_ffe956, r0
mov r0, @word_ffe954
bclr #6, @byte_ffff13
bset #5, @byte_ffff13
rts
sub_04af8: mov r0, @word_ffe954
bset #6, @byte_ffff13
bclr #5, @byte_ffff13
rts
sub_04b10: bset #7, @byte_ffff13
jsr sub_054f2
cmp #3, r0l
bne rts_04b38
mov @byte_ffe4b1, r0h
cmp #1, r0h
beq rts_04b38
btst #6, @byte_ffff13
bne rts_04b38
jsr sub_09dbc
rts_04b38: rts
sub_04b3a: bclr #7, @byte_ffff13
rts
sub_04b44: bclr #6, @byte_ffff13
push er0
jsr sub_054f2
cmp #3, r0l
bne loc_04b5c
jsr sub_09e06
loc_04b5c: pop er0
mov #2, r1h
mov r1h, @byte_ffe4b1
jsr sub_0567e
bsr sub_04b10
rts
sub_04b70: jsr sub_04c22
cmp #1, r0h
bne rts_04b98
bset #4, @byte_ffff13
bset #3, @byte_ffff13
jsr sub_09e52
jsr sub_09130
jsr sub_12882
jsr sub_10ef0
rts_04b98: rts
sub_04b9a: bset #4, @byte_ffff13
bclr #3, @byte_ffff13
jsr sub_09e44
jsr sub_09130
jsr sub_10f02
rts
sub_04bb8: btst #4, @byte_ffff13
beq rts_04bde
bclr #4, @byte_ffff13
bclr #3, @byte_ffff13
jsr sub_09e66
jsr sub_0916c
jsr sub_10f14
rts_04bde: rts
sub_04be0:
push er0
jsr sub_12892
bcs loc_04c1c
cmp #1, r0h
bne loc_04bf6
mov #0x32, r0h
jsr sub_10cc0
bra loc_04c1c
loc_04bf6: cmp #0, r0h
bne loc_04c06
mov #0x31, r0h
jsr sub_10cc0
jsr sub_04bb8
bra loc_04c1c
loc_04c06:
pop er0
jsr sub_0459e
mov r0h, @byte_ffe586 ; 0x27
mov #0x30, r0h
jsr sub_10cc0
bra rts_04c20
loc_04c1c:
pop er0
rts_04c20: rts
sub_04c22: jsr sub_127cc
and #0x0c, r0h
beq rts_04c2c
mov #1, r0h
rts_04c2c: rts
btst #3, @byte_ffff13
beq loc_04c3c
mov #1, r0h
bra rts_04c4c
loc_04c3c: btst #4, @byte_ffff13
beq loc_04c4a
mov #2, r0h
bra rts_04c4c
loc_04c4a: mov #0, r0h
rts_04c4c: rts
sub_04c4e: mov #0, er0
mov r0h, @byte_ffe4b2
mov er0, @long_ffe95a
mov r0h, @byte_ffe4b3
mov r0h, @byte_ffe4b4
mov r0h, @byte_ffe4b5
mov r0h, @byte_ffff14
mov #off_05560, er0
mov er0, @long_ffe95e
mov @tick, r0
mov #2500, r1
add r1, r0
mov r0, @word_ffe970
rts
sub_04c9c: mov @tick, r0
mov r0, @word_ffe970
jsr sub_07862
rts
rts
sub_04cb0: bsr sub_04cc4
jsr sub_01818
sub_04cb6: mov #0, r0h
mov r0h, @byte_ffe4b4
jsr sub_0215a
rts
sub_04cc4: mov #0, r0h
mov r0h, @byte_ffe4bd
jsr loc_0786e
rts
task06_2: mov @byte_ffe4bd, r0h
mov #off_04ce2, er1
jmp switch_er1_r0h
off_04ce2: case 0 sub_04cea sub_04cee sub_04d12 sub_04d24
sub_04cea: clr c
rts
sub_04cee: mov @tick, r0
mov #500, r1
add r1, r0
mov r0, @word_ffe970
sub_04d00: mov @byte_ffe4bd, r0h
inc r0h
mov r0h, @byte_ffe4bd
set c
rts
sub_04d12: mov @word_ffe970, r0
jsr cmpTick
bcc loc_04d20
bsr sub_04d00
loc_04d20: set c
rts
sub_04d24: jsr sub_074d0
bcc loc_04d2e
bsr sub_04cc4
bra loc_04d4c
loc_04d2e: b tst kbcrh_0.kclki ; Keyboard Clock In (PS/2 Keyboard Control Register H Channel 0)
bne loc_04d4c
mov #0x64, r0h
loc_04d38: b tst kbcrh_0.kclki ; Keyboard Clock In (PS/2 Keyboard Control Register H Channel 0)
bne loc_04d46
dec r0h
bne loc_04d38
bra loc_04d4c
loc_04d46: mov #0x3a, r0h
jsr sub_10cc0
loc_04d4c: set c
rts
task06_1: btst #6, @byte_ffff14
beq loc_04d62
jsr sub_04f6e
jmp loc_04dd0
loc_04d62: mov @byte_ffe4b4, r0h
mov @byte_ffe4b5, r0l
cmp r0h, r0l
beq loc_04d8a
jsr sub_04e3e
mov @byte_ffe4b4, r0h
mov r0h, @byte_ffe4b5
jsr rts_10ed6
jmp loc_04dd0
loc_04d8a: mov @long_ffe95a, er1
beq loc_04d9a
jsr sub_04dd4
bra loc_04dd0
loc_04d9a: mov @byte_ffe4b4, r0h
cmp #2, r0h
bne loc_04daa
jsr sub_04fa8
bra loc_04dc2
loc_04daa: cmp #0, r0h
bne loc_04db4
jsr sub_05020
bra loc_04dc2
loc_04db4: cmp #3, r0h
bne loc_04dbe
jsr sub_05050
bra loc_04dc2
loc_04dbe: jsr sub_05020
loc_04dc2: mov @byte_ffe4b3, r0h
cmp #3, r0h
beq loc_04dd0
jsr sub_09dbc
loc_04dd0: clr c
rts
sub_04dd4: mov @byte_ffe4b3, r0h
cmp #3, r0h
beq loc_04de2
jsr sub_09dbc
loc_04de2: mov @word_ffe972, r0
jsr cmpTick
bcc rts_04e3c
mov @byte_ffe4b2, r0h
cmp #0xf2, r0h
bne loc_04e38
mov @byte_ffe96e, r0h
cmp #0xff, r0h
bne loc_04e1a
mov #3, r0h
mov r0h, @byte_ffe4b4
mov #0, r0h
mov r0h, @byte_ffe4b6
mov r0h, @byte_ffe4b7
bra loc_04e22
loc_04e1a: mov #6, r0h
mov r0h, @byte_ffe4b4
loc_04e22: mov #0, er0
mov er0, @long_ffe95a
mov r0h, @byte_ffe4b2
bra rts_04e3c
loc_04e38: jsr sub_054a6
rts_04e3c: rts
sub_04e3e: bclr #2, @byte_ffff14
cmp #1, r0h
bne loc_04e50
jsr sub_04ee6
bra rts_04e70
loc_04e50: mov @byte_ffe4b3, r1h
cmp #2, r1h
bne loc_04e64
bset #6, @byte_ffff14
bra rts_04e70
loc_04e64: mov #0, r1h
mov r1h, @byte_ffe4b3
jsr sub_04e72
rts_04e70: rts
sub_04e72: cmp #3, r0h
bne loc_04e9c
mov #off_05560, er1
mov er1, @long_ffe95e
mov #off_050c2, er1
mov er1, @long_ffe974
mov #1, r0h
mov r0h, @byte_ffe4b8
bra loc_04eba
loc_04e9c: cmp #2, r0h
bne loc_04eba
mov r0h, @byte_ffe4b3
mov #off_05560, er1
mov er1, @long_ffe95e
jsr sub_04ece
bra loc_04eba
loc_04eba: mov @tick, r1
mov #1250, r2
add r2, r1
mov r1, @word_ffe970
rts
sub_04ece: jsr sub_02106
jsr sub_03a16
btst #0, r0h
bne loc_04ede
mov #0xf4, r0h
bra loc_04ee0
loc_04ede: mov #0xf5, r0h
loc_04ee0: jsr sub_04f0c
rts
sub_04ee6: btst #5, @byte_ffff14
bne rts_04f0a
bset #5, @byte_ffff14
mov #-1, r0h
mov r0h, @byte_ffe96e
mov r0h, @byte_ffe96f
mov #0xf2, r0h
bsr sub_04f0c
rts_04f0a: rts
sub_04f0c: mov #0, r0l
mov r0l, @byte_ffe4ba
mov r0h, @byte_ffe4b2
sub_04f1a: mov @byte_ffe4b2, r0h
mov #off_055a4, er1
jsr sub_05ecc
mov er0, @long_ffe95a
mov er1, @long_ffe962
mov #0, er1
mov er1, @long_ffe962+8
mov er1, @long_ffe962+4
mov @byte_ffe4b2, r0h
mov #50, r1
mov @tick, r2
add r1, r2
mov r2, @word_ffe972
jsr sub_09d54
rts
sub_04f6e: jsr sub_031ae
bcs loc_04f88
jsr sub_035c0
cmp #0x0a, r0h
blo loc_04f86
jsr sub_031ae
bset #7, r0h
jsr sub_03136
loc_04f86: bra rts_04fa6
loc_04f88: bclr #6, @byte_ffff14
mov #0, r0h
mov r0h, @byte_ffe4b3
jsr sub_02110
mov @byte_ffe4b4, r0h
jsr sub_04e72
rts_04fa6: rts
sub_04fa8: jsr sub_03a58
bcc loc_04fe8
jsr sub_03a3c
bcc loc_04fbc
mov #-1, r0h
jsr sub_04f0c
bra loc_04fe6
loc_04fbc: jsr sub_038e0
bcs loc_04fd4
jsr sub_03996
bcs loc_04fd4
jsr sub_03644
bcs loc_04fd4
jsr sub_03a16
bcc loc_04fe6
loc_04fd4: jsr sub_03a16
btst #0, r0h
beq loc_04fe0
mov #0xf5, r0h
bra loc_04fe2
loc_04fe0: mov #0xf4, r0h
loc_04fe2: jsr sub_04f0c
loc_04fe6: bra rts_0501e
loc_04fe8: btst #2, @byte_ffff14
bne loc_05004
mov @word_ffe970, r0
jsr cmpTick
bcc rts_0501e
mov #0xee, r0h
jsr sub_04f0c
loc_05004: bclr #2, @byte_ffff14
mov @tick, r0
mov #1250, r1
add r1, r0
mov r0, @word_ffe970
rts_0501e: rts
sub_05020: mov @word_ffe970, r0
jsr cmpTick
bcc rts_0504e
btst #1, @byte_ffff14
bne loc_0503c
mov #-1, r0h
jsr sub_04f0c
loc_0503c: mov @tick, r0
mov #1250, r1
add r1, r0
mov r0, @word_ffe970
rts_0504e: rts
sub_05050: mov @byte_ffe4b8, r0h
beq loc_05074
mov @byte_ffe4b8, r1h
inc r1h
mov r1h, @byte_ffe4b8
mov @long_ffe974, er1
jsr switch_er1_r0h
bra rts_050a6
loc_05074: mov @byte_ffe4b3, r0h
cmp #3, r0h
beq rts_050a6
jsr sub_03a58
bcc loc_0509c
mov #off_050a8, er0
mov er0, @long_ffe974
mov #1, r0h
mov r0h, @byte_ffe4b8
bra rts_050a6
loc_0509c: jsr sub_05d3a
bcc rts_050a6
jsr sub_0180a
rts_050a6: rts
off_050a8: case 0 . sub_050e2 sub_050f8 sub_0513a
case 4 sub_0514a sub_0516c sub_05180 sub_05194
case 8 sub_051dc sub_051fc sub_051c6 sub_05340
case 12 sub_0524e
off_050c2: case 0 . sub_05258 sub_05122 sub_0513a
case 4 sub_0514a sub_0525e sub_05280 sub_05292
case 8 sub_052d6 sub_052e4 sub_052c2 sub_05340
case 12 sub_05350
case 0 . sub_05270 sub_0524e
sub_050e2: jsr sub_03a3c
bcc rts_050f6
mov #-1, r0h
jsr sub_04f0c
bset #4, @byte_ffff14
rts_050f6: rts
sub_050f8: jsr sub_038e0
bcc loc_05112
mov r0l, @byte_ffe4bc
mov r0l, @byte_ffe96e
mov #0xf0, r0h
jsr sub_04f0c
bra rts_05120
loc_05112: mov @byte_ffe4b8, r1h
add #2, r1h
mov r1h, @byte_ffe4b8
rts_05120: rts
sub_05122: jsr sub_038e0
mov r0l, @byte_ffe4bc
mov r0l, @byte_ffe96e
mov #0xf0, r0h
jsr sub_04f0c
rts
sub_0513a: mov #0, r0h
mov r0h, @byte_ffe96e
mov #0xf0, r0h
jsr sub_04f0c
rts
sub_0514a: mov @byte_ffe4bc, r0h
mov @byte_ffe4bb, r0l
cmp r0h, r0l
beq rts_0516a
jsr sub_038ac
mov r0h, @byte_ffe96e
mov #0xf0, r0h
jsr sub_04f0c
rts_0516a: rts
sub_0516c: jsr sub_0392c
bcc rts_0517e
mov r0h, @byte_ffe96e
mov #0xed, r0h
jsr sub_04f0c
rts_0517e: rts
sub_05180: jsr sub_03974
bcc rts_05192
mov r0h, @byte_ffe96e
mov #0xf3, r0h
jsr sub_04f0c
rts_05192: rts
sub_05194: jsr sub_03996
bcc rts_051c4
cmp #1, r0h
bne loc_051a2
mov #0xf7, r0h
bra loc_051bc
loc_051a2: cmp #2, r0h
bne loc_051aa
mov #0xf8, r0h
bra loc_051bc
loc_051aa: cmp #3, r0h
bne loc_051b2
mov #0xf9, r0h
bra loc_051bc
loc_051b2: cmp #4, r0h
bne loc_051ba
mov #0xfa, r0h
bra loc_051bc
loc_051ba: mov #0, r0h
loc_051bc: cmp #0, r0h
beq rts_051c4
jsr sub_04f0c
rts_051c4: rts
sub_051c6: jsr sub_03a16
bcc rts_051da
btst #0, r0h
bne loc_051d4
mov #0xf4, r0h
bra loc_051d6
loc_051d4: mov #0xf5, r0h
loc_051d6: jsr sub_04f0c
rts_051da: rts
sub_051dc: jsr sub_03644
bcs loc_051f2
mov @byte_ffe4b8, r1h
inc r1h
mov r1h, @byte_ffe4b8
bra rts_051fa
loc_051f2: mov #0, r0h
mov r0h, @byte_ffe4b8+1
rts_051fa: rts
sub_051fc: mov @byte_ffe4b8+1, r1h
loc_05202: cmp #0xa0, r1h
bcc loc_0521a
push er1
mov r1h, r0h
jsr sub_03660
pop er1
bcs loc_0521a
inc r1h
bra loc_05202
loc_0521a: mov r1h, @byte_ffe4b8+1
bcc rts_0524c
mov r1h, @byte_ffe96e
and #3, r0h
bne loc_05230
mov #0xfb, r0h
bra loc_0523a
loc_05230: cmp #1, r0h
bne loc_05238
mov #0xfd, r0h
bra loc_0523a
loc_05238: mov #0xfc, r0h
loc_0523a: jsr sub_04f0c
mov @byte_ffe4b8, r1h
dec r1h
mov r1h, @byte_ffe4b8
rts_0524c: rts
sub_0524e: mov #0, r0h
mov r0h, @byte_ffe4b8
rts
sub_05258: jsr sub_03a3c
rts
sub_0525e: jsr sub_0392c
mov r0h, @byte_ffe96e
mov #0xed, r0h
jsr sub_04f0c
rts
sub_05270: mov #0, r0h
mov r0h, @byte_ffe96e
mov #0xed, r0h
jsr sub_04f0c
rts
sub_05280: jsr sub_03974
mov r0h, @byte_ffe96e
mov #0xf3, r0h
jsr sub_04f0c
rts
sub_05292: jsr sub_03996
cmp #1, r0h
bne loc_0529e
mov #0xf7, r0h
bra loc_052b8
loc_0529e: cmp #2, r0h
bne loc_052a6
mov #0xf8, r0h
bra loc_052b8
loc_052a6: cmp #3, r0h
bne loc_052ae
mov #0xf9, r0h
bra loc_052b8
loc_052ae: cmp #4, r0h
bne loc_052b6
mov #0xfa, r0h
bra loc_052b8
loc_052b6: mov #0, r0h
loc_052b8: cmp #0, r0h
beq rts_052c0
jsr sub_04f0c
rts_052c0: rts
sub_052c2: jsr sub_03a16
btst #0, r0h
bne loc_052ce
mov #0xf4, r0h
bra loc_052d0
loc_052ce: mov #0xf5, r0h
loc_052d0: jsr sub_04f0c
rts
sub_052d6: jsr sub_03644
mov #0, r0h
mov r0h, @byte_ffe4b8+1
rts
sub_052e4: mov @byte_ffe4b8+1, r1h
loc_052ea: cmp #0xa0, r1h
bcc loc_05304
push er1
mov r1h, r0h
jsr sub_03660
pop er1
bld #7, r0h
bcs loc_05304
inc r1h
bra loc_052ea
loc_05304: mov r1h, @byte_ffe4b8+1
bcc rts_0533e
mov r1h, @byte_ffe96e
inc r1h
mov r1h, @byte_ffe4b8+1
and #3, r0h
bne loc_05322
mov #0xfb, r0h
bra loc_0532c
loc_05322: cmp #1, r0h
bne loc_0532a
mov #0xfd, r0h
bra loc_0532c
loc_0532a: mov #0xfc, r0h
loc_0532c: jsr sub_04f0c
mov @byte_ffe4b8, r1h
dec r1h
mov r1h, @byte_ffe4b8
rts_0533e: rts
sub_05340: jsr sub_03a58
bcc rts_0534e
mov #1, r0h
mov r0h, @byte_ffe4b8
rts_0534e: rts
sub_05350: mov #0, r0h
mov r0h, @byte_ffe4b8
rts
sub_0535a: mov @byte_ffe4b3, r0h
cmp #3, r0h
beq rts_0537a
mov #3, r0h
mov r0h, @byte_ffe4b3
mov #0, r0h
jsr sub_10cc0
jsr sub_0214e
jsr sub_10e5e
rts_0537a: rts
sub_0537c: mov @byte_ffe4b3, r0h
cmp #3, r0h
bne rts_0539c
mov #0, r0h
jsr sub_10cc0
jsr sub_0215a
mov #0, r0h
mov r0h, @byte_ffe4b3
jsr loc_10e62
rts_0539c: rts
sub_0539e: mov @byte_ffe4b3, r0h
cmp #2, r0h
bne loc_053ac
clr c
bra rts_053ae
loc_053ac: set c
rts_053ae: rts
sub_053b0: bclr #5, @byte_ffff14
mov #1, r1h
mov r1h, @byte_ffe4b4
rts
sub_053c2: btst #6, r0l
beq loc_053ca
jmp sub_054a6
loc_053ca: btst #7, r0l
beq loc_053e6
mov @long_ffe95a, er2
beq loc_053de
jsr sub_04f1a
bra loc_053e4
loc_053de: mov #0xfe, r0h
jsr sub_09d54
loc_053e4: bra loc_05458
loc_053e6: cmp #0xfe, r0h
bne loc_05422
mov @long_ffe95a, er1
beq loc_05420
mov @byte_ffe4ba, r0l
inc r0l
mov r0l, @byte_ffe4ba
cmp #8, r0l
blo loc_0541c
mov #0, er1
mov er1, @long_ffe95a
mov r1l, @byte_ffe4b2
bra loc_05420
loc_0541c: jsr sub_04f1a
loc_05420: bra loc_05458
loc_05422: mov @long_ffe95a, er1
beq loc_05434
mov #0x82, r1h
jsr sub_0545e
bra loc_05458
loc_05434: mov @byte_ffe4b4, r1h
cmp #0, r1h
bne loc_05448
cmp #0xaa, r0h
bne loc_05446
jsr sub_053b0
loc_05446: bra loc_05458
loc_05448: bset #2, @byte_ffff14
cmp #2, r1h
bne loc_05458
jsr sub_054e2
loc_05458: mov #1, r0h
rts
sub_0545c: mov #0x84, r1h
sub_0545e: mov @tick, r2
mov #50, r3
add r3, r2
mov r2, @word_ffe972
mov @long_ffe95a, er2
beq rts_0549a
mov r0h, r0l
mov r1h, r0h
mov #long_ffe95a, er1
jsr sub_05d9e
mov @long_ffe95a, er1
bne rts_0549a
mov #0, r0h
mov r0h, @byte_ffe4b2
rts_0549a: rts
sub_0549c: jsr sub_09d54
rts
jsr sub_035d4
sub_054a6: mov #0, r0h
mov r0h, @byte_ffe4b4
mov #0, er0
mov r0h, @byte_ffe4b2
mov er0, @long_ffe95a
bclr #4, @byte_ffff14
mov @byte_ffe4b3, r0h
cmp #3, r0h
bne rts_054e0
jsr sub_056f4
jsr sub_0537c
jsr sub_05d14
rts_054e0: rts
sub_054e2: mov @byte_ffe4b3, r1h
cmp #2, r1h
bne rts_054f0
jsr sub_03136
rts_054f0: rts
sub_054f2: mov @byte_ffe4b4, r0h
mov @byte_ffe4b3, r0l
rts
sub_05500: mov r0l, @byte_ffe4b3
cmp #3, r0l
bne rts_0550e
jsr sub_0535a
rts_0550e: rts
sub_05510: mov @byte_ffe4b6, r0h
mov @byte_ffe4b7, r0l
rts
sub_0551e: push r0
mov @byte_ffe4b3, r0l
cmp #3, r0l
bne loc_0552e
set c
bra loc_05530
loc_0552e: clr c
loc_05530: pop r0
rts
mov @byte_ffe4b2, r0h
bne loc_05558
mov @byte_ffe4b4, r0h
mov @byte_ffe4b3, r0l
cmp #3, r0h
bne loc_05558
cmp #3, r0l
bne loc_05558
jsr sub_035c0
cmp #0, r0l
bne loc_0555c
loc_05558: clr c
bra rts_0555e
loc_0555c: set c
rts_0555e: rts
off_05560: .long rts_05ef8 ; 0
.long rts_05ef8 ; 1
.long rts_05ef8 ; 2
.long rts_05ef8 ; 3
.long sub_05f14 ; 4
.long rts_05ef8 ; 5
.long rts_05ef8 ; 6
.long rts_05ef8 ; 7
.long sub_05fd2 ; 8
.long sub_05f44 ; 9
.long rts_05ef8 ; 10
.long rts_05ef8 ; 11
.long rts_05ef8 ; 12
.long sub_05fc0 ; 13
.long sub_05fcc ; 14
.long rts_05ef8 ; 15
.long sub_05fda ; 16
off_055a4: .long sub_055f4 ; 0
.long NULL ; 1
.long NULL ; 2
.long NULL ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long sub_0563a ; 13
.long NULL ; 14
.long sub_05632 ; 15
.long NULL ; 16
.long NULL ; 17
.long NULL ; 18
.long NULL ; 19
sub_055f4: cmp #0xfa, r0l
bne loc_0560c
mov @tick, r1
mov #500, r2
add r2, r1
mov r1, @word_ffe972
bra rts_05630
loc_0560c: cmp #0xaa, r0l
bne loc_05624
mov @byte_ffe4b4, r1h
cmp #3, r1h
beq loc_05622
cmp #2, r1h
beq loc_05622
jsr sub_053b0
loc_05622: bra rts_05630
loc_05624: cmp #0xfc, r0l
bne rts_05630
mov #5, r1h
mov r1h, @byte_ffe4b4
rts_05630: rts
sub_05632: mov r0l, @byte_ffe4bb
rts
sub_0563a: mov @(0x14,er1), r1h
mov r1h, @byte_ffe4b6
mov r0l, @byte_ffe4b7
mov r0l, r1l
mov #0xab20, r0
cmp r0, r1
bne loc_0565e
mov #2, r0h
mov r0h, @byte_ffe4b4
bra rts_0567c
loc_0565e: cmp #0xab, r1h
beq loc_0566a
mov #1, r0
cmp r0, r1
bne loc_05674
loc_0566a: mov #3, r0h
mov r0h, @byte_ffe4b4
bra rts_0567c
loc_05674: mov #4, r0h
mov r0h, @byte_ffe4b4
rts_0567c: rts
sub_0567e: mov #0, er1
bra loc_056a6
loc_05686: mov #4, er1
bra loc_056a6
sub_0568e: mov #8, er1
bra loc_056a6
sub_05696: mov #0x0c, er1
bra loc_056a6
mov #0x10, er1
bra loc_056a6
loc_056a6: mov @long_ffe978, er2
add er2, er1
mov @er1, er1
jmp @er1
rts
off_056b8: .long sub_05932 ; 0
.long sub_059ac ; 1
.long sub_053c2 ; 2
.long sub_0545c ; 3
.long sub_0549c ; 4
off_056cc: .long sub_05932 ; 0
.long sub_059ac ; 1
.long sub_059f0 ; 2
.long sub_05a54 ; 3
.long sub_05ab8 ; 4
.long sub_09d54 ; 5
.long rts_05702 ; 6
.long sub_044a0 ; 7
.long rts_05702 ; 8
.long sub_09d54 ; 9
sub_056f4: mov #off_056b8, er0
loc_056fa: mov er0, @long_ffe978
rts_05702: rts
sub_05704: mov #off_056cc, er0
bra loc_056fa
sub_0570c: bsr sub_05728
mov #6, r0h
mov r0h, @byte_ffe4bf
bset #6, @byte_ffff15
bset #3, @byte_ffff15
rts
sub_05728: mov #0, r0h
mov r0h, @byte_ffe4be
mov r0h, @byte_ffff15
mov r0h, @byte_ffe4bf
bsr sub_05760
mov #off_05b5c, er0
mov er0, @long_ffe980
mov #off_05abc, er0
mov er0, @long_ffe992
jsr sub_03a74
rts
sub_05760: mov #0, r0h
jsr sub_06968
rts
sub_05768: jsr sub_03924
jsr sub_05ce2
rts
task07: mov @byte_ffe4bf, r0h
mov #off_05786, er1
jsr switch_er1_r0h
clr c
rts
off_05786: case 0 sub_0579c sub_057e4 sub_0581a sub_05832
case 4 sub_0584e sub_05862 sub_058ba sub_058ca
case 8 sub_057e4 sub_05832 sub_05902
sub_0579c:
mov #task07o, r0h
jsr schedFrontTask
rts
sub_057e4: jsr sub_04acc
and #3, r0h
cmp #3, r0h
bne rts_05818
jsr sub_020de
jsr sub_035d4
jsr sub_02e72
mov #2, r0h
jsr sub_03872
mov #0, r0h
jsr sub_06968
jsr sub_03a74
sub_0580a: mov @byte_ffe4bf, r0h
inc r0h
mov r0h, @byte_ffe4bf
rts_05818: rts
sub_0581a: mov #0, er0
mov r0h, @byte_ffe4be
mov er0, @long_ffe97c
bsr sub_0580a
rts
sub_05832: mov #7, r0h
jsr sub_06968
mov #task07o, r0h
mov #500, r1
jsr schedBackTaskDelayed
bsr sub_0580a
bset #6, @byte_ffff15
rts
sub_0584e: mov #task07o, r0h
jsr checkSchedTask
bcc loc_0585a
bsr sub_0580a
bra rts_05860
loc_0585a: mov #task07o, r0h
jsr schedFrontTask
rts_05860: rts
sub_05862: mov #0, r0h
jsr sub_06968
jsr sub_035d4
jsr sub_054f2
cmp #5, r0l
bne loc_0587e
mov #0xfc00, r0
jsr sub_04af8
bra loc_058a8
loc_0587e: cmp #3, r0l
beq loc_05890
push er0
jsr sub_03348
pop er0
bcs loc_058a8
loc_05890: push er0
mov #0xaa00, r0
jsr sub_04af8
pop er0
cmp #3, r0l
beq loc_058a8
jsr sub_02ee6
loc_058a8: mov #0, r0h
mov r0h, @byte_ffe4bf
bclr #6, @byte_ffff15
rts
sub_058ba: mov #task07o, r0h
mov #2500, r1
jsr schedBackTaskDelayed
bsr sub_0580a:16
rts
sub_058ca: mov #task07o, r0h
jsr checkSchedTask
bcc loc_058dc
mov #5, r0h
mov r0h, @byte_ffe4bf
bra rts_05900
loc_058dc: jsr sub_054f2
cmp #3, r0h
bne loc_058ee
mov #5, r0h
mov r0h, @byte_ffe4bf
bra rts_05900
loc_058ee: cmp #5, r0h
bne rts_05900
mov r0h, r0l
jsr sub_05500
mov #5, r0h
mov r0h, @byte_ffe4bf
rts_05900: rts
sub_05902: mov @long_ffe97c, er0
beq loc_05916
mov @byte_ffe4be, r0h
cmp #-1, r0h
beq rts_05930
loc_05916: mov #0, r0h
jsr sub_06968
jsr sub_02ee6
mov #0, r0h
mov r0h, @byte_ffe4bf
bclr #6, @byte_ffff15
rts_05930: rts
sub_05932: btst #6, @byte_ffff15
bne loc_059a2
sub_0593c: push er0
mov @long_ffe992, er1
jsr sub_05ecc
pop er2
bcs loc_0595a
mov r2h, @byte_ffe4be
bra loc_05964
loc_0595a: mov @long_ffe97c, er3
bne loc_0599c
loc_05964: mov er0, @long_ffe97c
mov er1, @long_ffe984
mov #0, er1
mov er1, @long_ffe98c
mov er1, @long_ffe988
mov r1h, @byte_ffe4bf
push er2
jsr sub_02ef2
pop er2
loc_0599c: mov r2, r0
mov #0x81, r1h
bra sub_059ae
loc_059a2: mov #0xfe40, r0
jsr sub_04af8
rts
sub_059ac: mov #0x83, r1h
sub_059ae: btst #4, @byte_ffff15
beq loc_059c4
bclr #4, @byte_ffff15
cmp #0x83, r1h
beq loc_059ec
loc_059c4: mov @long_ffe97c, er2
beq loc_059ec
mov r0h, r0l
mov r1h, r0h
mov #long_ffe97c, er1
jsr sub_05d9e
mov @long_ffe97c, er1
bne loc_059ea
jsr sub_02efa
loc_059ea: bra rts_059ee
loc_059ec: mov #0, r0h
rts_059ee: rts
sub_059f0: btst #6, r0l
bne loc_05a5a
btst #7, r0l
beq loc_05a08
btst #3, @byte_ffff15
beq loc_05a5a
jsr sub_04af8
bra loc_05a50
loc_05a08: cmp #0xfe, r0h
bne loc_05a24
jsr sub_04af8
mov #0, er1
mov er1, @long_ffe97c
jsr sub_02efa
bra loc_05a50
loc_05a24:
loc_05a3a: mov #0x82, r1h
loc_05a3c: mov @long_ffe97c, er2
bne sub_059ae:16
jsr sub_04af8
jsr sub_02efa
loc_05a50: mov #0, r0h
rts
sub_05a54: mov #0x84, r1h
bra sub_059ae:16
loc_05a5a:
jsr sub_01818
mov @long_ffe97c, er0
beq loc_05ab0
mov @byte_ffe4be, r0h
mov @long_ffe992, er1
jsr sub_05ecc
mov er1, @long_ffe984
mov @long_ffe988, er0
mov er0, @long_ffe97c
mov #0x80, r0h
jsr sub_059ae
loc_05ab0: jsr sub_054a6
mov #0, r0h
rts
sub_05ab8: jmp sub_09d54
off_05abc: .long sub_05be4 ; 0
.long sub_04ada ; 1
.long sub_036be ; 2
.long sub_036ba ; 3
.long sub_036b6 ; 4
.long sub_037ea ; 5
.long sub_037e4 ; 6
.long sub_037de ; 7
.long sub_0379c ; 8
.long sub_039b8 ; 9
.long sub_039e2 ; 10
.long sub_05c14 ; 11
.long sub_05c1e ; 12
.long NULL ; 13
.long sub_05cb4 ; 14
.long NULL ; 15
.long sub_05cb4 ; 16
.long sub_05cac ; 17
.long sub_05cbc ; 18
.long sub_05cce ; 19
off_05b0c: .long sub_05bf4 ; 0
.long NULL ; 1
.long sub_036be ; 2
.long sub_036ba ; 3
.long sub_036b6 ; 4
.long sub_037ea ; 5
.long sub_037e4 ; 6
.long sub_037de ; 7
.long sub_0379c ; 8
.long sub_039b8 ; 9
.long sub_039e2 ; 10
.long sub_05c14 ; 11
.long sub_05c1e ; 12
.long sub_05fda ; 13
.long sub_05cb4 ; 14
.long NULL ; 15
.long sub_05cb4 ; 16
.long sub_05cac ; 17
.long sub_05cbc ; 18
.long sub_05cce ; 19
off_05b5c: .long rts_05ef8 ; 0
.long sub_05efa ; 1
.long sub_05efe ; 2
.long sub_05f08 ; 3
.long sub_05f14 ; 4
.long sub_05f0e ; 5
.long sub_05f64 ; 6
.long sub_05f2c ; 7
.long rts_05ef8 ; 8
.long sub_05f44 ; 9
.long rts_05ef8 ; 10
.long rts_05ef8 ; 11
.long sub_05fc0 ; 12
.long rts_05ef8 ; 13
.long rts_05ef8 ; 14
.long sub_05fda ; 15
.long rts_05ef8 ; 16
off_05ba0: .long rts_05ef8 ; 0
.long sub_05efa ; 1
.long sub_05fb0 ; 2
.long sub_05fb0 ; 3
.long sub_05f14 ; 4
.long sub_05fb0 ; 5
.long sub_05f64 ; 6
.long sub_05f2c ; 7
.long rts_05ef8 ; 8
.long sub_05f44 ; 9
.long sub_05fa4 ; 10
.long sub_05faa ; 11
.long sub_05fc0 ; 12
.long rts_05ef8 ; 13
.long rts_05ef8 ; 14
.long sub_05fda ; 15
.long rts_05ef8 ; 16
sub_05be4: mov #1, r1h
mov r1h, @byte_ffe4bf
mov #task07o, r0h
jsr schedBackTask
rts
sub_05bf4: mov #8, r1h
mov r1h, @byte_ffe4bf
mov #task07o, r0h
jsr schedBackTask
rts
jsr sub_03742
mov #0x2b, r0h ; 500 ms, 10.9 cps
jsr setTypematic
jsr sub_02f18
rts
sub_05c14: jsr sub_02f18
jsr sub_039b8
rts
sub_05c1e: cmp #0x80, r0h
bhs loc_05c26
bsr setTypematic
bra rts_05c38
loc_05c26: mov #0xfe, r2h
mov r2h, @(0x14,er1)
mov #byte_0605f, er2
mov er2, @(0,er1)
rts_05c38: rts
setTypematic: jsr sub_0394e
mov #0, r3l
bld #5, r0h
bst #0, r3l
bld #6, r0h
bst #1, r3l
inc r3l
mov #250, r0l ; 250, 500, 750, 1000 ms delay
mulxu r0l, r3
mov r0h, r2l
and #0x1f, r2l
shll r2l
mov #0, r2h
mov #0, e2
mov @(repeatTab,er2), r2 ; 30..2 char/s repeate rate
mov r3, r0
mov r2, r1
jsr sub_02f22
rts
repeatTab: .word 33, 38, 42, 46, 50, 54, 58, 63 ; 30.3, 26.3, 23.8, 21.7, 20.0, 18.5, 17.2, 15.9 cps
.word 67, 75, 83, 92, 100, 108, 117, 125 ; 14.9, 13.3, 12.0, 10.9, 10.0, 9.3, 8.5, 8.0 cps
.word 133, 150, 167, 183, 200, 217, 234, 250 ; 7.5, 6.7, 6.0, 5.5, 5.0, 4.6, 4.3, 4.0 cps
.word 267, 300, 334, 367, 400, 437, 467, 500 ; 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 cps
sub_05cac: mov #0xee, r0h
mov r0h, @(0x14,er1)
rts
sub_05cb4: mov #0xfe, r0h
mov r0h, @(0x14,er1)
rts
sub_05cbc: mov r0h, @(0x14,er1)
jsr sub_03906
bld #1, r0h
bst #0, r0h
jsr sub_02128
rts
sub_05cce: jsr sub_033a2
and #7, r0h
inc r0h
mov r0h, @(0x14,er1)
mov #1, r0h
mov r0h, @(0x15,er1)
rts
sub_05ce2: jsr sub_03906
mov @long_ffe980, er2
mov @(0x1c,er2), er2
jmp @er2
sub_05cf6: mov #off_05ba0, er0
mov er0, @long_ffe980
mov #off_05b0c, er0
mov er0, @long_ffe992
rts
sub_05d14: mov #off_05b5c, er0
mov er0, @long_ffe980
mov #off_05abc, er0
mov er0, @long_ffe992
jsr sub_03924
jsr sub_05f2c
rts
sub_05d3a: push er0
mov @byte_ffe4bf, r0h
bne loc_05d50
mov @long_ffe97c, er0
beq loc_05d54
loc_05d50: clr c
bra loc_05d56
loc_05d54: set c
loc_05d56: pop er0
rts
bset #3, @byte_ffff15
rts
bclr #3, @byte_ffff15
rts
mov #0, r0h
bld #3, @byte_ffff15
bst #0, r0h
rts
sub_05d9e: mov @(0,er1), er2
beq rts_05dd4
mov @er2, r3h
btst #7, r3h
beq loc_05dc6
push er1
bsr sub_05dd6
pop er1
mov er2, @(0,er1)
cmp #0x81, r0h
bne loc_05dc6
mov er2, @(0x10,er1)
loc_05dc6: mov er2, er3
beq loc_05dce
bsr sub_05e04
bra rts_05dd4
loc_05dce: mov er2, @(0,er1)
rts_05dd4: rts
sub_05dd6: mov @er2+, r4l
btst #7, r4l
bne loc_05df0
mov #0, r4h
bld #6, r4l
bst #1, r4h
bld #5, r4l
bst #0, r4h
add r4h, r2l
addx #0, r2h
bcc loc_05dee
inc #1, e2
loc_05dee: bra loc_05e00
loc_05df0: cmp r4l, r0h
beq rts_05e02
cmp #-1, r4l
bne loc_05e00
mov #0, er2
bra rts_05e02
loc_05e00: bra sub_05dd6
rts_05e02: rts
sub_05e04: mov @(0,er1), er2
beq rts_05e7a
mov @er2, r4l
btst #7, r4l
beq loc_05e26
cmp #-1, r4l
bne loc_05e24
mov #0, er2
mov er2, @(0,er1)
rts
loc_05e24: bra rts_05e7a
loc_05e26: adds #1, er2
mov er2, @(0,er1)
mov r4l, r4h
and #0x1f, r4h
shll r4h
shll r4h
mov @(4,er1), er3
add r4h, r3l
addx #0, r3h
bcc loc_05e44
inc #1, e3
loc_05e44: mov @er3, er3
beq loc_05e60
push er0
push er1
mov r0l, r0h
jsr @er3
pop er1
pop er0
bra loc_05e78
loc_05e60: mov #0, r4h
bld #6, r4l
bst #1, r4h
bld #5, r4l
bst #0, r4h
add r4h, r2l
addx #0, r2h
bcc loc_05e72
inc #1, e2
loc_05e72: mov er2, @(0,er1)
loc_05e78: bra sub_05e04
rts_05e7a: rts
off_05e7c: .long byte_05fe8 ; 0
.long byte_05ff9 ; 1
.long byte_06000 ; 2
.long byte_06000 ; 3
.long byte_06000 ; 4
.long byte_06016 ; 5
.long byte_06016 ; 6
.long byte_06016 ; 7
.long byte_06016 ; 8
.long byte_06022 ; 9
.long byte_06022 ; 10
.long byte_06040 ; 11
.long byte_0604c ; 12
.long byte_06067 ; 13
.long byte_0610b ; 14
.long byte_0607d ; 15
.long byte_0610b ; 16
.long byte_06100 ; 17
.long byte_06115 ; 18
.long byte_06129 ; 19
sub_05ecc: cmp #0xec, r0h
bhs loc_05ed6
mov #0xf1, r0h
mov #1, r3h
bra loc_05ed8
loc_05ed6: mov #0, r3h
loc_05ed8: mov r0h, r2l
mov #0, r2h
not r2l
mov #0, e2
shll #2, er2
mov @(off_05e7c,er2), er0
add er1, er2
mov @er2, er1
bld #0, r3h
rts
rts_05ef8: rts
sub_05efa: jmp sub_03606
sub_05efe: mov #0xfa, r0h
loc_05f00: mov #0, r0l
jsr sub_04af8
rts
sub_05f08: mov @(0x14,er1), r0h
bra loc_05f00
sub_05f0e: mov @(0x15,er1), r0h
bra loc_05f00
sub_05f14: mov @(0,er1), er3
mov @er3+, r2h
mov er3, @(0,er1)
add r2h, r3l
addx #0, r3h
bcc loc_05f2a
inc #1, e3
loc_05f2a: jmp @er3
sub_05f2c:
jsr sub_02bfc
bcs loc_05f34
bclr #1, r0h
loc_05f34: jsr sub_02bf2
bcs loc_05f40
jsr sub_02c06
bst #1, r0h
loc_05f40: jmp sub_06968
sub_05f44: mov @(0,er1), er3
mov #0, r2h
mov #0, e2
mov @er3, r2l
bpl loc_05f5a
mov #0xff, r2h
mov #0xffff, e2
loc_05f5a: add er2, er3
mov er3, @(0,er1)
rts
sub_05f64: push er1
jsr sub_0539e
pop er1
bcs loc_05f78
mov #0xab83, r0
bra loc_05f7c
loc_05f78: mov #0xab84, r0
loc_05f7c: mov r0h, @(0x14,er1)
mov r0l, @(0x15,er1)
rts
push er1
jsr sub_05510
pop er1
mov r0, r2
bne loc_05f9a
mov #0xab83, r0
loc_05f9a: mov r0h, @(0x14,er1)
mov r0l, @(0x15,er1)
rts
sub_05fa4: mov r0l, r0h
bra loc_05f00:16
sub_05faa: mov r0l, r0h
jmp sub_09d54
sub_05fb0: mov @(0,er1), er2
subs #1, er2
mov er2, @(0x0c,er1)
rts
sub_05fc0: mov @(8,er1), er2
beq rts_05fca
jmp @er2
rts_05fca: rts
sub_05fcc: mov r0l, @(0x14,er1)
rts
sub_05fd2: mov @(0x14,er1), r0h
jmp sub_09d54
sub_05fda: mov #0, er0
mov er0, @(0,er1)
rts
byte_05fe8: .byte 0x81, 0x01, 0x0b, 0x02, 0x84, 0x82, 0x0a, 0x0d
.byte 0x83, 0x0c, 0x82, 0x0a, 0x0d, 0x10, 0x83, 0x0f
.byte -1
byte_05ff9: .byte 0x81, 0x0b, 0x0c, 0x84, 0x0f, 0x10, -1
byte_06000: .byte 0x81, 0x01, 0x0b, 0x02, 0x84, 0x08, 0x82, 0x0a
.byte 0x08, 0x83, 0x81, 0x0c, 0x0b, 0x02, 0x84, 0x82
.byte 0x0a, 0x10, 0x83, 0x29, 0xf6, -1
byte_06016: .byte 0x81, 0x01, 0x0c, 0x0b, 0x02, 0x84, 0x82, 0x0a
.byte 0x10, 0x83, 0x0f, -1
byte_06022: .byte 0x81, 0x01, 0x24, 0x0a, 0x0c, 0x0b, 0x02, 0x84
.byte 0x82, 0x0a, 0x10, 0x83, 0x0f, -1
jsr sub_03742
mov #0x2b, r0h ; 500 ms, 10.9 cps
jsr setTypematic
jsr sub_02f18
rts
byte_06040: .byte 0x81, 0x01, 0x0c, 0x0b, 0x02, 0x84, 0x82, 0x0a
.byte 0x10, 0x83, 0x0f, -1
byte_0604c: .byte 0x81, 0x0b, 0x02, 0x84, 0x82, 0x0a, 0x08, 0x83
.byte 0x81, 0x0b, 0x0c, 0x02, 0x84, 0x82, 0x0a, 0x10
.byte 0x83, 0x0f, -1
byte_0605f: .byte 0x03, 0x84, 0x82, 0x0a, 0x83, 0x29, 0xef, -1
byte_06067: .byte 0x81, 0x0b, 0x02, 0x06, 0x84, 0x82, 0x0a, 0x83
.byte 0x03, 0x0c, 0x82, 0x0a, 0x0e, 0x83, 0x05, 0x82
.byte 0x0a, 0x0d, 0x10, 0x83, 0x0f, -1
byte_0607d: .byte 0x81, 0x01, 0x0b, 0x24, 0x28, 0x02, 0x84, 0x82
.byte 0x0a, 0x08, 0x83, 0x81, 0x0b, 0x24, 0x22, 0x02
.byte 0x84, 0x82, 0x0a, 0x24, 0x3a, 0x29, 0x12, 0x83
.byte 0x24, 0x4b, 0x03, 0x82, 0x0d, 0x10, 0x0a, 0x83
.byte 0x0f, -1
byte_0609f: .byte 0x03, 0x82, 0x0a, 0x83, 0x29, 0xe4, -1
byte_060a6: .byte 0x10, 0x83, 0x0f, -1
jmp sub_02f18
mov r0h, @(0x14,er1)
jsr sub_03872
bcc rts_060ca
mov #0xfe, r2h
mov r2h, @(0x14,er1)
mov #byte_0609f, er2
mov er2, @(0,er1)
rts_060ca: rts
mov @(0x14,er1), r0h
bne rts_060e0
mov @(0,er1), er0
adds #2, er0
mov er0, @(0,er1)
rts_060e0: rts
mov @(0x14,er1), r0h
bne loc_060f2
jsr sub_038ac
mov r0h, @(0x14,er1)
bra rts_060fe
loc_060f2: mov #byte_060a6+2, er2
mov er2, @(0,er1)
rts_060fe: rts
byte_06100: .byte 0x81, 0x0b, 0x0c, 0x03, 0x84, 0x82, 0x10, 0x0a
.byte 0x83, 0x0f, -1
byte_0610b: .byte 0x81, 0x0b, 0x0c, 0x03, 0x84, 0x82, 0x0a, 0x83
.byte 0x0f, -1
byte_06115: .byte 0x81, 0x0b, 0x02, 0x84, 0x82, 0x0a, 0x08, 0x83
.byte 0x81, 0x0b, 0x0c, 0x07, 0x02, 0x84, 0x82, 0x0a
.byte 0x10, 0x83, 0x0f, -1
byte_06129: .byte 0x81, 0x0b, 0x0c, 0x02, 0x84, 0x82, 0x0a, 0x83
.byte 0x03, 0x82, 0x0a, 0x0e, 0x83, 0x05, 0x82, 0x0a
.byte 0x0d, 0x10, 0x83, 0x0f, -1
task08: mov #task08o, r0h
jsr checkSchedTask
bcc loc_061ae
mov #task08o, r0h
mov #125, r1
jsr schedBackTaskDelayed
jsr sub_078ea
bcs loc_061ae
mov #word_ffe996, er3
mov #2, r4h
loc_0615e: mov @(1,er3), r0l
mov @er3, r0h
beq loc_06188
push er3
bsr sub_061d4
pop er3
bcc loc_06186
mov #0, er0
mov r0h, @er3
mov r0h, @(1,er3)
mov er0, @long_ffe9a4
loc_06186: bra loc_0618e
loc_06188: adds #2, er3
dec r4h
bne loc_0615e
loc_0618e: mov @word_ffe996, r0h
bne loc_061ae
mov @word_ffe998, r0h
bne loc_061ae
jsr rts_078c8
bld #6, @byte_ffff16:8
jsr sub_01fee
jsr sub_0fe68
loc_061ae: mov #task08o, r0h
jsr schedFrontTask
mov @word_ffe996, r0
bne loc_061c4
mov @word_ffe998, r0
beq loc_061cc
loc_061c4: jsr sub_10e6e
set c
bra rts_061d2
loc_061cc: jsr sub_10e72
clr c
rts_061d2: rts
sub_061d4: mov @long_ffe9a4, er1
bne loc_061fe
push er0
jsr sub_065a4
pop er0
mov #125, r1
mulxu r0l, r1
mov @tick, r2
add r1, r2
mov r2, @word_ffe9a2
loc_061fe: cmp #0, r0l
beq loc_0623e
push er0
mov @word_ffe9a2, r0
jsr cmpTick
pop er0
bcc loc_0623e
push er0
jsr sub_065a4
pop er0
mov #125, r1
mulxu r0l, r1
mov @tick, r0
add r1, r0
mov r0, @word_ffe9a2
jsr sub_065f4
clr c
bra rts_06288
loc_0623e: mov @long_ffe9a4, er3
mov @er3+, r1h
cmp #-1, r1h
beq loc_06276
mov @er3+, r1l
mov @er3+, r2l
mov er3, @long_ffe9a4
mov #125, r3l
mulxu r3l, r2
push er1
mov #task08o, r0h
mov r2, r1
jsr schedBackTaskDelayed
pop er1
mov r1, r0
jsr sub_065c6
clr c
bra rts_06288
loc_06276: cmp #0, r0l
bne loc_06282
jsr sub_065f4
set c
bra rts_06288
loc_06282: jsr sub_065f4
clr c
rts_06288: rts
enableTMR_01: b clr mstpcrh.mstp12 ; TMR_0, TMR_1 (Module Stop Control Register H)
mov #-1, r0
mov r0, @word_ffe99a
mov #-1, r0
and #~0x1f00, r0
mov r0, @word_ffe99c
jsr sub_110da
mov #0, r0h
mov r0h, @byte_ffff16:8
jsr sub_01fe8
bsr sub_062fc
bra loc_062ea
sub_062b6: mov @word_ffe99a, r0
mov r0, @word_ffe99e
mov #0xe600, r1
or r0h, r1h
or r0l, r1l
mov r1, @word_ffe99a
mov @word_ffe99c, r0
mov r0, @word_ffe9a0
mov #0, r1
or r0h, r1h
or r0l, r1l
mov r1, @word_ffe99c
loc_062ea: mov #word_ffe996, er1
bsr sub_06310
mov #word_ffe998, er1
bsr sub_06310
rts
sub_062fc: push er0
mov #task08o, r0h
mov #0, r1
jsr schedBackTaskDelayed
pop er0
rts
sub_06310: mov @er1, r0h
beq rts_06338
dec r0h
push er1
jsr sub_06502
pop er1
bcc rts_06338
push er1
jsr sub_065f4
pop er1
mov #0, r0h
mov r0h, @er1
mov r0h, @(1,er1)
rts_06338: rts
sub_0633a: mov #0, r0h
mov r0h, @word_ffe998
mov r0h, @word_ffe998+1
jsr sub_065f4
rts
sub_0634e: mov @word_ffe99e, r0
mov r0, @word_ffe99a
mov @word_ffe9a0, r0
mov r0, @word_ffe99c
rts
sub_06368: jsr sub_01fe8
mov #0, r0h
mov r0h, @word_ffe996
mov r0h, @word_ffe996+1
mov r0h, @word_ffe998
mov r0h, @word_ffe998+1
jsr sub_065f4
rts
sub_0638c: push er0
bsr sub_063a0
pop er0
bcs rts_0639e
mov r0l, @word_ffe998+1
rts_0639e: rts
sub_063a0: cmp #byte_06631 - byte_0661c, r0h
bhs loc_063e2
jsr sub_06502
bcs loc_063e2
mov @word_ffe998, r0l
beq loc_063dc
mov r0h, r1l
mov #0, r1h
mov #0, e1
mov @(byte_0661c,er1), r2h
mov r0l, r1l
dec r1l
mov @(byte_0661c,er1), r2l
cmp r2h, r2l
bls loc_063d8
bsr sub_063e6
clr c
bra loc_063da
loc_063d8: set c
loc_063da: bra loc_063e0
loc_063dc: bsr sub_063e6
clr c
loc_063e0: bra rts_063e4
loc_063e2: set c
rts_063e4: rts
sub_063e6: inc r0h
mov r0h, @word_ffe998
mov #0, r0h
mov r0h, @word_ffe998+1
mov @word_ffe996, r3h
bne rts_06414
jsr sub_065f4
mov #0, er0
mov er0, @long_ffe9a4
jsr sub_062fc
rts_06414: rts
sub_06416: mov @word_ffe998, r0h
beq loc_06422
dec r0h
bra rts_06424
loc_06422: mov #-1, r0h
rts_06424: rts
cmp #8, r0h
bhs loc_0643a
mov @word_ffe99a, r0l
bset r0h, r0l
mov r0l, @word_ffe99a
bra rts_06480
loc_0643a: cmp #0x10, r0h
bhs loc_06452
mov @word_ffe99a+1, r0l
add #0xf8, r0h
bset r0h, r0l
mov r0l, @word_ffe99a+1
add #8, r0h
bra rts_06480
loc_06452: cmp #0x18, r0h
bhs loc_0646a
mov @word_ffe99c, r0l
add #0xf0, r0h
bset r0h, r0l
mov r0l, @word_ffe99c
add #0x10, r0h
bra rts_06480
loc_0646a: cmp #0x20, r0h
bhs rts_06480
add #0xe8, r0h
mov @word_ffe99c+1, r0l
bset r0h, r0l
mov r0l, @word_ffe99c+1
add #0x18, r0h
rts_06480: rts
cmp #8, r0h
bhs loc_06496
mov @word_ffe99a, r0l
bclr r0h, r0l
mov r0l, @word_ffe99a
bra rts_064dc
loc_06496: cmp #0x10, r0h
bhs loc_064ae
mov @word_ffe99a+1, r0l
add #0xf8, r0h
bclr r0h, r0l
mov r0l, @word_ffe99a+1
add #8, r0h
bra rts_064dc
loc_064ae: cmp #0x18, r0h
bhs loc_064c6
mov @word_ffe99c, r0l
add #0xf0, r0h
bclr r0h, r0l
mov r0l, @word_ffe99c
add #0x10, r0h
bra rts_064dc
loc_064c6: cmp #0x20, r0h
bhs rts_064dc
mov @word_ffe99c+1, r0l
add #0xe8, r0h
bclr r0h, r0l
mov r0l, @word_ffe99c+1
add #0x18, r0h
rts_064dc: rts
mov #-1, r0
mov r0, @word_ffe99a
mov r0, @word_ffe99c
rts
mov #0, r0
mov r0, @word_ffe99a
mov r0, @word_ffe99c
rts
sub_06502: push er0
cmp #8, r0h
bhs loc_06512
mov @word_ffe99a, r0l
bra loc_0653a
loc_06512: cmp #0x10, r0h
bhs loc_06520
mov @word_ffe99a+1, r0l
add #0xf8, r0h
bra loc_0653a
loc_06520: cmp #0x18, r0h
bhs loc_06520
mov @word_ffe99c, r0l
add #0xf0, r0h
bra loc_0653a
cmp #0x20, r0h
bhs loc_06520
mov @word_ffe99c+1, r0l
add #0xe8, r0h
loc_0653a: btst r0h, r0l
beq loc_06542
set c
bra loc_06544
loc_06542: clr c
loc_06544: pop er0
rts
sub_0654a: cmp #byte_06631 - byte_0661c, r0h
bhs rts_06576
bsr sub_06502
bcs rts_06576
inc r0h
mov r0h, @word_ffe996
mov r0l, @word_ffe996+1
jsr sub_065f4
mov #0, er0
mov er0, @long_ffe9a4
jsr sub_062fc
rts_06576: rts
sub_06578: mov @word_ffe996, r0h
beq rts_065a2
mov #0, r0
mov r0h, @word_ffe996
mov r0l, @word_ffe996+1
jsr sub_065f4
mov #0, er0
mov er0, @long_ffe9a4
rts_065a2: rts
sub_065a4: zero er1
mov r0h, r1l
dec r1l
shll er1
mov #off_06632, er0
add er1, er0
mov @er0, r1
exts er1
add er1, er0
mov er0, @long_ffe9a4
rts
sub_065c6: btst #7, @byte_ffff16:8
bne rts_065f2
cmp #0, r0h
beq sub_065f4
mov r0l, @tcora_0:8 ; TMR_0 Time Constant Register A
shlr r0l
mov r0l, @tcorb_0:8 ; TMR_0 Time Constant Register B
mov #6, r1h
mov r1h, @tcsr_0:8 ; TMR_0 Timer Control/Status Register
and #3, r0h
or #8, r0h
mov r0h, @tcr_0:8 ; TMR_0 Timer Control Register
jsr rts_078c6
btst #4, @byte_ffff16:8
bne rts_065f2
jsr sub_01fe8
jsr sub_0fe5c
rts_065f2: rts
sub_065f4: mov #0, r0h
mov r0h, @tcr_0:8 ; TMR_0 Timer Control Register
mov #0xf0, r0h
mov r0h, @tcsr_0:8 ; TMR_0 Timer Control/Status Register
rts
sub_065fe: bsr sub_065f4
jsr rts_078c8
bset #7, @byte_ffff16:8
bld #6, @byte_ffff16:8
jsr sub_01fee
jsr sub_0fe68
rts
sub_06616: bclr #7, @byte_ffff16:8
rts
byte_0661c: .byte 0, 1, 2, 3, 3, 3, 4, 0
.byte 2, 1, 5, 5, 5, 5, 5, 5
.byte 5, 5, 5, 5, 5
byte_06631:
.align 1, -1
off_06632: case 0 byte_0665c byte_06666 byte_06694 byte_066a0
case 4 byte_066aa byte_066a0 byte_066b7 byte_066c4
case 8 byte_066ce byte_066dd byte_06710 byte_066f3
case 12 byte_06706 byte_06700 byte_066fa byte_066dd
case 16 byte_06715 byte_0671c byte_06720 byte_06727
case 20 byte_06734
byte_0665c: .byte 0, 0, 2
.byte 2, 177, 8
.byte 0, 0, 2
.byte -1
byte_06666: .byte 0, 0, 80
.byte 2, 125, 4
.byte 3, 31, 4
.byte 2, 125, 4
.byte 3, 31, 4
.byte 2, 125, 4
.byte 3, 31, 4
.byte 0, 0, 8
.byte 2, 125, 4
.byte 3, 31, 4
.byte 2, 125, 4
.byte 3, 31, 4
.byte 2, 125, 4
.byte 3, 31, 4
.byte 0, 0, 2
.byte -1
byte_06694: .byte 0, 0, 1
.byte 2, 125, 1
.byte 0, 0, 1
.byte 2, 125, 1
byte_066a0: .byte 0, 0, 2
.byte 2, 125, 1
.byte 0, 0, 1
.byte -1
byte_066aa: .byte 0, 0, 2
.byte 2, 125, 2
.byte 3, 31, 2
.byte 0, 0, 2
.byte -1
byte_066b7: .byte 0, 0, 1
.byte 2, 88, 1
.byte 2, 111, 1
.byte 0, 0, 1
.byte -1
byte_066c4: .byte 0, 0, 1
.byte 2, 88, 2
.byte 0, 0, 1
.byte -1
byte_066ce: .byte 0, 0, 2
.byte 2, 88, 1
.byte 0, 0, 1
.byte 2, 88, 1
.byte 0, 0, 2
byte_066dd: .byte 0, 0, 1
.byte 2, 88, 1
.byte 0, 0, 1
.byte 2, 88, 1
.byte 0, 0, 1
.byte 2, 88, 1
.byte 0, 0, 2
.byte -1
byte_066f3: .byte 0, 0, 2
.byte 3, 22, 1
.byte -1
byte_066fa: .byte 0, 0, 1
.byte 3, 31, 1
byte_06700: .byte 0, 0, 1
.byte 3, 31, 1
byte_06706: .byte 0, 0, 1
.byte 3, 31, 1
.byte 0, 0, 1
.byte -1
byte_06710: .byte 2, 88, 32
.byte -1
.byte -1
byte_06715: .byte 0, 0, 1
.byte 2, 125, 1
.byte -1
byte_0671c: .byte 2, 88, 240
.byte -1
byte_06720: .byte 0, 0, 1
.byte 2, 125, 1
.byte -1
byte_06727: .byte 0, 0, 1
.byte 2, 88, 1
.byte 2, 111, 1
.byte 0, 0, 1
.byte -1
byte_06734: .byte 0, 0, 1
.byte 3, 31, 1
.byte 0, 0, 1
.byte -1
.align 1, -1
loc_0673e: not r0h
not r0l
mov r0, @word_ffe99a
rts
mov @word_ffe99a, r0
not r0h
not r0l
rts
loc_06756: not r0h
not r0l
mov r0, @word_ffe99c
rts
sub_06762: mov @word_ffe99c, r0
not r0h
not r0l
rts
sub_0676e: bset #4, @byte_ffff16:8
rts
sub_06774: bset #5, @byte_ffff16:8
bset #6, @byte_ffff16:8
mov @word_ffe996, r0h
bne rts_06790
mov @word_ffe998, r0h
bne rts_06790
jsr sub_01fe2
rts_06790: rts
sub_06792: bclr #4, @byte_ffff16:8
rts
sub_06798: bclr #5, @byte_ffff16:8
bclr #6, @byte_ffff16:8
jsr sub_01fe8
rts
mov #0, r0h
bld #6, @byte_ffff16:8
bst #0, r0h
rts
sub_067b0: mov #task09o, r0h
mov #1003, r1
jsr schedBackTaskDelayed
mov #0, r0h
mov r0h, @word_ffe9b9
bset #0, r0h
mov r0h, @word_ffe9b8
bset #6, @byte_ffff17
mov #0xffff, r0
jsr setP2_567
rts
sub_067dc: mov #0x30, r1
set i
mov @word_ffe9b8, r0
and r1h, r0l
and r1l, r0h
mov r0, @word_ffe9b8
clr i
zero r0
mov #long_ffe9a8, er1
loc_067fc: cmp #4, r0h
beq loc_06806
cmp #5, r0h
beq loc_06806
mov r0h, @er1
loc_06806: adds #1, er1
inc r0l
cmp #8, r0l
blo loc_067fc
bclr #6, @byte_ffff17
rts
task09: mov #task09o, r0h
jsr checkSchedTask
bcc loc_06862
bclr #6, @byte_ffff17:8
bclr #5, @byte_ffff17:8
mov #0, r0h
mov #long_ffe9a8, er2
loc_06830: mov @er2, r1
btst #7, r1h
beq loc_06850
bset #5, @byte_ffff17:8
push er0
push er2
jsr sub_0687e
pop er2
pop er0
mov r1, @er2
loc_06850: adds #2, er2
inc r0h
cmp #8, r0h
bne loc_06830
mov #task09o, r0h
mov #50, r1
jsr schedBackTaskDelayed
loc_06862: btst #6, @byte_ffff17:8
bne loc_06872
mov @word_ffe9b8, r0
jsr setP2_567
loc_06872: mov #task09o, r0h
jsr schedFrontTask
bld #5, @byte_ffff17:8
rts
sub_0687e: dec r1l
beq loc_06884
bpl rts_068c4
loc_06884: zero er2
mov r1h, r2l
shlr #2, r2l
and #0x1c, r2l
add #off_068c6, er2
mov @er2, er2
zero er3
mov r1h, r3l
and #0x0f, r3l
add er2, er3
mov @er3, r1l
btst #7, r1l
beq loc_068ac
and #0xf0, r1h
mov @er2, r1l
loc_068ac: btst #0, r1h
bne loc_068ba
bset r0h, @word_ffe9b8
bra loc_068c2
loc_068ba: bclr r0h, @word_ffe9b8
loc_068c2: inc r1h
rts_068c4: rts
off_068c6: .long byte_068d6, byte_068d9
.long byte_068dc, byte_068df
byte_068d6: .byte 0x05, 0x05, 0x80
byte_068d9: .byte 0x26, 0x02, 0x80
byte_068dc: .byte 0x4e, 0x02, 0x80
byte_068df: .byte 0x02, 0x4e, 0x80
sub_068e2: set c
bra loc_068e8
sub_068e6: clr c
loc_068e8: stc ccr, r0l
cmp #0x0f, r0h
bhi rts_06922
push er0
bsr sub_06924
pop er0
zero er1
mov r0h, r1l
shlr #2, r1l
shlr r1l
add #word_ffe9b8, er1
and #7, r0h
ldc r0l, ccr
bcs loc_06914
bclr r0h, @er1
bra loc_06918
loc_06914: bset r0h, @er1
loc_06918: mov @word_ffe9b8, r0
jsr setP2_567
rts_06922: rts
sub_06924: cmp #8, r0h
bhi rts_0693a
zero er1
mov r0h, r1l
shll r1l
add #long_ffe9a8, er1
zero r2
mov r2, @er1
rts_0693a: rts
sub_0693c: mov #0x8000, r1
loc_06940: cmp #8, r0h
bhi rts_06954
zero er2
mov r0h, r2l
shll r2l
add #long_ffe9a8, er2
mov r1, @er2
rts_06954: rts
loc_06956: mov #0x9000, r1
bra loc_06940
mov #0xa000, r1
bra loc_06940
mov #0xb000, r1
bra loc_06940
sub_06968: bld #0, r0h
bst #0, @word_ffe9b9
bld #1, r0h
bst #2, @word_ffe9b9
bld #2, r0h
bst #1, @word_ffe9b9
mov #task09o, r0h
jsr schedBackTask
rts
task10: mov @word_ffe9ba, r0
jsr cmpTick
mov #1000, r1
cmp r1, r0
blo loc_069fe
push er0
sub r1, r0
mov @tick, r1
sub r0, r1
mov r1, @word_ffe9ba
mov @word_ffe9be, r0
inc #1, r0
mov r0, @word_ffe9be
btst #7, @byte_ffff19:8
beq loc_069e8
mov @internalDateL, r0
inc #1, r0
mov r0, @internalDateL
mov r0, r1
bne loc_069e8
mov @internalDateH, r0
inc #1, r0
mov r0, @internalDateH
loc_069e8: pop er0
mov #2000, r1
sub r0, r1
mov #task10o, r0h
jsr schedBackTaskDelayed
mov #task10o, r0h
jsr schedFrontTask
loc_069fe: clr c
rts
jSetupTMR_XY: jsr setupTMR_XY
enableTMR_01XY: b clr mstpcrh.mstp12 ; TMR_0, TMR_1 (Module Stop Control Register H)
b clr mstpcrh.mstp8 ; TMR_X, TMR_Y (Module Stop Control Register H)
mov @tick, r0
mov r0, @word_ffe9ba
rts
sub_06a1c: mov #0, r0h
set i
b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
mov r0h, @tcr_y:8 ; TMR_Y Timer Control Register
mov r0h, @tcsr_y:8 ; TMR_Y Timer Control/Status Registers
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
clr i
rts
sub_06a38: jsr setupTMR_XY
rts
sub_06a3e: mov #0, r0h
set i
b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
mov r0h, @tcr_y:8 ; TMR_Y Timer Control Register
mov r0h, @tcsr_y:8 ; TMR_Y Timer Control/Status Registers
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
clr i
rts
setupTMR_XY: mov #0xfa, r0h
mov #9, r0l
bset #6, r0l
mov #0, r1h
set i
b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
mov r0h, @tcora_y:8 ; TMR_Y Time Constant Register A
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
clr i
set i
b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
mov r1h, @tcnt_y:8 ; TMR_Y Timer Counter
b clr tcsr_y.cmfa ; Compare-Match Flag A (TMR_Y Timer Control/Status Registers)
mov r0l, @tcr_y:8 ; TMR_Y Timer Control Register
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
clr i
rts
; TMR_Y Compare Match A
cmiay: b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
b clr tcr_y.cmiea ; Compare-Match Interrupt Enable A (TMR_Y Timer Control Register)
b clr tcsr_y.cmfa ; Compare-Match Flag A (TMR_Y Timer Control/Status Registers)
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
clr i
push er0
mov @word_ffe9bc, r0
inc #1, r0
mov r0, @word_ffe9bc
pop er0
set i
b ld syscr.hie ; XBR Host Interface Enable (System Control Register)
b clr syscr.hie ; XBR Host Interface Enable (System Control Register)
b set tconrs.tmrx_y ; TMR_X/TMR_Y Access Select (Timer Connection Register S)
b set tcr_y.cmiea ; Compare-Match Interrupt Enable A (TMR_Y Timer Control Register)
b st syscr.hie ; XBR Host Interface Enable (System Control Register)
rte
; r0 yr, r1h month, r1l day, r2h 24hr, r2l min, r3h sec
setDate: push er0
jsr ckValidDate
bcc valid
jmp invalid
valid: mov #1980, r4
sub r4, r0
mov r0l, r0h
beq 0f
dec r0l
shlr r0l
shlr r0l
inc r0l
0: mov #0x78, r4h
cmp r4h, r0h
bls loc_06b06
dec r0l
loc_06b06: mov #0x6d, r4l
mulxu r0h, r4
add r0h, r4h
add r0l, r4l
addx #0, r4h
dec r1h
mov @sp, er0 ; pop+push er0
jsr isNotLeapYr
bcs loc_06b24
mov #leapYrDays, er5
bra loc_06b2a
loc_06b24: mov #nonLeapYrDays, er5
loc_06b2a: shll r1h
add r1h, r5l
addx #0, r5h
bcc loc_06b34
inc #1, e5
loc_06b34: mov @er5, r0
add r0, r4
dec r1l
add r1l, r4l
addx #0, r4h
mov r2h, r0l
mov #60, r0h
mulxu r0h, r0
add r2l, r0l
addx #0, r0h
push er3
push er0
mov #1440, r0
mov r4, r1
jsr sub_0c4ee
pop er2
add r2, r0
bcc loc_06b64
inc #1, r1
loc_06b64: mov r0, r2
mov r1, r3
mov #6, r4h
loc_06b6a: shll r0l
rotxl r0h
rotxl r1l
rotxl r1h
dec r4h
bne loc_06b6a
shll r2l
rotxl r2h
rotxl r3l
rotxl r3h
shll r2l
rotxl r2h
rotxl r3l
rotxl r3h
sub r2, r0
bcc loc_06b8c
dec #1, r1
loc_06b8c: sub r3, r1
pop er3
add r3h, r0l
addx #0, r0h
addx #0, r1l
addx #0, r1h
mov r0, @internalDateL
mov r1, @internalDateH
bset #7, @byte_ffff19:8
jsr sub_0c83c
clr c
invalid: pop er0
rts
nonLeapYrDays: .word 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365
leapYrDays: .word 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366
daysPerMonth: push er1
push er2
push er3
bsr isNotLeapYr
bcs loc_06c02
mov #leapYrDays, er2
bra loc_06c08
loc_06c02: mov #nonLeapYrDays, er2
loc_06c08: dec r1h
shll r1h
add r1h, r2l
addx #0, r2h
bcc loc_06c14
inc #1, e2
loc_06c14: mov @er2+, r3
mov @er2, r2
sub r3, r2
mov r2l, r0h
pop er3
pop er2
pop er1
rts
; r0 yr, r1h month, r1l day, r2h 24hr, r2l min, r3h sec
ckValidDate: push er4
mov #2108, r4
cmp r4, r0
bhs invalidDate
mov #1980, r4
cmp r4, r0
blo invalidDate
cmp #1, r1h
blo invalidDate
cmp #12, r1h
bhi invalidDate
cmp #1, r1l
blo invalidDate
push er0
jsr daysPerMonth
mov r0h, r4h
pop er0
cmp r4h, r1l
bhi invalidDate
cmp #24, r2h
bhs invalidDate
cmp #60, r2l
bhs invalidDate
cmp #60, r3h
bhs invalidDate
clr c
bra loc_06c6e
invalidDate: set c
loc_06c6e: pop er4
rts
isNotLeapYr: push er0
push er1
push er2
shlr r0h
rotxr r0l
bcs loc_06cb6
shlr r0h
rotxr r0l
bcs loc_06cb6
mov #25, r1h
mov #0, r2h
mov r0h, r2l
beq loc_06c98
divxu r1h, r2
mov r2l, r0h
loc_06c98: mov r0l, r2l
divxu r1h, r2
mov r2l, r0l
cmp #0, r2h
bne loc_06cb2
btst #0, r0l
bne loc_06cae
btst #1, r0l
bne loc_06cae
clr c
bra loc_06cb0
loc_06cae: set c
loc_06cb0: bra loc_06cb4
loc_06cb2: clr c
loc_06cb4: bra loc_06cb8
loc_06cb6: set c
loc_06cb8: pop er2
pop er1
pop er0
rts
sub_06cc6: bild #7, @byte_ffff19:8
bcc loc_06cd0
jmp rts_06db0
loc_06cd0: mov @internalDateL, r2
mov @internalDateH, r3
mov #60, r1
jsr sub_0c49a
push er4
mov r0, r2
mov r1, r3
mov #60, r1
jsr sub_0c49a
push er4
mov r0, r2
mov r1, r3
mov #24, r1
jsr sub_0c49a
push er4
mov r0, r2
mov r1, r3
mov #365, r1
jsr sub_0c49a
cmp #0, r0l
beq loc_06d20
mov #365, r1
add r1, r4
dec r0l
loc_06d20: mov r0l, r0h
beq loc_06d38
dec r0l
shlr r0l
shlr r0l
inc r0l
mov #120, r1h
cmp r1h, r0h
bls loc_06d34
dec r0l
loc_06d34: sub r0l, r4l
subx #0, r4h
loc_06d38: push er0
mov #1980, r1
add r0h, r1l
addx #0, r1h
mov r1, r0
jsr isNotLeapYr
pop er0
bcs loc_06d56
mov #366, r1
bra loc_06d5a
loc_06d56: mov #365, r1
loc_06d5a: cmp r1, r4
blo loc_06d62
inc r0h
sub r1, r4
loc_06d62: mov #1980, r1
add r0h, r1l
addx #0, r1h
mov r1, r0
jsr isNotLeapYr
bcs loc_06d7a
mov #leapYrDays, er1
bra loc_06d80
loc_06d7a: mov #nonLeapYrDays, er1
loc_06d80: mov #0, r2h
loc_06d82: mov @er1+, r3
cmp r3, r4
blo loc_06d8c
inc r2h
bra loc_06d82
loc_06d8c: cmp #1, r2h
beq loc_06d96
mov @(-4,er1), r3
sub r3, r4
loc_06d96: mov r2h, r1h
mov r4l, r1l
inc r1l
pop er2
mov r2l, r2h
pop er3
mov r3l, r2l
pop er3
mov r3l, r3h
clr c
rts_06db0: rts
sub_06db2: jsr sub_06cc6
bcs rts_06dd6
mov #1980, r2
sub r2, r0
shll r0l
shll r1h
shll r1h
shll r1h
shll r1h
shll r1h
bst #0, r0l
mov r0l, r0h
mov r1l, r0l
and #0x1f, r0l
or r1h, r0l
clr c
rts_06dd6: rts
mov r0, r1
beq loc_06de8
shlr r1h
add #0, r1h
and #1, r0h
shll r1h
or r1h, r0h
bra rts_06dec
loc_06de8: mov #0, r0
rts_06dec: rts
long_06dee: .long 0xffffffff, 0x00000000
long_06df6: .long 0xffffdfff, 0x00000000
long_06dfe: .long 0xffffdfff, 0x00000000
task11: mov #task11o, r0h
jsr checkSchedTask
bcc loc_06fc8:16
btst #3, @byte_ffff1a:8
beq loc_06e48
mov @word_ffe9c4, r0
jsr cmpTick
bcc loc_06e46
bclr #3, @byte_ffff1a:8
mov @byte_ffe9c8, er0
jsr sub_10dfa
mov @byte_ffe9c8, er0
mov er0, er1
mov #8, er1
bsr sub_0705a:16
loc_06e46: bra loc_06e58
loc_06e48: jsr sub_0126e
bcc loc_06e58
b ld pb2pin ; Pin PB2/-WUE2/-CS3 (Port B Input Data Register)
bcs loc_06e58
jsr sub_011fe
loc_06e58: btst #2, @byte_ffff1a:8
beq loc_06ea0
mov @word_ffe9c6, r0
jsr cmpTick
bcc loc_06ea0
bclr #2, @byte_ffff1a:8
push er0
stc ccr, r0l
set i
b clr p95dr ; Pin P95/-CS1 (Port 9 Data Register)
mov @P9DDRcopy, r0h
bset #5, r0h
mov r0h, @P9DDRcopy
mov r0h, @p9ddr:8 ; Port 9 Data Direction Register
ldc r0l, ccr
pop er0
btst #5, @byte_ffff1a:8
bne loc_06ea0
mov #0x28, r0h
jsr sub_10cc0
bset #5, @byte_ffff1a:8
loc_06ea0: bclr #7, @byte_ffff1a:8
mov #task11o, r0h
mov #10, r1
jsr schedBackTaskDelayed
mov #0, r0
mov r0, r1
bsr sub_07374:16
mov r1, e0
mov @long_ffe9dc, er2
mov @er2+, er3
and er3, er0
mov @er2+, er3
or er3, er0
zero er3
not er3
zero er6
mov er0, er1
mov #long_ffe9cc, er2
mov #4, r4h
loc_06ee6: mov @er2+, er5
xor er1, er5
or er5, er6
not er5
and er5, er3
dec r4h
bne loc_06ee6
or #0x00 + 0x40 & type1R, er3
mov #long_07598, er2
loc_06f08: mov @er2+, er5
beq loc_06f20
mov er5, er4
and er3, er4
cmp er4, er5
beq loc_06f1e
not er5
and er5, er3
loc_06f1e: bra loc_06f08
loc_06f20: zero er2
mov @byte_ffe4c0, r2l
_mov er0, long_ffe9cc,er2
add #4, r2l
and #0x0c, r2l
mov r2l, @byte_ffe4c0
mov @byte_ffe9c8, er1
mov er1, er2
xor er0, er2
and er3, er2
beq loc_06f82
and er3, er0
not er3
and er3, er1
or er0, er1
mov er1, @byte_ffe9c8
btst #3, @byte_ffff1a:8
bne loc_06f80
mov er2, er1
bsr sub_0705a:16
mov @byte_ffe9c8, er0
jsr sub_10dfa
loc_06f80: bra loc_06f8a
loc_06f82: mov er6, er6
beq loc_06f8a
bset #7, @byte_ffff1a:8
loc_06f8a: btst #4, @byte_ffff1a:8
beq loc_06fa4
btst #0, @byte_ffff1a:8
beq loc_06fa0
jsr sub_045ce
mov #0x33, r0h
jsr sub_10cc0
loc_06fa0: b set tier.icice ; Input Capture Interrupt C Enable (FRT Timer Interrupt Enable Register)
loc_06fa4: bclr #0, @byte_ffff1a:8
btst #1, @byte_ffff1a:8
beq loc_06fb8
mov #0x37, r0h
jsr sub_10cc0
bclr #1, @byte_ffff1a:8
loc_06fb8: btst #7, @byte_ffff1b:8
beq loc_06fc8
mov #0x3b, r0h
jsr sub_10cc0
bclr #7, @byte_ffff1b:8
loc_06fc8: mov #task11o, r0h
jsr schedFrontTask
btst #3, @byte_ffe9cb
beq loc_06fdc
set c
bra rts_06fe0
loc_06fdc: bld #7, @byte_ffff1a:8
rts_06fe0: rts
sub_06fe2: zero er0
mov er0, @byte_ffe9c8
mov er0, @long_ffe9cc
mov er0, @long_ffe9d0
mov er0, @long_ffe9d4
mov er0, @long_ffe9d8
mov r0h, @byte_ffe4c0
mov r0h, @byte_ffff1a:8
mov #task11o, r0h
mov #100, r1
jsr schedBackTaskDelayed
mov @tick, r0
mov #600, r1
add r0, r1
mov r1, @word_ffe9c4
bset #3, @byte_ffff1a:8
mov #long_06dfe, er0
mov er0, @long_ffe9dc
bset #5, @byte_ffff1a:8
rts
sub_0704a: mov #long_06df6, er0
mov er0, @long_ffe9dc
rts
sub_0705a: stm er0-er1, @-sp
mov #off_07418, er2
mov #off_073d8, er4
mov #0x20, r3h
loc_0706c: shlr er1
bcc loc_070be
stm er0-er3, @-sp
push er4
mov @er2, r4
beq loc_0709c
exts er4
add er4, er2
loc_07080: mov @er2+, er4
beq loc_0709c
bld #0, r0l
push er0
push er2
jsr @er4
pop er2
pop er0
bra loc_07080
loc_0709c: pop er4
btst #0, r0l
bne loc_070aa
mov @(1,er4), r0h
bra loc_070ac
loc_070aa: mov @er4, r0h
loc_070ac: beq loc_070ba
push er4
jsr sub_10cc0
pop er4
loc_070ba: ldm @sp+, er0-er3
loc_070be: shlr er0
adds #2, er2
adds #2, er4
dec r3h
bne loc_0706c
ldm @sp+, er0-er1
mov #long_07598, er2
mov #byte_075a0, er3
mov #off_075a2, er4
loc_070de: mov @er2+, er5
beq rts_07126
and er1, er5
beq loc_07120
stm er0-er3, @-sp
push er4
mov @er3, r0h
beq loc_070fa
jsr sub_10cc0
loc_070fa: mov @sp, er4 ; pop+push er4
mov @er4, r5
beq loc_07118
exts er5
add er5, er4
loc_07106: mov @er4+, er5
beq loc_07118
push er4
jsr @er5
pop er4
bra loc_07106
loc_07118: pop er4
ldm @sp+, er0-er3
loc_07120: adds #1, er3
adds #2, er4
bra loc_070de
rts_07126: rts
sub_07128:
bcs loc_0712e
jmp loc_071aa
loc_0712e:
jsr sub_01276
bcc loc_0716c
push er0
stc ccr, r0l
set i
b clr p95dr ; Pin P95/-CS1 (Port 9 Data Register)
mov @P9DDRcopy, r0h
bset #5, r0h
mov r0h, @P9DDRcopy
mov r0h, @p9ddr:8 ; Port 9 Data Direction Register
ldc r0l, ccr
pop er0
jsr sub_01272
bcs loc_071d4
mov #0x28, r0h
jsr sub_10cc0
bclr #2, @byte_ffff1a:8
bset #5, @byte_ffff1a:8
bra rts_071dc
loc_0716c: btst #6, @byte_ffff1a:8
beq loc_0717a
mov #8, r0h
jsr sub_063a0
bra loc_071a8
loc_0717a: bset #2, @byte_ffff1a:8
btst #2, @byte_ffe9cb
bne loc_0718e
mov #0, r1
bra loc_0719a
loc_0718e: mov @delayTabPtr, er1
mov @(6,er1), r1
loc_0719a: mov @tick, r0
add r1, r0
mov r0, @word_ffe9c6
loc_071a8: bra rts_071dc
loc_071aa: push er0
stc ccr, r0l
set i
mov @P9DDRcopy, r0h
bclr #5, r0h
mov r0h, @P9DDRcopy
mov r0h, @p9ddr:8 ; Port 9 Data Direction Register
ldc r0l, ccr
pop er0
btst #5, @byte_ffff1a:8
beq loc_071d4
mov #0x29, r0h
jsr sub_10cc0
loc_071d4: bclr #2, @byte_ffff1a:8
bclr #5, @byte_ffff1a:8
rts_071dc: rts
sub_071de: bcc rts_071f2
btst #2, @byte_ffe9cb
beq rts_071f2
jsr rts_10eee
jsr sub_045ce
rts_071f2: rts
sub_071f4: stc ccr, r0h
push er0
jsr sub_0126e
pop er0
bcc loc_0722e
ldc r0h, ccr
stc ccr, r0h
push er0
jsr sub_148d4
pop er0
ldc r0h, ccr
bcc loc_07224
jsr sub_06416
cmp #1, r0h
bne loc_07224
jsr sub_0633a
loc_07224: mov #6, r0h
jsr sub_063a0
jsr sub_0fe38
loc_0722e: jsr sub_0d8d6
jsr sub_0d862
rts
sub_07238: clr c
rts
stc ccr, r0l
set i
mov @P2DDRcopy, r0h
btst #4, r0h ; p24ddr
beq loc_07256
b ild p24dr ; Pin P24/PW12 (Port 2 Data Register)
bst #0, r0h
ldc r0l, ccr
bld #0, r0h
bra rts_07260
loc_07256: mov @byte_ffe9c8, r0h
ldc r0l, ccr
bld #3, r0h
rts_07260: rts
sub_07262: bclr #6, @byte_ffff1a:8
rts
sub_07268: bset #6, @byte_ffff1a:8
rts
mov #0, r0h
bld #6, @byte_ffff1a:8
bist #0, r0h
rts
sub_07278: bld #6, r0h
jsr rts_02084
and #0x70, r0h
b ld p14dr ; Pin P14/PW4 (Port 1 Data Register)
bst #0, r0h
b ld p15dr ; Pin P15/PW5 (Port 1 Data Register)
bst #1, r0h
bclr #2, r0h
bclr #3, r0h
rts
sub_07292: bsr sub_075ac:16
mov r0l, r0h
rts
sub_0729a: bset #4, @byte_ffff1a:8
rts
sub_072a0: bclr #4, @byte_ffff1a:8
rts
loc_072a6: mov #100, r0h
divxu r0h, r1
mov r1l, r0h
rts
rts_072ae: rts
sub_072b0: mov @delayTabPtr, er1
mov @(6,er1), r1
bra loc_072a6
sub_072be: mov #0, r0h
rts
push er1
zero er1
mov r0h, r1l
shlr #2, r1l
shlr r1l
add #byte_ffe9c8, er1
and #7, r0h
btst r0h, @er1
beq loc_072e2
set c
bra loc_072e4
loc_072e2: clr c
loc_072e4: pop er1
rts
sub_072ea: mov #long_06dee, er0
mov er0, @long_ffe9dc
bclr #7, @byte_ffff1b:8
b set tier.icibe ; Input Capture Interrupt B Enable (FRT Timer Interrupt Enable Register)
bclr #1, @byte_ffff1a:8
rts
sub_07306: bclr #0, @byte_ffff1a:8
mov #long_06dee, er0
mov er0, @long_ffe9dc
rts
sub_0731a: mov @byte_ffe9c8, r0
mov @byte_ffe9ca, r1
stm er0-er1, @-sp
jsr sub_06fe2
ldm @sp+, er0-er1
mov r0, @byte_ffe9c8
mov r1, @byte_ffe9ca
b clr tier.icibe ; Input Capture Interrupt B Enable (FRT Timer Interrupt Enable Register)
bclr #7, @byte_ffff1b:8
bclr #1, @byte_ffff1a:8
b clr tier.icibe ; Input Capture Interrupt B Enable (FRT Timer Interrupt Enable Register)
rts
; FRT Input Capture C
icic: b clr tier.icice ; Input Capture Interrupt C Enable (FRT Timer Interrupt Enable Register)
bset #0, @byte_ffff1a:8
b clr tcsr.icfc ; Input Capture Flag C (FRT Timer Control/Status Register)
rte
; FRT Input Capture B
icib: b clr tcsr.icfb ; Input Capture Flag B (FRT Timer Control/Status Register)
bset #1, @byte_ffff1a:8
rte
btst #5, @byte_ffff1a:8
bne rts_07372
btst #3, @byte_ffff1a:8
rts_07372: rts
sub_07374: b ild p67dr ; Pin P67/-IRQ7/TMOX/-KIN7/CIN7 (Port 6 Data Register)
bst #0, r0l
b ld pc0pin ; Pin PC0 (Port C Input Data Register)
bst #2, r0l
b ild p94dr ; Pin P94/-IOW (Port 9 Data Register)
bst #3, r0l
b ild p65dr ; Pin P65/FTID/-KIN5/CIN5 (Port 6 Data Register)
bst #4, r0l
b ild pd7pin ; Pin PD7 (Port D Input Data Register)
bst #7, r0l
b ild p61dr ; Pin P61/FTOA/-KIN1/CIN1/VSYNCO (Port 6 Data Register)
bst #0, r0h
b ild pc1pin ; Pin PC1 (Port C Input Data Register)
bst #1, r0h
b ld p14dr ; Pin P14/PW4 (Port 1 Data Register)
bst #2, r0h
b ld p15dr ; Pin P15/PW5 (Port 1 Data Register)
bst #3, r0h
b ild p16dr ; Pin P16/PW6 (Port 1 Data Register)
bst #4, r0h
b ld p17dr ; Pin P17/PW7 (Port 1 Data Register)
bst #5, r0h
b ld p93dr ; Pin P93/-IOR (Port 9 Data Register)
bst #7, r0h
b ld pa0pin ; Pin PA0/-KIN8/CIN8 (Port A Input Data Register)
bst #0, r1l
b ld pd4pin ; Pin PD4 (Port D Input Data Register)
bst #6, r1l
b ld p90dr ; Pin P90/-IRQ2/-ADTRG/-ECS2 (Port 9 Data Register)
bst #7, r1l
rts
off_073d8: .word 0x3900, 0, 0x2A2B, 0
.word 0x2627, 0, 0, 0
.word 0x2C2D, 0x5000, 0, 0
.word 0, 0, 0, 0x5253
.word 0, 0, 0, 0
.word 0, 0, 0x5700, 0x3C00
.word 0, 0, 0, 0
.word 0, 0, 0, 0
off_07418: case 0 off_07458
case 2 off_07468 off_07474 off_0747c
case 7 off_07488
case 8 off_07490
case 13 off_07498
case 16 off_074a0
case 32
off_07458: .long sub_071de, sub_07c40, sub_07de2, NULL
off_07468: .long sub_0ec7e, sub_02060, NULL
off_07474: .long sub_07128, NULL
off_0747c: .long sub_071f4, sub_147ec, NULL
off_07488: .long sub_14a38, NULL
off_07490: .long sub_0204e, NULL
off_07498: .long sub_14d84, NULL
off_074a0: .long sub_02090, NULL
sub_074a8: bild #0, @byte_ffe9cb
rts
bild #1, @byte_ffe9cb
rts
sub_074bc: bld #2, @byte_ffe9cb
rts
bild #3, @byte_ffe9cb
rts
sub_074d0: bild #4, @byte_ffe9cb
rts
bild #5, @byte_ffe9cb
rts
bild #6, @byte_ffe9cb
rts
sub_074ee: bild #7, @byte_ffe9cb
rts
sub_074f8: bld #0, @byte_ffe9ca
rts
bild #1, @byte_ffe9ca
rts
bild #2, @byte_ffe9ca
rts
bild #3, @byte_ffe9ca
rts
sub_07520: bild #4, @byte_ffe9ca
rts
sub_0752a: bild #5, @byte_ffe9ca
rts
bild #6, @byte_ffe9ca
rts
bild #7, @byte_ffe9ca
rts
sub_07548:
bld #0, @byte_ffe9c9
rts
bild #1, @byte_ffe9c9
rts
bild #2, @byte_ffe9c9
rts
bild #3, @byte_ffe9c9
rts
bild #4, @byte_ffe9c9
rts
bild #5, @byte_ffe9c9
rts
bild #6, @byte_ffe9c9
rts
bild #7, @byte_ffe9c9
rts
long_07598: .long 0x00000c00 + 0x00003000 & type1R, NULL
byte_075a0: .byte 0x38, 0xff
off_075a2: .word 2
.long sub_1471a, NULL
sub_075ac: mov @byte_ffe9c8, er0
shlr #2, er0
shlr #2, er0
shlr #2, er0
shlr #2, er0
shlr #2, er0
and #0b0011 + 0b1100 & type1R, er0
rts
sub_075c6: jsr setupPB1DDRin
mov #0, r0h
mov r0h, @byte_ffff1c
mov r0h, @byte_ffff1d
mov r0h, @byte_ffe4c2
rts
task12: b ild pb6pin ; Pin PB6/-WUE6 (Port B Input Data Register)
bcc loc_075ea
jsr sub_01216
loc_075ea: clr c
rts
task12_2: mov @byte_ffe4c1, r0h
mov #off_075fe, er1
jmp switch_er1_r0h
off_075fe: case 0 sub_0761a sub_07642 sub_0768a sub_076ca
case 4 sub_0760e sub_07664 sub_076e0 sub_076f8
sub_0760e: mov #40, r1
bra loc_0762a
mov #20, r1
bra loc_0762a
sub_0761a: mov #5, r1
bra loc_0762a
mov #1000, r1
bra loc_0762a
mov #200, r1
loc_0762a: mov #task12o, r0h
jsr schedBackTaskDelayed
mov @byte_ffe4c1, r0h
inc r0h
mov r0h, @byte_ffe4c1
set c
rts
sub_07642: mov #task12o, r0h
jsr checkSchedTask
bcc loc_0765a
mov @byte_ffe4c1, r0h
inc r0h
mov r0h, @byte_ffe4c1
bra loc_07660
loc_0765a: mov #task12o, r0h
jsr schedFrontTask
loc_07660: set c
rts
sub_07664: mov #task12o, r0h
jsr checkSchedTask
bcc loc_07680
jsr loc_03b58
mov @byte_ffe4c1, r0h
inc r0h
mov r0h, @byte_ffe4c1
bra loc_07686
loc_07680: mov #task12o, r0h
jsr schedFrontTask
loc_07686: set c
rts
sub_0768a: btst #6, @byte_ffff1d:8
beq loc_0769e
mov @byte_ffff1c, r0h
beq loc_0769e
bclr #2, r0h
cmp #0, r0h
beq sub_076ca
loc_0769e: btst #6, @byte_ffff1d:8
beq sub_076ca
bclr #6, @byte_ffff1d:8
mov @byte_ffff1c, r0l
bne sub_076ca
mov #0x0a, r0h
mov r0h, @byte_ffe4c2
jsr sub_017c6
mov @byte_ffe4c1, r0h
inc r0h
mov r0h, @byte_ffe4c1
sub_076ca: b ild pb6pin ; Pin PB6/-WUE6 (Port B Input Data Register)
bcs loc_076dc
mov #4, r0h
mov r0h, @byte_ffe4c1
set c
bra rts_076de
loc_076dc: clr c
rts_076de: rts
sub_076e0: b tst pb3pin ; Pin PB3/-WUE3/-CS4 (Port B Input Data Register)
beq loc_076f4
mov @byte_ffe4c1, r0h
inc r0h
mov r0h, @byte_ffe4c1
loc_076f4: set c
rts
sub_076f8: jsr sub_0121e
set c
rts
sub_07700: bset #7, @byte_ffff1d:8
mov #0, r0h
mov r0h, @byte_ffe4c1
mov r0h, @byte_ffe4c2
btst #7, @byte_ffff1c:8
beq loc_07720
jsr sub_078ca
jsr sub_065fe
loc_07720: bclr #6, @byte_ffff1d:8
bra loc_07732
sub_07726: bclr #7, @byte_ffff1d:8
jsr sub_078d6
jsr sub_06616
loc_07732: jsr setupPB1DDRin
rts
rts_07738: rts
sub_0773a: jsr sub_078d6
jsr sub_06616
mov #7, r0h
bra loc_077bc:16
mov #6, r0h
bra loc_077bc
mov #5, r0h
bra loc_077bc
mov #4, r0h
bra loc_077bc
mov #3, r0h
bra loc_077bc
loc_07758: mov #2, r0h
bra loc_077bc
loc_0775c: mov #0, r0h
bra loc_077bc
mov #1, r0h
bra loc_077bc
loc_07764: btst #7, @byte_ffff1d:8
beq loc_07772
jsr sub_078ca
jsr sub_065fe
loc_07772: mov #7, r0h
bra loc_07794
mov #6, r0h
bra loc_07794
mov #5, r0h
bra loc_07794
mov #4, r0h
bra loc_07794
mov #3, r0h
bra loc_07794
loc_07786: bset #2, @byte_ffff1c:8
rts
loc_0778c: mov #0, r0h
bra loc_07794
mov #1, r0h
bra loc_07794
loc_07794: bset r0h, @byte_ffff1c:8
push er0
stc ccr, r0l
set i
b clr p43dr ; Pin P43/TMCI1/HIRQ11/HSYNCI (Port 4 Data Register)
mov @P4DDRcopy, r0h
bset #3, r0h
mov r0h, @P4DDRcopy
mov r0h, @p4ddr:8 ; Port 4 Data Direction Register
ldc r0l, ccr
pop er0
rts
loc_077bc: bclr r0h, @byte_ffff1c:8
stc ccr, r0h
set i
mov @byte_ffff1c, r0l
bne loc_077ea
push er0
stc ccr, r0l
set i
mov @P4DDRcopy, r0h
bclr #3, r0h
mov r0h, @P4DDRcopy
mov r0h, @p4ddr:8 ; Port 4 Data Direction Register
ldc r0l, ccr
pop er0
loc_077ea: ldc r0h, ccr
rts
bild #7, @byte_ffff1c:8
rts
mov @byte_ffe4c2, r0h
rts
sub_077fc: bset #6, @byte_ffff1d:8
rts
sub_07802: mov #0, r0h
mov r0h, @byte_ffff1e
bset #7, @byte_ffff1e
jsr rts_01e8c
rts
task13: btst #5, @byte_ffff1e
beq loc_07858
mov #task13o, r0h
jsr checkSchedTask
bcc loc_0784e
jsr loc_07758
bclr #5, @byte_ffff1e
btst #4, @byte_ffff1e
beq loc_0784c
bclr #4, @byte_ffff1e
jsr rts_01e8c
loc_0784c: bra loc_07854
loc_0784e: mov #task13o, r0h
jsr schedFrontTask
loc_07854: set c
bra rts_07860
loc_07858: mov #task13o, r0h
jsr schedFrontTask
clr c
rts_07860: rts
sub_07862: bclr #6, @byte_ffff1e
set c
bra loc_07870
loc_0786e: clr c
loc_07870: bst #7, @byte_ffff1e
bor #3, @byte_ffff1e
loc_07880: bcs loc_078ac
bclr #4, @byte_ffff1e
jsr sub_01e8e
bcs loc_078aa
jsr rts_01e8c
mov #task13o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
bset #5, @byte_ffff1e
jsr loc_07786
loc_078aa: bra rts_078c4
loc_078ac: btst #5, @byte_ffff1e
bne loc_078bc
jsr rts_01e8c
bra rts_078c4
loc_078bc: bset #4, @byte_ffff1e
rts_078c4: rts
rts_078c6: rts
rts_078c8: rts
sub_078ca: bset #6, @byte_ffff1e
clr c
bra loc_07880
sub_078d6: btst #6, @byte_ffff1e
beq rts_078c4
bclr #6, @byte_ffff1e
bra rts_078c8
sub_078ea: clr c
rts
off_078ee: .long volumeUp ; 1 Volume+
.long volumeDown ; 2 Volume-
.long volumeMute ; 3 Mute
.long brighter ; 4 Brighter
.long dimmer ; 5 Dimmer
.long toggleLight ; 6 ThinkLight
.long enterStandby ; 7 Standby
.long enterHibernation ; 8 Hibernation
num_078ee = (. - off_078ee) / 4
sub_0790e: push er0
jsr sub_074a8
pop er0
bist #2, @byte_ffff1f
bcc loc_07942
btst #7, @byte_ffff20:8
bne loc_07942
btst #6, @byte_ffff20:8
bne loc_07942
push er0
jsr chkIfVolAccKey
pop er0
bcc loc_07942
bra rts_07a2e:16
loc_07942: push er0
jsr getKeyLoc
mov @long_ffe9e0, er1
mov @er1+, r3h
shlr r3h
mov #0, r2h
loc_07958: mov @er1+, r4h
mov @er1+, r4l
cmp r4l, r0h
beq loc_07968
inc r2h
cmp r3h, r2h
blo loc_07958
set c
loc_07968: pop er0
bcs loc_079b2
btst #0, r4h
beq loc_079b0
btst #1, r4h
beq loc_079a2
btst #7, @byte_ffff1f:8
beq loc_079a2
inc r2h
mov r2h, r0h
btst #2, r4h
beq loc_07988
bsr sub_07b56:16
loc_07988:
jsr sub_07fca
bcs loc_0799e
push er0
jsr sub_10ee0
pop er0
bsr sub_07d9a:16
loc_0799e: mov #-1, r0h
bra loc_079b0
loc_079a2: stm er0-er3, @-sp
mov #0x0c, r0h
jsr sub_063a0
ldm @sp+, er0-er3
loc_079b0: bra loc_079ca
loc_079b2: btst #7, @byte_ffff1f:8
beq loc_079ca
btst #4, @byte_ffff1f:8
beq loc_079ca
jsr getKeyLoc
bset #7, r0h
jsr sub_10cc0
mov #-1, r0h
loc_079ca: push er0
btst #7, @byte_ffff20:8
beq loc_079e2
bclr #7, @byte_ffff20:8
jsr sub_07cb6
mov #0x73, r0h
jsr sub_10cc0
loc_079e2: jsr sub_045ce
pop er0
cmp #-1, r0h
beq loc_07a08
btst #5, @byte_ffff20:8
bne loc_07a08
push er0
jsr sub_074a8
bcs loc_07a02
jsr sub_03432
loc_07a02: pop er0
bra loc_07a16
loc_07a08: btst #5, @byte_ffff20:8
bne loc_07a16
mov #0, r0l
mov r0l, @byte_ffe4c5
loc_07a16: btst #3, @byte_ffff1f:8
bne loc_07a1e
mov #-1, r0h
loc_07a1e: cmp #-1, r0h
bne rts_07a2e
push er0
jsr sub_02f18
pop er0
rts_07a2e: rts
sub_07a30: bset #7, @byte_ffff1f:8
rts
sub_07a36: bclr #7, @byte_ffff1f:8
rts
mov #0, r0h
bld #7, @byte_ffff1f:8
bst #0, r0h
rts
sub_07a46: mov @delayTabPtr, er0
mov @(4,er0), r0
mov r0, @word_ffe9e8
jsr sub_034d2
bcs loc_07a6e
mov @fnTabsPtr, er0
mov @(4,er0), er0
bra loc_07a7a
loc_07a6e: mov @fnTabsPtr, er0
mov @er0, er0
loc_07a7a: mov er0, @long_ffe9e0
sub_07a82: mov #0, r0h
mov r0h, @byte_ffe4c5
sub_07a8a: push er0
mov #0, r0h
mov r0h, @byte_ffe4c3
mov r0h, @byte_ffe4c4
pop er0
clr c
rts
task14: mov @byte_ffe4c4, r0h
mov #off_07ab8, er1
jsr switch_er1_r0h
clr c
rts
off_07ab8: case 0 sub_07b4c sub_07ac6 sub_07b02 sub_07b24
case 4 sub_07ade sub_07b02 sub_07b1a
sub_07ac6: mov @delayTabPtr, er1
mov @(0,er1), r1
mov #task14o, r0h
jsr schedBackTaskDelayed
bsr sub_07af0
set c
rts
sub_07ade: mov @delayTabPtr, er1
mov @(2,er1), r1
mov #task14o, r0h
jsr schedBackTaskDelayed
sub_07af0: mov @byte_ffe4c4, r0h
inc r0h
mov r0h, @byte_ffe4c4
set c
rts
sub_07b02: mov #task14o, r0h
jsr checkSchedTask
bcc loc_07b10
bsr sub_07af0
set c
bra rts_07b18
loc_07b10: mov #task14o, r0h
jsr schedFrontTask
clr c
rts_07b18: rts
sub_07b1a: mov #4, r0h
mov r0h, @byte_ffe4c4
bra loc_07b26
sub_07b24: bsr sub_07af0
loc_07b26: mov @byte_ffe4c3, r0h
beq loc_07b40
jsr sub_10ee0
mov @byte_ffe4c3, r0h
bsr sub_07d9a:16
set c
bra rts_07b4a
loc_07b40: mov #0, r0h
mov r0h, @byte_ffe4c4
clr c
rts_07b4a: rts
sub_07b4c: mov #task14o, r0h
jsr schedFrontTask
clr c
rts
sub_07b56: push er0
mov r0h, @byte_ffe4c3
mov #1, r0l
mov r0l, @byte_ffe4c4
mov #task14o, r0h
jsr schedBackTask
pop er0
rts
task15: mov @byte_ffe4c5, r0h
mov #off_07b88, er1
jsr switch_er1_r0h
clr c
rts
off_07b88: case 0 sub_07bcc sub_07b98 sub_07bd6 sub_07bee
case 4 sub_07bcc sub_07bfc sub_07bd6 sub_07c1e
sub_07b98: jsr sub_0332e
bcc loc_07bba
mov @word_ffe9e8, r1
bmi loc_07bb0
mov #task15o, r0h
jsr schedBackTaskDelayed
bsr sub_07c0c
bra loc_07bb8
loc_07bb0: mov #4, r0h
mov r0h, @byte_ffe4c5
loc_07bb8: bra loc_07bc8
loc_07bba: mov @byte_ffe4c5, r0h
add #2, r0h
mov r0h, @byte_ffe4c5
loc_07bc8: set c
rts
sub_07bcc: mov #task15o, r0h
jsr schedFrontTask
clr c
rts
sub_07bd6: mov #task15o, r0h
jsr checkSchedTask
bcc loc_07be4
bsr sub_07c0c
set c
bra rts_07bec
loc_07be4: mov #task15o, r0h
jsr schedFrontTask
clr c
rts_07bec: rts
sub_07bee: bsr sub_07c2c
mov #0, r0h
mov r0h, @byte_ffe4c5
clr c
rts
sub_07bfc: mov @tick, r1 ; redundant
mov #10, r1
mov #task15o, r0h
jsr schedBackTaskDelayed
sub_07c0c: mov @byte_ffe4c5, r0h
inc r0h
mov r0h, @byte_ffe4c5
set c
rts
sub_07c1e: bsr sub_07c36
mov #0, r0h
mov r0h, @byte_ffe4c5
clr c
rts
sub_07c2c: jsr sub_03406
bset #5, @byte_ffff20:8
rts
sub_07c36: jsr sub_0340a
bclr #5, @byte_ffff20:8
rts
sub_07c40: btst #6, @byte_ffff1f
beq rts_07cb4
bcc loc_07c5a
jsr sub_01276
bst #2, @byte_ffff1f
bra rts_07cb4
loc_07c5a: btst #2, @byte_ffff1f
beq loc_07c6e
bclr #2, @byte_ffff1f
bra rts_07cb4
loc_07c6e: btst #6, @byte_ffff20
beq loc_07c84
bclr #6, @byte_ffff20
mov #0x73, r0h
bra loc_07cac
loc_07c84: btst #7, @byte_ffff20
beq loc_07ca2
bset #6, @byte_ffff20
bclr #7, @byte_ffff20
mov #0x72, r0h
bra loc_07cac
loc_07ca2: bset #7, @byte_ffff20
mov #0x70, r0h
loc_07cac: jsr sub_07cb6
jsr sub_10cc0
rts_07cb4: rts
sub_07cb6: bld #7, @byte_ffff20
bst #0, @byte_ffe56d ; 0x0e
bld #6, @byte_ffff20
bst #1, @byte_ffe56d ; 0x0e
rts
sub_07cd8: btst #6, @byte_ffff1f:8
bne rts_07d04
bset #6, @byte_ffff1f:8
bset #5, @byte_ffff1f:8
bra loc_07cf0
sub_07ce8: bclr #6, @byte_ffff1f:8
bclr #5, @byte_ffff1f:8
loc_07cf0: bclr #7, @byte_ffff20
bclr #6, @byte_ffff20
jsr sub_07cb6
rts_07d04: rts
mov #0, r0h
bld #6, @byte_ffff1f:8
bst #0, r0h
rts
cmp #2, r0h
bhi loc_07d26
mov #0x34, r1h
shll r0h
bsr sub_07d46
bst #6, @byte_ffff1f:8
inc r0h
bsr sub_07d46
bst #5, @byte_ffff1f:8
loc_07d26: mov r0l, r0h
cmp #3, r0h
bhi rts_07d44
cmp #0, r0h
beq rts_07d44
dec r0h
mov #0x24, r1h
shll r0h
bsr sub_07d46
bst #7, @byte_ffff20:8
inc r0h
bsr sub_07d46
bst #6, @byte_ffff20:8
rts_07d44: rts
sub_07d46: clr c
btst r0h, r1h
beq rts_07d4e
set c
rts_07d4e: rts
mov #0, r0h
bld #6, @byte_ffff1f:8
bst #0, r0h
btst #5, @byte_ffff1f:8
beq loc_07d60
mov #2, r0h
loc_07d60: mov #0, r0l
bld #7, @byte_ffff20:8
bst #1, r0l
btst #6, @byte_ffff20:8
beq loc_07d70
mov #3, r0l
loc_07d70: cmp #0, r0l
bne rts_07d82
push er0
jsr sub_074a8
pop er0
bist #0, r0l
rts_07d82: rts
bset #4, @byte_ffff1f:8
rts
bclr #4, @byte_ffff1f:8
rts
mov #0, r0h
bld #4, @byte_ffff1f:8
bst #0, r0h
rts
sub_07d9a: stm er0-er3, @-sp
mov @long_ffe9e0, er1
adds #1, er1
zero er2
mov r0h, r2l
dec r2l
shll r2l
add er2, er1
mov @er1, r2l
shlr #2, r2l
shlr #2, r2l
beq loc_07dd0
cmp #num_078ee, r2l
bhi loc_07dd0
dec r2l
shll #2, r2
mov @(off_078ee,er2), er1
jsr @er1
loc_07dd0: ldm @sp+, er0-er3
rts
sub_07dd6: bset #3, @byte_ffff1f:8
rts
sub_07ddc: bclr #3, @byte_ffff1f:8
rts
sub_07de2: stc ccr, r0h
push er0
jsr sub_01276
pop er0
bcs rts_07e30
ldc r0h, ccr
bcc loc_07e0c
btst #4, @byte_ffff20:8
bne loc_07e0a
mov #1, r0h
mov r0h, @byte_ffe4c5
mov #task15o, r0h
jsr schedBackTask
loc_07e0a: bra rts_07e30
loc_07e0c: mov @byte_ffe4c5, r0h
bne loc_07e1a
jsr sub_07c36
bra rts_07e30
loc_07e1a: cmp #5, r0h
bhs rts_07e30
jsr sub_07c2c
mov #5, r0h
mov r0h, @byte_ffe4c5
mov #task15o, r0h
jsr schedBackTask
rts_07e30: rts
sub_07e32: bset #4, @byte_ffff20:8
rts
sub_07e38: bclr #4, @byte_ffff20:8
rts
sub_07e3e: cmp #-1, r0h
bne loc_07e48
mov #-1, r1
bra loc_07e4e
loc_07e48: mov #100, r1
mulxu r0h, r1
loc_07e4e: mov r1, @word_ffe9e8
rts
brighter: mov #1, r0h
jmp dacUp
dimmer: mov #1, r0h
jmp dacDown
volumeUp: mov #0, r0h
jmp dacUp
volumeDown: mov #0, r0h
jmp dacDown
rts
toggleLight: mov #1, r0h
jsr getPINcopy
bcs loc_07e80
jsr lightOn
set c
bra loc_07e86
loc_07e80: jsr lightOff
clr c
loc_07e86: mov #1, r0h
jsr setPINcopy
rts
enterStandby: jsr enterStandby1
rts
enterHibernation:
jsr enterHibernation1
rts
sub_07e9a: cmp #0, r0l
beq loc_07f54:16
cmp #0x80, r0h
beq loc_07eaa
cmp #0x81, r0h
bne loc_07f54:16
loc_07eaa: mov @long_ffe9e0, er2
cmp #RAM & M24, er2
blo loc_07ec6
cmp #0x81, r0h
beq loc_07f20
mov @er2, r3h
shlr r3h
cmp r0l, r3h
bhs loc_07f20
loc_07ec6: stm er0-er1, @-sp
shll r0l
mov #0, r0h
inc #1, r0
jsr malloc
mov er0, er2
ldm @sp+, er0-er1
bcs loc_07f1e
mov @long_ffe9e0, er3
mov @er3+, r4h
shlr r4h
cmp r0l, r4h
bls loc_07eee
mov r0l, r4h
loc_07eee: mov er2, @long_ffe9e0
mov r0l, r4l
shll r4l
mov r4l, @er2
adds #1, er2
mov r4h, r4l
shll r4h
loc_07f02: mov @er3+, r5h
mov r5h, @er2
adds #1, er2
dec r4h
bne loc_07f02
mov r0l, r4h
sub r4l, r4h
beq loc_07f1c
mov #3, r4l
loc_07f14: mov r4l, @er2
adds #2, er2
dec r4h
bne loc_07f14
loc_07f1c: clr c
loc_07f1e: bra loc_07f22
loc_07f20: clr c
loc_07f22: bcs loc_07f52
mov @long_ffe9e0, er2
mov @er2, r3h
shlr r3h
cmp r0l, r3h
bhs loc_07f38
mov r3h, r0l
bra loc_07f3e
loc_07f38: mov r0l, r3h
shll r3h
mov r3h, @er2
loc_07f3e: adds #1, er2
cmp #0x80, r0h
bne loc_07f46
adds #1, er2
loc_07f46: mov @er1+, r0h
mov r0h, @er2
adds #2, er2
dec r0l
bne loc_07f46
clr c
loc_07f52: bra rts_07f56
loc_07f54: set c
rts_07f56: rts
sub_07f58: mov #0, r0
mov r0, @word_ffe9e4
mov r0, @word_ffe9e6
mov #task16o, r0h
jsr schedFrontTask
clr c
rts
task16: btst #3, @byte_ffff20:8
beq loc_07f86
mov #word_ffe9e4, er1
bsr sub_07fb6
bcc loc_07f86
bclr #3, @byte_ffff20:8
loc_07f86: btst #2, @byte_ffff20:8
beq loc_07f9a
mov #word_ffe9e6, er1
bsr sub_07fb6
bcc loc_07f9a
bclr #2, @byte_ffff20:8
loc_07f9a: bld #3, @byte_ffff20
bor #2, @byte_ffff20
bcs loc_07fb2
mov #task16o, r0h
jsr schedFrontTask
loc_07fb2: clr c
rts
sub_07fb6: mov @er1, r0
jsr sub_016e4
rts
sub_07fbe: bclr #3, @byte_ffff20:8
rts
sub_07fc4: bclr #2, @byte_ffff20:8
rts
sub_07fca: push er0
cmp #4, r0h
bne loc_07fe4
btst #3, @byte_ffff20:8
bne loc_07ffa
bset #3, @byte_ffff20:8
mov #word_ffe9e4, er1
bra loc_08006
loc_07fe4: cmp #0x0c, r0h
bne loc_07ffe
btst #2, @byte_ffff20:8
bne loc_07ffa
bset #2, @byte_ffff20:8
mov #word_ffe9e6, er1
bra loc_08006
loc_07ffa: set c
bra loc_08000
loc_07ffe: clr c
loc_08000: pop er0
rts
loc_08006: mov @word_ffe9be, e0
mov #0x3c, r0
add e0, r0
mov r0, @er1
mov #task16o, r0h
jsr schedBackTask
bra loc_07ffe
sub_0801c: mov #0, r0l
mov r0l, @byte_ffe4c6
mov r0l, @byte_ffe4c7
mov r0l, @byte_ffe4c8
bset #3, @byte_ffe4c8
mov r0l, @byte_ffe515
mov #loc_08ab0, er0
mov er0, @long_ffe9fa
mov #sub_08c48, er0
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
mov #0, r0l
mov r0l, @byte_ffe4d3
rts
task17: mov @byte_ffe4d3, r0h
mov #off_08094, er1
jsr switch_er1_r0h
bcs rts_08092
mov #task17o, r0h
jsr schedFrontTask
rts_08092: rts
off_08094: case 0 sub_08178 sub_0823a sub_0817c sub_08406
case 4 sub_0809e
sub_0809e: mov @byte_ffe4d6, r0h
mov #off_080b0, er1
jsr switch_er1_r0h
rts
off_080b0: case 0 sub_080b4 sub_08156
sub_080b4: mov @byte_ffe4d4, r0l
cmp #0, r0l
bne loc_080ce
mov @byte_ffe4d5, r0l
mov r0l, @byte_ffe4d3
bra loc_08152:16
loc_080ce: bclr #5, @byte_ffe594 ; 0x35
bclr #6, @byte_ffe594 ; 0x35
mov #0, r0l
mov r0l, @byte_ffe4c6
mov r0l, @byte_ffe4c7
bld #3, @byte_ffe4c8
mov r0l, @byte_ffe4c8
bst #3, @byte_ffe4c8
mov r0l, @byte_ffe515
mov #loc_08ab0, er0
mov er0, @long_ffe9fa
mov #sub_08c48, er0
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
jsr sub_0a358
jsr sub_0a362
jsr sub_0a390
jsr sub_0a396
mov #1, r0l
mov r0l, @byte_ffe4d6
loc_08152: set c
rts
sub_08156: jsr sub_0a3ec
bne loc_08174
jsr sub_0a352
jsr sub_0a362
jsr sub_0a38a
mov @byte_ffe4d5, r0l
mov r0l, @byte_ffe4d3
loc_08174: set c
rts
sub_08178: clr c
rts
sub_0817c: mov @byte_ffe4d7, r0h
mov #off_0818e, er1
jsr switch_er1_r0h
rts
off_0818e: case 0 sub_08194 sub_08202 sub_08236
sub_08194: jsr sub_0a3ec
bne loc_081fe
jsr sub_0a352
jsr sub_0a362
jsr sub_0a38a
bclr #2, @byte_ffe4c6
bset #3, @byte_ffe4c6
bset #5, @byte_ffe594 ; 0x35
bset #6, @byte_ffe594 ; 0x35
mov #sub_08c48, er0
mov er0, @long_ffe9fa
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
jsr sub_0a5b4
mov #1, r0l
mov r0l, @byte_ffe4d7
loc_081fe: set c
rts
sub_08202: jsr sub_0a5aa
bne loc_08232
mov #2, r0l
mov r0l, @byte_ffe4d7
mov #loc_08ab0, er0
mov er0, @long_ffe9f2
jsr sub_0a372
bclr #4, @byte_ffe4c7
mov #0, r0h
mov r0h, @byte_ffe56a ; 0x0b
loc_08232: set c
rts
sub_08236: clr c
rts
sub_0823a: mov @byte_ffe4d8, r0h
mov #off_0824c, er1
jsr switch_er1_r0h
rts
off_0824c: case 0 sub_08254 sub_082be sub_0834c sub_08402
sub_08254: bclr #3, @byte_ffe4c6
bclr #6, @byte_ffe594 ; 0x35
bclr #0, @byte_ffe4c8
mov #loc_08ab0, er0
mov er0, @long_ffe9fa
mov #sub_08c48, er0
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
mov #1, r0l
mov r0l, @byte_ffe4d8
jsr sub_09dea
jsr sub_0a358
jsr sub_0a368
jsr sub_0a390
jsr loc_0a39c
clr c
rts
sub_082be: bld #3, @byte_ffe4c6
bist #2, @byte_ffe4c6
bst #5, @byte_ffe594 ; 0x35
bst #0, @byte_ffe4c8
bcs loc_082fe
mov #loc_08ab0, er0
mov er0, @long_ffe9fa
mov #sub_08c48, er0
mov er0, @long_ffe9f2
bra loc_0831a
loc_082fe: mov #sub_08c48, er0
mov er0, @long_ffe9fa
mov #loc_08ab0, er0
mov er0, @long_ffe9f2
loc_0831a: mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
bclr #4, @byte_ffe4c7
mov #0, r0h
mov r0h, @byte_ffe56a ; 0x0b
mov #2, r0h
mov r0h, @byte_ffe4d8
clr c
rts
sub_0834c: mov #sub_08c48, er0
mov er0, @long_ffe9f2
mov er0, @long_ffe9fa
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
bclr #2, @byte_ffe4c6
bclr #0, @byte_ffe4c8
bclr #1, @byte_ffe4c8
btst #3, @byte_ffe4c6
bne loc_083be
mov #-1, r0h
jsr sub_09d28
mov #sub_08c8c, er0
mov er0, @long_ffe9fa
mov #sub_08d7e, er0
mov er0, @long_ffe9fe
bra loc_083f6
loc_083be: jsr sub_0a3ec
beq loc_083c8
set c
bra rts_08400
loc_083c8: jsr sub_0a352
jsr sub_0a362
jsr sub_0a38a
mov #-1, r0h
jsr sub_09d3e
mov #sub_08c8c, er0
mov er0, @long_ffe9f2
mov #sub_08d7e, er0
mov er0, @long_ffe9f6
loc_083f6: mov #3, r0h
mov r0h, @byte_ffe4d8
clr c
rts_08400: rts
sub_08402: clr c
rts
sub_08406: mov @byte_ffe4d9, r0h
mov #off_0841a, er1
jsr switch_er1_r0h
set c
rts
off_0841a: case 0 sub_08424 sub_0848a sub_08502 rts_08858
case 4 rts_0885a
sub_08424: mov #3, r0l
mov r0l, @byte_ffe4d0
mov #0, r0h
mov r0h, @byte_ffe4d1
mov r0h, @byte_ffe4d2
mov r0h, @byte_ffe4cf
mov r0h, @byte_ffe4cc
mov r0h, @byte_ffe4ce
mov r0h, @byte_ffe4cb
mov r0h, @byte_ffe4cd
bset #2, @byte_ffe4c6
bclr #0, @byte_ffe4c7
bclr #2, @byte_ffe4c7
bclr #1, @byte_ffe4c7
bclr #5, @byte_ffe594 ; 0x35
mov #1, r0l
mov r0l, @byte_ffe4d9
rts
sub_0848a: mov #2, r0l
mov r0l, @byte_ffe4d9
mov #sub_08ab8, er0
mov er0, @long_ffe9fa
mov #sub_08d28, er0
mov er0, @long_ffe9fe
mov #sub_08b28, er0
mov er0, @long_ffe9f2
mov #sub_08d58, er0
mov er0, @long_ffe9f6
mov #1, r0l
mov r0l, @byte_ffe4e2
mov #task20o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
jsr sub_09dea
jsr sub_0a358
jsr sub_0a368
jsr sub_0a390
jsr loc_0a3a0
bclr #4, @byte_ffe4c7
mov #0, r0h
mov r0h, @byte_ffe56a ; 0x0b
rts
sub_08502: btst #4, @byte_ffe4c6
bne loc_0883e:16
btst #1, @byte_ffe4c7
bne loc_0883e:16
btst #1, @byte_ffe4c6
beq loc_0883e:16
btst #0, @byte_ffe4c6
bne loc_087ec:16
mov @byte_ffe4cc, r0l
cmp #3, r0l
blo loc_085b6
mov #0, er1
loc_08542: shll r1l
mov @(word_ffea06,er1), r0
mov r0, @(word_ffea36,er1)
shlr r1l
inc #1, er1
cmp #3, r1l
blo loc_08542
mov @word_ffea06, r0l
and #7, r0l
mov r0l, @byte_ffe4d1
bset #0, @byte_ffe4c6
mov @byte_ffe4cc, r3l
shll r3l
cmp #6, r3l
bne loc_08582
mov #0, r2l
bra loc_085a8
loc_08582: mov #0, er2
mov #6, er1
loc_0858e: mov @(word_ffea06,er1), r0
mov r0, @(word_ffea06,er2)
inc #2, er2
inc #2, er1
cmp r1l, r3l
bne loc_0858e
shlr r2l
loc_085a8: mov r2l, @byte_ffe4cc
bclr #0, @byte_ffe4cb
loc_085b6: btst #6, @byte_ffe4c6
beq loc_085d0
mov @byte_ffe4ce, r0l
mov @byte_ffe4d0, r2l
cmp r2l, r0l
bhs loc_085f4
loc_085d0: btst #0, @byte_ffe4c6
beq loc_087ec:16
mov @byte_ffe4d2, r0l
mov @word_ffea36, r3l
or r0l, r3l
mov r3l, @word_ffea36
bra loc_087ec:16
loc_085f4: btst #0, @byte_ffe4c6
bne loc_086a6:16
mov #0, er1
loc_08606: shll r1l
mov @(word_ffea1e,er1), r0
mov r0, @(word_ffea36,er1)
shlr r1l
inc #1, er1
cmp r2l, r1l
blo loc_08606
mov @byte_ffe4d1, r0l
mov @word_ffea36, r3l
or r0l, r3l
and #0xf7, r3l
bld #3, @byte_ffe4c8
bst #3, r3l
mov r3l, @word_ffea36
mov @word_ffea1e, r0l
and #7, r0l
mov r0l, @byte_ffe4d2
bset #0, @byte_ffe4c6
loc_08656: mov @byte_ffe4d0, r2l
mov @byte_ffe4ce, r3l
shll r2l
shll r3l
cmp r2l, r3l
bne loc_0866e
mov #0, r4l
bra loc_08694
loc_0866e: extu r2
extu er2
mov #0, er4
mov er2, er1
loc_0867a: mov @(word_ffea1e,er1), r0
mov r0, @(word_ffea1e,er4)
inc #2, er4
inc #2, er1
cmp r1l, r3l
bne loc_0867a
shlr r4l
loc_08694: mov r4l, @byte_ffe4ce
bclr #0, @byte_ffe4cd
bra loc_087ec:16
loc_086a6: mov @word_ffea1e, r0l
and #7, r0l
mov @word_ffea36, r3l
or r0l, r3l
mov r3l, @word_ffea36
bld #4, @word_ffea36
bxor #4, @word_ffea1e
mov #2, er0
mov @(word_ffea36,er0), r1l
mov @(word_ffea1e,er0), r1h
bcc loc_086fc
add r1h, r1l
bcs loc_086f2
bset #4, @word_ffea36
bra loc_0872e
loc_086f2: bclr #4, @word_ffea36
bra loc_0872e
loc_086fc: bld #4, @word_ffea36
bcc loc_0871e
neg r1l
neg r1h
add r1h, r1l
bcs loc_08712
neg r1l
bra loc_0872e
loc_08712: bset #6, @word_ffea36
mov #1, r1l
bra loc_0872e
loc_0871e: add r1h, r1l
bcs loc_08724
bra loc_0872e
loc_08724: bset #6, @word_ffea36
mov #-1, r1l
loc_0872e: mov r1l, @(word_ffea36,er0)
bld #5, @word_ffea36
bxor #5, @word_ffea1e
mov #4, er0
mov @(word_ffea36,er0), r1l
mov @(word_ffea1e,er0), r1h
bcc loc_08776
add r1h, r1l
bcs loc_0876c
bset #5, @word_ffea36
bra loc_087a8
loc_0876c: bclr #5, @word_ffea36
bra loc_087a8
loc_08776: bld #5, @word_ffea36
bcc loc_08798
neg r1l
neg r1h
add r1h, r1l
bcs loc_0878c
neg r1l
bra loc_087a8
loc_0878c: bset #7, @word_ffea36
mov #1, r1l
bra loc_087a8
loc_08798: add r1h, r1l
bcs loc_0879e
bra loc_087a8
loc_0879e: bset #7, @word_ffea36
mov #-1, r1l
loc_087a8: mov r1l, @(word_ffea36,er0)
mov #1, er0
mov @byte_ffe4d0, r2l
shll r2l
inc r2l
loc_087c0: mov @(word_ffea36,er0), r1l
mov @(word_ffea1e,er0), r1h
or r1h, r1l
mov r1l, @(word_ffea36,er0)
inc #2, er0
cmp r2l, r0l
blo loc_087c0
bset #0, @byte_ffe4c6
bra loc_08656:16
loc_087ec: btst #0, @byte_ffe4c6
beq rts_08856
mov @byte_ffe4cf, r1l
shll r1l
extu r1
extu er1
mov @(word_ffea36,er1), r0
push er1
jsr sub_044a0
pop er1
cmp #-1, r0h
beq rts_08856
shlr r1l
inc r1l
mov @byte_ffe4d0, r2l
cmp r2l, r1l
beq loc_0883e
cmp #1, r0h
bne loc_08850
btst #0, @byte_ffe4c7
bne loc_0883e
mov r1l, @byte_ffe4cf
bra loc_087ec
loc_0883e: bclr #0, @byte_ffe4c7
bclr #0, @byte_ffe4c6
mov #0, r1l
loc_08850: mov r1l, @byte_ffe4cf
rts_08856: rts
rts_08858: rts
rts_0885a: rts
rts_0885c: rts
sub_0885e: mov @byte_ffe4d3, r0l
cmp #2, r0l
bne loc_088a4
mov #sub_08c48, er0
mov er0, @long_ffe9fa
mov #loc_08ab0, er0
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
mov #2, r0l
mov r0l, @byte_ffe4d7
bra loc_08922
loc_088a4: cmp #1, r0l
bne loc_088b2
mov #1, r0l
mov r0l, @byte_ffe4d8
bra loc_08922
loc_088b2: cmp #3, r0l
bne loc_08922
mov #0, r0l
mov r0l, @byte_ffe4d1
mov r0l, @byte_ffe4d2
mov r0l, @byte_ffe4cf
mov r0l, @byte_ffe4cc
mov r0l, @byte_ffe4ce
mov r0l, @byte_ffe4cb
mov r0l, @byte_ffe4cd
mov #2, r0l
mov r0l, @byte_ffe4d9
mov #sub_08ab8, er0
mov er0, @long_ffe9fa
mov #sub_08d28, er0
mov er0, @long_ffe9fe
mov #sub_08b28, er0
mov er0, @long_ffe9f2
mov #sub_08d58, er0
mov er0, @long_ffe9f6
loc_08922: mov #task17o, r0h
jsr schedBackTask
bclr #7, @byte_ffe4c6
bclr #6, @byte_ffe4c6
bclr #5, @byte_ffe4c6
bclr #4, @byte_ffe4c6
bclr #1, @byte_ffe4c6
bclr #0, @byte_ffe4c6
bclr #4, @byte_ffe4c7
bclr #3, @byte_ffe4c7
bclr #2, @byte_ffe4c7
bclr #1, @byte_ffe4c7
bclr #0, @byte_ffe4c7
bclr #6, @byte_ffe4c7
bclr #5, @byte_ffe4c7
mov #0, r0l
mov r0l, @byte_ffe515
mov r0l, @byte_ffe4c8
bset #3, @byte_ffe4c8
rts
sub_089a8: mov r0h, @byte_ffe4ca
push er1
push er2
mov @byte_ffe515, r1l
extu r1
extu er1
mov r0h, @(byte_ffe4e5,er1)
inc r1l
cmp #0x30, r1l
bne loc_089d0
mov #0, r1l
loc_089d0: mov r1l, @byte_ffe515
mov @byte_ffe4d3, r1l
cmp #3, r1l
bne loc_08a52
btst #2, @byte_ffe4c7
beq loc_089fa
mov #rts_08f28, er2
bclr #2, @byte_ffe4c7
bra loc_08a42
loc_089fa: btst #2, @byte_ffe4c8
beq loc_08a0c
mov #sub_08f2a, er2
bra loc_08a42
loc_08a0c: mov #off_08e34, er1
loc_08a12: mov @(0,er1), r2l
cmp r0h, r2l
beq loc_08a2a
add #6, er1
cmp #off_08e88, er1
beq loc_08a52
bra loc_08a12
loc_08a2a: mov @byte_ffe4d9, r2l
cmp #3, r2l
bne loc_08a3c
mov @(1,er1), r2l
btst #0, r2l
bne loc_08a52
loc_08a3c: mov @(2,er1), er2
loc_08a42: mov er2, @long_ffe9ea
bset #7, @byte_ffe4c7
loc_08a52: btst #2, @byte_ffe4c6
beq loc_08a68
push er0
jsr sub_09d28
pop er0
loc_08a68: mov @byte_ffe4d3, r1l
cmp #3, r1l
beq loc_08a92
cmp #2, r1l
beq loc_08a8e
cmp #1, r1l
bne loc_08a92
btst #2, @byte_ffe4c8
bne loc_08a92
btst #0, @byte_ffe4c8
beq loc_08a92
loc_08a8e: jsr sub_09d3e
loc_08a92: pop er2
pop er1
rts
sub_08a9c: mov @long_ffe9f2, er1
jmp @er1
sub_08aa6: mov @long_ffe9fa, er1
jmp @er1
loc_08ab0: jmp sub_044a0
clr c
rts
sub_08ab8: btst #4, @byte_ffe4c6
bne loc_08bf0:16
btst #1, @byte_ffe4c7
bne loc_08c66:16
mov @byte_ffe4d9, r3l
cmp #2, r3l
bne loc_08ab0
btst #1, @byte_ffe4c6
beq loc_08ab0
push er1
btst #0, @byte_ffe4cb
bne loc_08b18
mov @byte_ffe4cc, r1l
shll r1l
extu r1
extu er1
mov r0, @(word_ffea06,er1)
shlr r1l
inc r1l
cmp #0x0c, r1l
bist #0, @byte_ffe4cb
mov #0, r0h
bra loc_08b1c
loc_08b18: mov #-1, r0h
bra loc_08b22
loc_08b1c: mov r1l, @byte_ffe4cc
loc_08b22: pop er1
rts
sub_08b28: btst #5, @byte_ffe4c6
bne loc_08c4c:16
btst #3, @byte_ffe4c7
bne loc_08c4c:16
btst #3, @byte_ffe4c6
beq loc_08c4c:16
btst #6, @byte_ffe4c7
bne loc_08c4c:16
mov @byte_ffe4d9, r3l
cmp #2, r3l
bne loc_08c4c:16
push er1
btst #0, @byte_ffe4cd
beq loc_08b84
btst #0, @byte_ffe4c6
bne loc_08baa
mov #0, r1l
mov r1l, @byte_ffe4ce
loc_08b84: mov @byte_ffe4ce, r1l
shll r1l
extu r1
extu er1
mov r0, @(word_ffea1e,er1)
shlr r1l
inc r1l
cmp #0x0c, r1l
bist #0, @byte_ffe4cd
mov #0, r0h
bra loc_08bae
loc_08baa: mov #-1, r0h
bra loc_08bb4
loc_08bae: mov r1l, @byte_ffe4ce
loc_08bb4: pop er1
rts
sub_08bba: push er0
push er1
mov @byte_ffe4ce, r1l
mov #0, r1h
mov @byte_ffe4d0, r0l
divxu r0l, r1
cmp #0, r1h
beq loc_08be6
bclr #0, @byte_ffe4cd
mov #0, r1h
mov r1h, @byte_ffe4ce
loc_08be6: pop er1
pop er0
rts
loc_08bf0: btst #6, r0l
bne loc_08c1a
btst #7, r0l
bne loc_08c1a
cmp #0xfa, r0h
bne loc_08c1a
btst #7, @byte_ffe4c7
beq loc_08c1a
push er0
mov @long_ffe9ea, er0
jsr @er0
pop er0
bra loc_08c2c
loc_08c1a: btst #2, @byte_ffe4c8
beq loc_08c2c
bclr #2, @byte_ffe4c8
loc_08c2c: bclr #7, @byte_ffe4c7
jsr sub_044a0
cmp #-1, r0h
beq rts_08c46
bclr #4, @byte_ffe4c6
mov #0, r0h
rts_08c46: rts
sub_08c48: mov #1, r0h
rts
loc_08c4c: mov #0, r0h
rts
sub_08c50: mov r0, r2
mov @byte_ffe4dc, r0h
mov #off_09222, er1
jsr switch_er1_r0h
mov #0, r0h
rts
loc_08c66: jsr sub_044a0
cmp #-1, r0h
beq rts_08c8a
mov @byte_ffe4e4, r0l
inc r0l
mov @byte_ffe4e3, r0h
cmp r0h, r0l
blo loc_08c88
bclr #1, @byte_ffe4c7
loc_08c88: mov #0, r0h
rts_08c8a: rts
sub_08c8c: btst #1, @byte_ffe4c8
bne loc_08c9a
mov #1, r0h
bra rts_08d10
loc_08c9a: cmp #0xfa, r0h
bne loc_08ce0
bld #3, @byte_ffe4c6
bcs loc_08cc8
bist #2, @byte_ffe4c6
bst #5, @byte_ffe594 ; 0x35
mov #loc_08ab0, er0
mov er0, @long_ffe9fa
bra loc_08cde
loc_08cc8: bst #0, @byte_ffe4c8
mov #loc_08ab0, er0
mov er0, @long_ffe9f2
loc_08cde: bra loc_08cf6
loc_08ce0: mov #sub_08c48, er0
mov er0, @long_ffe9f2
mov er0, @long_ffe9fa
loc_08cf6: mov #2, r0h
mov r0h, @byte_ffe4d8
jsr sub_0a3da
jsr sub_0a358
jsr sub_0a368
jsr sub_0a390
mov #0, r0h
rts_08d10: rts
sub_08d12: mov @long_ffe9f6, er1
jmp @er1
sub_08d1c: mov @long_ffe9fe, er1
jmp @er1
rts_08d26: rts
sub_08d28: stm er0-er1, @-sp
bset #4, @byte_ffe4c6
bclr #1, @byte_ffe4c7
bclr #0, @byte_ffe4cb
mov #0, r1h
mov r1h, @byte_ffe4cc
mov r1h, @byte_ffe4d1
ldm @sp+, er0-er1
rts
sub_08d58: mov #sub_08c50, er1
mov er1, @long_ffe9f2
bclr #0, @byte_ffe4cd
mov #0, r1h
mov r1h, @byte_ffe4ce
mov r1h, @byte_ffe4d2
rts
sub_08d7e: cmp #-1, r0h
bne rts_08da0
bset #1, @byte_ffe4c8
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
rts_08da0: rts
jmp sub_089a8
rts
sub_08da8: btst #3, @byte_ffe4c6
bne rts_08e18
mov @byte_ffe4d3, r0l
cmp #3, r0l
bne loc_08dc6
mov #task20o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
loc_08dc6: set c
bra loc_08dd6
sub_08dca: btst #3, @byte_ffe4c6
beq rts_08e18
clr c
loc_08dd6: bst #3, @byte_ffe4c6
bst #6, @byte_ffe594 ; 0x35
bclr #7, @byte_ffe4c6
bclr #6, @byte_ffe4c6
bclr #5, @byte_ffe4c6
bclr #3, @byte_ffe4c7
mov @byte_ffe4d3, r0l
cmp #1, r0l
bne rts_08e18
mov #task17o, r0h
jsr schedBackTask
bra rts_08e18
rts_08e18: rts
sub_08e1a: push er0
mov @byte_ffe4d3, r0l
cmp #1, r0l
bne loc_08e2e
mov #task17o, r0h
jsr schedBackTask
loc_08e2e: pop er0
rts
off_08e34: .word 65280
.long sub_08e88
.word 62977
.long sub_08e88
.word 62721
.long sub_08eba
.word 62465
.long sub_08ed6
.word 62211
.long sub_08f14
.word 61953
.long sub_08efa
.word 61441
.long sub_08e8e
.word 60929
.long sub_08e92
.word 60416
.long sub_08ea2
.word 59905
.long sub_08eae
.word 59649
.long rts_08f28
.word 59395
.long sub_08f1e
.word 59137
.long rts_08f28
.word 58881
.long rts_08f28
off_08e88:
sub_08e88: bsr sub_08eba
mov #2, r0l
bra loc_08eb2
sub_08e8e: mov #4, r0l
bra loc_08eb2
sub_08e92: mov @byte_ffe4d9, r0l
mov r0l, @byte_ffe4da
mov #3, r0l
bra loc_08eb2
sub_08ea2: mov @byte_ffe4da, r0l
cmp #2, r0l
bne loc_08eb2
bra sub_08e88
sub_08eae: mov #2, r0l
bra loc_08eb2
loc_08eb2: mov r0l, @byte_ffe4d9
rts
sub_08eba: bclr #0, @byte_ffe4c6
bclr #1, @byte_ffe4c6
mov #task20o, r0h
mov #0, r1
jsr schedBackTaskDelayed
rts
sub_08ed6: bset #1, @byte_ffe4c6
bclr #5, @byte_ffe4c6
bclr #3, @byte_ffe4c7
mov #task20o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
rts
sub_08efa: bset #1, @byte_ffe4c7
mov #1, r0l
mov r0l, @byte_ffe4e3
mov #0, r0l
mov r0l, @byte_ffe4e4
rts
sub_08f14: bset #2, @byte_ffe4c7
rts
sub_08f1e: bset #2, @byte_ffe4c7
rts
rts_08f28: rts
sub_08f2a: btst #2, @byte_ffe4c8
beq loc_08f76
mov @byte_ffe4ca, r0h
mov @byte_ffe4c9, r0l
cmp #1, r0l
beq loc_08f4e
cmp #2, r0l
beq loc_08f56
cmp #3, r0l
beq loc_08f5e
bra loc_08f6a
loc_08f4e: cmp #0x47, r0h
bne loc_08f6a
mov #2, r0l
bra loc_08f80
loc_08f56: cmp #0x20, r0h
bne loc_08f6a
mov #3, r0l
bra loc_08f80
loc_08f5e: btst #7, r0h
beq loc_08f6a
bnot #3, @byte_ffe4c8
loc_08f6a: mov #0, r0l
bclr #2, @byte_ffe4c8
bra loc_08f80
loc_08f76: mov #1, r0l
bset #2, @byte_ffe4c8
loc_08f80: mov r0l, @byte_ffe4c9
rts
task18: mov @byte_ffe4db, r0h
beq loc_09030:16
cmp #4, r0h
bgt loc_09030:16
cmp #1, r0h
beq loc_08fa8
mov @byte_ffe4d3, r0l
cmp r0l, r0h
beq loc_090ca:16
loc_08fa8: jsr sub_0a3ec
bne loc_09042:16
jsr sub_0a352
jsr sub_0a362
jsr sub_0a38a
btst #7, @byte_ffe4c6
bne loc_09042
bset #4, @byte_ffe4c7
push er0
mov #sub_08c48, er0
mov er0, @long_ffe9fa
mov er0, @long_ffe9f2
mov #rts_08d26, er0
mov er0, @long_ffe9fe
mov er0, @long_ffe9f6
jsr sub_09e0a
jsr sub_09b0e
mov #0, r0l
mov r0l, @byte_ffe4dc
mov #task19o, r0h
jsr schedFrontTask
mov #0, r0l
mov r0l, @byte_ffe4e2
mov #task20o, r0h
jsr schedFrontTask
pop er0
mov #off_09046, er1
jsr switch_er1_r0h
loc_09030: mov #0, r0h
mov r0h, @byte_ffe4db
mov #task18o, r0h
jsr schedFrontTask
clr c
bra rts_09044
loc_09042: set c
rts_09044: rts
off_09046: case 0 rts_09050 sub_09052 sub_0905e sub_0906a
case 4 sub_090a0
rts_09050: rts
sub_09052: mov #0, r0l
mov r0l, @byte_ffe4d8
mov #1, r0l
bra loc_09076
sub_0905e: mov #0, r0l
mov r0l, @byte_ffe4d7
mov #2, r0l
bra loc_09076
sub_0906a: mov #0, r0l
mov r0l, @byte_ffe4d9
mov #3, r0l
bra loc_09076
loc_09076: mov r0l, @byte_ffe4d5
mov @byte_ffe4d3, r0l
mov r0l, @byte_ffe4d4
mov #4, r0l
mov r0l, @byte_ffe4d3
mov #0, r0l
mov r0l, @byte_ffe4d6
mov #task17o, r0h
jsr schedBackTask
rts
sub_090a0: bclr #5, @byte_ffe594 ; 0x35
bclr #6, @byte_ffe594 ; 0x35
bsr sub_0801c:16
mov #task17o, r0h
jsr schedBackTask
jsr sub_0a358
jsr sub_0a368
jsr sub_0a390
jsr sub_0a396
loc_090ca: bclr #4, @byte_ffe4c7
mov #0, r0h
mov r0h, @byte_ffe56a ; 0x0b
bra loc_09030:16
sub_090de: mov r0h, @byte_ffe4db
beq rts_090ec
mov #task18o, r0h
jsr schedBackTask
rts_090ec: rts
sub_090ee: mov #0, r0l
mov r0l, @byte_ffe4db
mov #task18o, r0h
jsr schedFrontTask
rts
sub_090fe: bra sub_090ee
sub_09100: btst #2, @byte_ffe4c6
beq loc_0910e
jsr sub_09e7e
loc_0910e: jsr sub_09e86
rts
sub_09114: btst #2, @byte_ffe4c6
beq loc_09122
jsr sub_09e6e
loc_09122: jsr sub_09e72
bset #0, @byte_ffe4c7
rts
sub_09130: btst #2, @byte_ffe4c6
beq loc_0913e
jsr sub_09e12
loc_0913e: jsr sub_09e20
rts
btst #2, @byte_ffe4c6
beq loc_09152
jsr sub_09e5e
loc_09152: jsr sub_09e62
rts
btst #2, @byte_ffe4c6
beq loc_09166
jsr sub_09e56
loc_09166: jsr sub_09e5a
rts
sub_0916c: btst #2, @byte_ffe4c6
beq loc_0917a
jsr sub_09e5e
loc_0917a: jsr sub_09e62
rts
sub_09180: btst #2, @byte_ffe4c6
beq loc_0918e
jsr sub_09dea
loc_0918e: jsr sub_09df8
mov @byte_ffe4d3, r0h
cmp #3, r0h
bne rts_091be
btst #6, @byte_ffe4c7
beq rts_091be
jsr sub_0a368
jsr sub_0a358
jsr sub_0a390
jsr sub_0a3f8
bclr #6, @byte_ffe4c7
rts_091be: rts
sub_091c0: jsr sub_09e0a
mov @byte_ffe4d3, r0h
cmp #3, r0h
bne loc_091f8
btst #6, @byte_ffe4c7
bne rts_091fc
bset #6, @byte_ffe4c7
jsr sub_0a3ec
beq loc_091ec
jsr sub_0a3f2
bra rts_091fc
loc_091ec: jsr sub_0a362
jsr sub_0a352
jsr sub_0a38a
loc_091f8: jsr sub_09e0e
rts_091fc: rts
task19: btst #4, @byte_ffe4c7
bne rts_09220
mov @byte_ffe4dc, r0h
mov #off_09222, er1
jsr switch_er1_r0h
mov #task19o, r0h
jsr schedFrontTask
clr c
rts_09220: rts
off_09222: case 0 sub_0922c sub_09236 sub_09268 sub_09296
case 4 sub_092c4
sub_0922c: mov #task19o, r0h
jsr schedFrontTask
clr c
rts
sub_09236: mov #4, r0h
mov r0h, @byte_ffe4e1
mov #byte_ffe4dd, er1
mov er1, @long_ffea02
mov @byte_ffe4dd, r0h
mov #off_09260, er1
stm er0-er1, @-sp
bra loc_092f2:16
off_09260: case 0 sub_092fe sub_0937a sub_09394 sub_093b8
sub_09268: mov #2, r0h
mov r0h, @byte_ffe4e1
mov #byte_ffe4de, er1
mov er1, @long_ffea02
mov @byte_ffe4de, r0h
mov #off_09292, er1
stm er0-er1, @-sp
bra loc_092f2:16
off_09292: case 0 sub_0931a sub_0937a
sub_09296: mov #2, r0h
mov r0h, @byte_ffe4e1
mov #byte_ffe4df, er1
mov er1, @long_ffea02
mov @byte_ffe4df, r0h
mov #off_092c0, er1
stm er0-er1, @-sp
bra loc_092f2:16
off_092c0: case 0 sub_09336 sub_0937a
sub_092c4: mov #2, r0h
mov r0h, @byte_ffe4e1
mov #byte_ffe4e0, er1
mov er1, @long_ffea02
mov @byte_ffe4e0, r0h
mov #off_092ee, er1
stm er0-er1, @-sp
bra loc_092f2:16
off_092ee: case 0 sub_09352 sub_0937a
loc_092f2: ldm @sp+, er0-er1
jsr switch_er1_r0h
clr c
rts
sub_092fe: mov #task19o, r0h
mov #2000, r1
jsr schedBackTaskDelayed
mov #sub_0944e, er0
mov er0, @long_ffe9ee
mov #-1, r0l
bra loc_0936e
sub_0931a: mov #task19o, r0h
mov #500, r1
jsr schedBackTaskDelayed
mov #0, er0
mov er0, @long_ffe9ee
mov #0xf6, r0l
bra loc_0936e
sub_09336: mov #task19o, r0h
mov #500, r1
jsr schedBackTaskDelayed
mov #sub_0944e, er0
mov er0, @long_ffe9ee
mov #0xf5, r0l
bra loc_0936e
sub_09352: mov #task19o, r0h
mov #500, r1
jsr schedBackTaskDelayed
mov #sub_0944a, er0
mov er0, @long_ffe9ee
mov #0xf4, r0l
bra loc_0936e
loc_0936e: mov r0l, r0h
jsr sub_09d3e
bsr sub_09430:16
rts
sub_0937a: push er2
mov #task19o, r0h
jsr checkSchedTask
pop er2
bcs loc_093d2
cmp #0xfa, r2h
bne loc_093dc
bsr sub_09430:16
rts
sub_09394: push er2
mov #task19o, r0h
jsr checkSchedTask
pop er2
bcs loc_093d2
cmp #0xaa, r2h
bne loc_093dc
mov #task19o, r0h
mov #10, r1
jsr schedBackTaskDelayed
bsr sub_09430:16
rts
sub_093b8: push er2
mov #task19o, r0h
jsr checkSchedTask
pop er2
bcs loc_093d2
cmp #0, r2h
bne loc_093dc
bsr sub_09430:16
rts
loc_093d2: bset #5, @byte_ffe4c6
bra loc_093f2
loc_093dc: bset #3, @byte_ffe4c7
bra loc_093f2
loc_093e6: mov @long_ffe9ee, er1
beq loc_093f2
jsr @er1
loc_093f2: jsr sub_0a368
jsr sub_0a358
jsr sub_0a390
bclr #7, @byte_ffe4c6
mov #sub_08b28, er1
mov er1, @long_ffe9f2
mov #0, r0h
mov @long_ffea02, er1
mov r0h, @er1
mov r0h, @byte_ffe4dc
mov #task19o, r0h
jsr schedFrontTask
clr c
rts
sub_09430: mov @long_ffea02, er1
mov @er1, r0h
inc r0h
mov @byte_ffe4e1, r0l
cmp r0h, r0l
beq loc_093e6
mov r0h, @er1
rts
sub_0944a: set c
bra loc_09450
sub_0944e: clr c
loc_09450: bst #6, @byte_ffe4c6
rts
sub_0945a: mov #0, r0h
mov r0h, @byte_ffe4dd
mov r0h, @byte_ffe4de
mov r0h, @byte_ffe4df
mov r0h, @byte_ffe4e0
mov #0, r0l
mov r0l, @byte_ffe4dc
mov #task19o, r0h
jsr schedFrontTask
rts
sub_09484: bra sub_0945a
task20: btst #4, @byte_ffe4c7
bne rts_094b2
mov #task20o, r0h
jsr checkSchedTask
bcc rts_094b2
mov @byte_ffe4e2, r0h
mov #off_094b4, er1
jsr switch_er1_r0h
bcs rts_094b2
mov #task20o, r0h
jsr schedFrontTask
clr c
rts_094b2: rts
off_094b4: case 0 sub_094b8 sub_094bc
sub_094b8: clr c
rts
sub_094bc: mov @byte_ffe4d3, r0l
cmp #3, r0l
bne loc_09548:16
btst #3, @byte_ffe4c6
beq loc_09548
mov @byte_ffe4d9, r0l
cmp #2, r0l
bne loc_09548
btst #7, @byte_ffe4c6
bne loc_09548
btst #5, @byte_ffe4c7
bne loc_09548
btst #6, @byte_ffe4c7
bne loc_09548
btst #1, @byte_ffe4c6
beq loc_09512
btst #6, @byte_ffe4c6
bne loc_09548
mov #4, r0l
bra loc_0951e
loc_09512: btst #6, @byte_ffe4c6
beq loc_09548
mov #3, r0l
loc_0951e: jsr sub_0a3ec
bne loc_09548
bset #7, @byte_ffe4c6
jsr sub_0a362
jsr sub_0a352
jsr sub_0a38a
mov r0l, @byte_ffe4dc
mov #task19o, r0h
jsr schedBackTask
clr c
bra rts_0954a
loc_09548: set c
rts_0954a: rts
sub_0954c: btst #7, @byte_ffe4c6
rts
sub_09556: bset #5, @byte_ffe4c7
rts
sub_09560: bclr #5, @byte_ffe4c7
rts
btst #6, @byte_ffe4c6
rts
sub_09574: mov #0, r0l
mov r0l, @byte_ffe4e2
rts
rts_0957e: rts
sub_09580: b clr mstpcrl.mstp2 ; XBS, KMIMR, KMIMRA, KMPCR (Module Stop Control Register L)
mov #off_09608, er1
mov #off_09614, er2
mov #off_09620, er3
mov #byte_09644, er4
mov #0, r0h
loc_0959e: mov @er1+, er6
mov @er2+, er5
mov @er4+, r0l
mov er5, @(0x0e,er6)
mov er6, @(8,er5)
mov r0h, @(3,er6)
mov r0l, @(4,er6) ; task21o/task22o/task23o
push er4
stm er0-er3, @-sp
mov @er3, er0
bsr sub_09648
bsr sub_0965e:16
ldm @sp+, er0-er3
pop er4
adds #4, er3
inc r0h
cmp #3, r0h
bne loc_0959e
mov #8, r0h
mov r0h, @byte_ffea50
mov r0h, @byte_ffea62
mov #3, r0h
mov r0h, @long_ffea8c+3
mov #0, r0h
mov r0h, @long_ffea80+3
mov r0h, @long_ffea74+3
bsr sub_09df8:16
rts
off_09608: .long byte_ffea3e, byte_ffea50, byte_ffea62
off_09614: .long long_ffea74, long_ffea8c, long_ffea80
off_09620: .long kbcrh_0 & M24 ; PS/2 Keyboard Control Register H Channel 0
.long kbcrh_2 & M24 ; PS/2 Keyboard Control Register H Channel 2
.long kbcrh_1 & M24 ; PS/2 Keyboard Control Register H Channel 1
off_0962c: .long sub_0568e, sub_0a582, sub_0a2fe
off_09638: .long sub_05696, sub_0a57e, sub_0a2fa
byte_09644: .byte task21o
.byte task22o
.byte task23o
.align 1, -1
sub_09648: mov er0, @(4,er5)
loc_0964e: bset #7, @er0
inc #1, er0
bclr #6, @er0
mov #0, r0h
mov r0h, @er5
rts
sub_0965e: bsr sub_09a72:16
mov #0, r0h
mov r0h, @(1,er6)
mov r0h, @(0,er6)
mov #4, r0h
mov r0h, @(2,er6)
jsr sub_07862
rts
sub_09678: b clr kbcrh_0.kbioe ; Keyboard In/Out Enable (PS/2 Keyboard Control Register H Channel 0)
b clr kbcrh_1.kbioe ; Keyboard In/Out Enable (PS/2 Keyboard Control Register H Channel 1)
b clr kbcrh_2.kbioe ; Keyboard In/Out Enable (PS/2 Keyboard Control Register H Channel 2)
rts
sub_0968c: mov #off_09620, er1
mov #off_09614, er2
mov #3, r3h
loc_0969a: mov @er1+, er0
mov @er2+, er5
stm er0-er3, @-sp
bsr loc_0964e
ldm @sp+, er0-er3
dec r3h
bne loc_0969a
mov #off_09608, er1
mov #3, r3h
loc_096b8: mov @er1+, er6
mov @(2,er6), r0h
mov #4, r0l
mov r0l, @(2,er6)
cmp #0, r0h
bne loc_096d2
bld #6, @er6
bist #7, @er6
loc_096d2: dec r3h
bne loc_096b8
rts
sub_096d8: bsr sub_09678
jsr loc_0786e
rts
task21: mov #byte_ffea3e, er6
bra loc_096f6
task22: mov #byte_ffea50, er6
bra loc_096f6
task23: mov #byte_ffea62, er6
loc_096f6: mov @(2,er6), r0h
mov #off_09710, er1
jsr switch_er1_r0h
bcs loc_096f6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr schedFrontTask
rts
off_09710: case 0 sub_09726 sub_097e4 sub_0982a sub_09840
case 4 sub_09858 sub_09956 sub_0998c sub_099e4
case 8 sub_09b2c sub_09bb2 sub_09bb2
sub_09726: btst #6, @er6
bne loc_09732
bsr sub_09a80:16
bcs loc_09742
loc_09732: bclr #6, @er6
mov #1, r0h
mov r0h, @(2,er6)
set c
bra rts_097e2:16
loc_09742: mov @(0x0e,er6), er5
btst #7, @er5
bne loc_0975c
mov @(4,er5), er0
inc #1, er0
mov @er0, r0h
and #0x0f, r0h
beq loc_09792
loc_0975c: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
mov #4, r1
jsr schedBackTaskDelayed
pop er6
mov er6, er3
adds #1, er3
btst #2, @er6
beq loc_09780
bset #2, @er3
bra loc_09784
loc_09780: bclr #2, @er3
loc_09784: bclr #3, @er3
mov #0x0a, r0h
mov r0h, @(2,er6)
set c
bra rts_097e2
loc_09792: btst #2, @er6
bne loc_097e0
mov @(4,er6), r0h ; task21o/task22o/task23o
push er6
jsr checkSchedTask
pop er6
bcc loc_097e0
mov er6, er1
adds #1, er1
bclr #3, @er1
bset #2, @er6
bset #1, @er6
mov @(4,er6), r0h ; task21o/task22o/task23o
cmp #task23o, r0h
bne loc_097d2
bclr #0, @byte_ffea98
bclr #1, @byte_ffea98
loc_097d2: btst #4, @er1
beq loc_097e0
bclr #4, @er1
bclr #6, @er1
loc_097e0: clr c
rts_097e2: rts
sub_097e4: mov @(0x0e,er6), er5
mov @(4,er5), er1
bclr #3, @er1
inc #1, er1
mov #255, r0l
loc_097f8: set i
mov @er1, r0h
and #0x0f, r0h
cmp #9, r0h
bhs loc_0980a
bclr #6, @er1
clr i
bra loc_09810
loc_0980a: clr i
dec r0l
bne loc_097f8
loc_09810: bclr #6, @er1
bclr #7, @er1
bsr sub_0981e
set c
rts
sub_0981e: mov @(2,er6), r0h
inc r0h
mov r0h, @(2,er6)
rts
sub_0982a: mov #4, r0
mov @word_ffe9bc, r1
add r0, r1
mov r1, @(8,er6)
bsr sub_0981e
set c
rts
sub_09840: mov @(8,er6), r0
push er6
jsr sub_016dc
pop er6
bcc loc_09854
bsr sub_0981e
loc_09854: set c
rts
sub_09858: bsr sub_09a80:16
bcs loc_09884
bclr #7, @er6
bsr sub_09ab0:16
mov er6, er3
adds #1, er3
bclr #2, @er3
bclr #3, @er3
bclr #1, @er6
mov #5, r0h
mov r0h, @(2,er6)
bclr #4, @er6
set c
bra rts_098ac
loc_09884: btst #7, @er6
beq loc_098aa
bclr #7, @er6
btst #4, @er6
beq loc_0989a
bsr sub_098d4:16
bra loc_098a6
loc_0989a: bsr sub_09914:16
mov #0, r0h
mov r0h, @(2,er6)
bsr sub_098ae
loc_098a6: set c
bra rts_098ac
loc_098aa: clr c
rts_098ac: rts
sub_098ae: mov er6, er1
adds #1, er1
btst #3, @er1
beq loc_098be
mov #3000, r1
bra loc_098c2
loc_098be: mov #50, r1
loc_098c2: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr schedBackTaskDelayed
pop er6
rts
sub_098d4: mov @(6,er6), r0h
mov @(7,er6), r0l
push er6
bld #3, @er6
bst #5, r0l
mov #off_0962c, er1
zero er2
mov @(3,er6), r2l
shll #2, er2
add er2, er1
mov @er1, er1
jsr @er1
pop er6
cmp #-1, r0h
beq loc_0990a
bclr #4, @er6
loc_0990a: cmp #1, r0h
bne rts_09912
bset #7, @er6
rts_09912: rts
sub_09914: mov @(0x0e,er6), er5
mov @(4,er5), er2
mov er2, er3
inc #1, er3
mov #0, r0h
mov r0h, @er5
bset #7, @er3
bclr #2, @er2
bset #4, @er2
bclr #1, @er2
bset #6, @er3
mov #255, r1h
set i
loc_09940: btst #6, @er2
bne loc_0994a
dec r1h
bne loc_09940
loc_0994a: bset #3, @er2
clr i
bset #5, @er3
rts
sub_09956: bclr #2, @er6
mov @(0x0e,er6), er5
bsr sub_09a8a:16
btst #4, r0l
beq loc_09970
bset #2, @byte_ffea98
loc_09970: mov #0, r0l
mov r0l, @er5
mov r0h, @(1,er5)
mov r0l, @(2,er5)
jsr parity
bist #3, @er5
bsr sub_0981e:16
set c
rts
sub_0998c: mov @(4,er6), r0h ; task21o/task22o/task23o
cmp #task23o, r0h
bne loc_09998
jsr sub_0a232
loc_09998: mov @(0x0e,er6), er5
mov @(4,er5), er1
mov er1, er2
inc #1, er2
set i
bclr #5, @er2
bset #0, @er5
clr i
bclr #4, @er1
set i
bset #6, @er2
bclr #2, @er1
bset #3, @er1
clr i
push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
mov #17, r1
jsr schedBackTaskDelayed
pop er6
bsr sub_0981e:16
set c
rts
sub_099e4: mov @(0x0e,er6), er5
btst #5, @er5
beq loc_09a18
mov @(4,er6), r0h ; task21o/task22o/task23o
cmp #task23o, r0h
bne loc_099fc
jsr sub_0a23c
loc_099fc: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
mov #4, r1
jsr schedBackTaskDelayed
pop er6
bsr sub_0981e:16
set c
bra rts_09a34
loc_09a18: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr checkSchedTask
pop er6
bcc loc_09a32
bsr sub_09a96
bsr sub_09a3c
set c
bra rts_09a34
loc_09a32: clr c
rts_09a34: rts
sub_09a36: mov #0xfe00, r0
bra loc_09a46
sub_09a3c: mov #0xfe40, r0
bra loc_09a46
sub_09a42: mov #0xff40, r0
loc_09a46: bclr #7, @er6
bsr sub_09ac0
btst #4, @er6
beq loc_09a62
mov @(4,er6), r0h ; task21o/task22o/task23o
cmp #task22o, r0h
bne loc_09a5e
jsr sub_08d28
loc_09a5e: bsr sub_098d4:16
loc_09a62: mov #1, r0h
mov r0h, @(2,er6)
mov er6, er0
adds #1, er0
bclr #3, @er0
rts
sub_09a72: mov #0, r0
mov r0, @(0x0a,er6)
mov r0, @(0x0c,er6)
rts
sub_09a80: mov @(0x0a,er6), r0
bild #7, r0h
mov r0l, r0h
rts
sub_09a8a: mov @(0x0a,er6), r0
mov r0, r1
mov r1h, r0l
mov r1l, r0h
rts
sub_09a96: mov @(0x0a,er6), r0
bld #5, r0h
mov @(0x0c,er6), r1
mov r1, @(0x0a,er6)
mov #0, r1
mov r1, @(0x0c,er6)
mov r0l, r0h
rts
sub_09ab0: mov @(0x0a,er6), r0
bset #6, r0h
mov r0h, @(0x0a,er6)
bild #7, r0h
mov r0l, r0h
rts
sub_09ac0: mov er6, er3
adds #1, er3
bset #1, r0l
btst #1, @er6
beq loc_09ae6
btst #6, @er3
beq loc_09ae6
btst #5, @er3
beq loc_09ae4
push er6
jsr sub_04be0
pop er6
loc_09ae4: bra rts_09b0c
loc_09ae6: btst #7, r0l
beq loc_09af4
mov @(2,er6), r1h
cmp #9, r1h
bne loc_09af4
bset #6, r0l
loc_09af4: mov r0h, @(6,er6)
bld #1, @er6
bst #0, r0l
bld #2, @er3
bst #2, r0l
mov r0l, @(7,er6)
bset #4, @er6
rts_09b0c: rts
sub_09b0e: stm er0-er1, @-sp
mov #byte_ffea50, er1
mov #0, r0l
mov r0l, @(6,er1)
mov r0l, @(7,er1)
bclr #4, @er1
ldm @sp+, er0-er1
rts
sub_09b2c: mov @(0x0e,er6), er5
btst #7, @er5
beq loc_09b90
bsr sub_09a96:16
mov er6, er1
adds #1, er1
cmp #-1, r0h
bne loc_09b4a
bset #3, @er1
bra loc_09b4e
loc_09b4a: bclr #3, @er1
loc_09b4e: mov #off_09638, er1
zero er2
mov @(3,er6), r2l
shll #2, er2
add er2, er1
mov @er1, er1
push er6
jsr @er1
pop er6
mov #9, r0h
mov r0h, @(2,er6)
push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
mov #26, r1
jsr schedBackTaskDelayed
pop er6
bsr sub_09914:16
set c
bra rts_09bb0
loc_09b90: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr checkSchedTask
pop er6
bcc loc_09bae
bsr sub_09a96:16
bsr sub_09a3c:16
set c
bra rts_09bb0
loc_09bae: clr c
rts_09bb0: rts
sub_09bb2: bclr #2, @er6
mov @(0x0e,er6), er5
btst #7, @er5
beq loc_09be0
bclr #7, @er6
bsr sub_09c24
bsr sub_09ac0:16
btst #4, @er6
beq loc_09bd6
bsr sub_098d4:16
loc_09bd6: mov #4, r0h
mov r0h, @(2,er6)
set c
bra rts_09c22
loc_09be0: push er6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr checkSchedTask
pop er6
bcc loc_09c20
mov @(2,er6), r0h
cmp #9, r0h
bne loc_09c18
btst #2, @byte_ffea98
beq loc_09c12
bclr #2, @byte_ffea98
bsr sub_09a36:16
bra loc_09c1c
loc_09c12: bsr sub_09a3c:16
bra loc_09c1c
loc_09c18: bsr sub_09a42:16
loc_09c1c: set c
bra rts_09c22
loc_09c20: clr c
rts_09c22: rts
sub_09c24: mov @(0x0e,er6), er5
btst #2, @er5
beq loc_09c36
mov #0x80, r0l
mov #0xff, r0h
bra rts_09c3c
loc_09c36: mov @(1,er5), r0h
mov #0, r0l
rts_09c3c: rts
; PS/2 Keyboard Reception Completion A
kbia: stm er0-er3, @-sp
mov #long_ffea74, er3
bra loc_09c60
; PS/2 Keyboard Reception Completion B
kbib: stm er0-er3, @-sp
mov #long_ffea80, er3
bra loc_09c60
; PS/2 Keyboard Reception Completion C
kbic: stm er0-er3, @-sp
mov #long_ffea8c, er3
loc_09c60: mov @(4,er3), er1
mov er1, er2
inc #1, er2
btst #4, @er1
beq loc_09cb8
cmp #long_ffea80, er3
bne loc_09c80
bset #1, @byte_ffea98
loc_09c80: bclr #3, @er1
bld #1, @er1
bst #2, @er3
mov @(2,er1), r0h
mov r0h, @(1,er3)
bclr #7, @er2
bclr #6, @er2
bclr #4, @er1
bclr #2, @er1
bset #7, @er3
mov @(8,er3), er0
mov @(4,er0), r0h
jsr schedBackTask
bra loc_09d22
loc_09cb8: btst #6, @er1
bne loc_09d1e
mov @(2,er3), r0l
cmp #8, r0l
bhs loc_09cde
bset #5, @er3
bclr #0, @er3
mov @(1,er3), r0h
shlr r0h
bst #5, @er2
mov r0h, @(1,er3)
bra loc_09d18
loc_09cde: cmp #8, r0l
bne loc_09cec
bld #3, @er3
bst #5, @er2
bra loc_09d18
loc_09cec: cmp #9, r0l
bne loc_09cf6
bset #5, @er2
bra loc_09d18
loc_09cf6: bclr #3, @er1
bclr #6, @er2
bset #7, @er3
stm er0-er1, @-sp
mov @(8,er3), er0
mov @(4,er0), r0h
jsr schedBackTask
ldm @sp+, er0-er1
loc_09d18: inc r0l
mov r0l, @(2,er3)
loc_09d1e: bclr #2, @er1
loc_09d22: ldm @sp+, er0-er3
rte
sub_09d28:
mov #0x80, r1l
push er6
mov #byte_ffea50, er6
bra loc_09d60
sub_09d36:
cmp #0xef, r0h
bne sub_09d3e
mov #0x90, r1l
bra loc_09d40
sub_09d3e:
mov #0x80, r1l
loc_09d40: push er6
mov #byte_ffea62, er6
bset #0, @byte_ffea98
bra loc_09d60
sub_09d54:
mov #0x80, r1l
push er6
mov #byte_ffea3e, er6
loc_09d60: mov r0h, r0l
mov r1l, r0h
mov @(0x0a,er6), r1
btst #7, r1h
beq loc_09d76
btst #6, r1h
beq loc_09d76
mov r0, @(0x0c,er6)
bra loc_09d82
loc_09d76: mov r0, @(0x0a,er6)
mov #0, r1
mov r1, @(0x0c,er6)
loc_09d82: mov @(4,er6), r0h ; task21o/task22o/task23o
jsr schedBackTask
pop er6
rts
sub_09d90: mov #byte_ffea3e, er6
bra loc_09da6
mov #byte_ffea50, er6
bra loc_09da6
mov #byte_ffea50, er6
loc_09da6: mov @(2,er6), r0h
cmp #0, r0h
bne loc_09db8
btst #2, @er6
beq loc_09db8
clr c
bra rts_09dba
loc_09db8: set c
rts_09dba: rts
sub_09dbc: mov #0x80, r0h
loc_09dbe: push er6
mov #byte_ffea3e, er6
loc_09dc8: mov @er6, r0l
and #0xc0, r0l
xor r0h, r0l
beq loc_09de4
bld #7, r0h
bst #7, @er6
bld #6, r0h
bst #6, @er6
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr schedBackTask
loc_09de4: pop er6
rts
sub_09dea: mov #0x80, r0h
loc_09dec: push er6
mov #byte_ffea50, er6
bra loc_09dc8
sub_09df8: mov #0x80, r0h
loc_09dfa: push er6
mov #byte_ffea62, er6
bra loc_09dc8
sub_09e06: mov #0x40, r0h
bra loc_09dbe
sub_09e0a: mov #0x40, r0h
bra loc_09dec
sub_09e0e: mov #0x40, r0h
bra loc_09dfa
sub_09e12: mov #0x40, r0h
loc_09e14: push er1
mov #long_ffea51, er1
bra loc_09e2c
sub_09e20: mov #0x40, r0h
loc_09e22: push er1
mov #long_ffea63, er1
loc_09e2c: bld #6, r0h
bst #6, @er1
bld #5, r0h
bst #5, @er1
bld #4, r0h
bst #4, @er1
pop er1
rts
sub_09e44: mov #0x40, r0h
loc_09e46: push er1
mov #long_ffea3f, er1
bra loc_09e2c
sub_09e52: mov #0x60, r0h
bra loc_09e46
sub_09e56: mov #0x60, r0h
bra loc_09e14
sub_09e5a: mov #0x60, r0h
bra loc_09e22
sub_09e5e: mov #0, r0h
bra loc_09e14
sub_09e62: mov #0, r0h
bra loc_09e22
sub_09e66: mov #0, r0h
bra loc_09e46
mov #0x50, r0h
bra loc_09e46
sub_09e6e: mov #0x50, r0h
bra loc_09e14
sub_09e72: mov #0x50, r0h
bra loc_09e22
sub_09e76: mov #byte_ffea3e, er6
bra loc_09e8c
sub_09e7e: mov #byte_ffea50, er6
bra loc_09e8c
sub_09e86: mov #byte_ffea62, er6
loc_09e8c: mov @(0x0e,er6), er3
mov @(4,er3), er3
mov er3, er4
inc #1, er4
bclr #3, @er3
bset #6, @er4
bset #5, @er4
push er6
mov #0, r0
mov #sub_09f06, er1
loc_09eb6: mov er1, er2
add #4, er2
inc r0h
jsr @er1
stm er0-er3, @-sp
jsr delay100
ldm @sp+, er0-er3
mov #0, r0l
loc_09ed0: jsr @er2
bcc loc_09eda
dec r0l
bne loc_09ed0
bra loc_09ee6
loc_09eda: add #0x10, er1
cmp #4, r0h
blo loc_09eb6
mov #0, r0h
loc_09ee6: bset #5, @er4
pop er6
push er0
mov #1, r3h
mov r3h, @(2,er6)
mov @(4,er6), r0h ; task21o/task22o/task23o
jsr schedBackTask
pop er0
rts
sub_09f06: bset #6, @er4
clr c
btst #6, @er3
bne rts_09f14
set c
rts_09f14: rts
bclr #6, @er4
clr c
btst #6, @er3
beq rts_09f24
set c
rts_09f24: rts
bset #5, @er4
clr c
btst #5, @er3
bne rts_09f34
set c
rts_09f34: rts
bclr #5, @er4
clr c
btst #5, @er3
beq rts_09f44
set c
rts_09f44: rts
mov #byte_ffea3e, er1
bra loc_09f5c
mov #byte_ffea50, er1
bra loc_09f5c
sub_09f56: mov #byte_ffea62, er1
loc_09f5c: mov @(0x0e,er1), er1
mov r0h, @(3,er1)
rts
mov #byte_ffea3e, er1
bra loc_09f7e
mov #byte_ffea50, er1
bra loc_09f7e
mov #byte_ffea62, er1
loc_09f7e: mov @(0x0e,er1), er1
mov @(3,er1), r0h
rts
mov #byte_ffea3e, er1
mov #byte_ffea62, er2
bra loc_09fa4
mov #byte_ffea50, er1
mov #byte_ffea62, er2
loc_09fa4: mov @(0x0e,er1), er3
mov @(0x0e,er2), er4
set i
mov er4, @(0x0e,er1)
mov er1, @(8,er4)
mov er3, @(0x0e,er2)
mov er2, @(8,er3)
clr i
mov #1, r0h
mov r0h, @(2,er1)
mov r0h, @(2,er2)
rts
sub_09fd8: push er0
mov #byte_ffea62, er0
btst #2, @er0
beq loc_0a000
btst #0, @byte_ffea98
bne loc_0a000
btst #1, @byte_ffea98
bne loc_0a000
clr c
bra loc_0a002
loc_0a000: set c
loc_0a002: pop er0
rts
sub_0a008: mov #500, r1
mov #task24o, r0h
jsr schedBackTaskDelayed
zero er0
mov r0h, @byte_ffff21:8
mov r0h, @byte_ffff22:8
mov #1, r0h
mov r0h, @byte_ffe517
mov #off_0a342, er0
mov er0, @long_ffea9a
rts
sub_0a032: bclr #0, @byte_ffff21:8
bclr #7, @byte_ffff22:8
bclr #6, @byte_ffff22:8
bclr #5, @byte_ffff22:8
bclr #4, @byte_ffff22:8
bclr #2, @byte_ffff22:8
bclr #1, @byte_ffff22:8
bclr #0, @byte_ffff22:8
mov #500, r1
mov #task24o, r0h
jsr schedBackTaskDelayed
rts
rts_0a05e: rts
task24: btst #2, @byte_ffff22:8
bne loc_0a0dc
btst #1, @byte_ffff22:8
bne loc_0a0a6
mov #task24o, r0h
jsr checkSchedTask
bcc loc_0a0e6
btst #7, @byte_ffff21:8
bne loc_0a09c
btst #1, @byte_ffff21:8
bne loc_0a09c
bset #0, @byte_ffff21:8
mov #0xff, r0h
btst #4, @byte_ffff22:8
bne loc_0a08e
mov #0xf2, r0h
loc_0a08e: jsr sub_09d36
mov #0, r0h
mov r0h, @byte_ffe517
bra loc_0a0dc
loc_0a09c: btst #3, @byte_ffff22:8
bne loc_0a0dc
bset #1, @byte_ffff22:8
loc_0a0a6: jsr sub_0954c
bne loc_0a0f0
jsr sub_09fd8
bcs loc_0a0f0
bclr #1, @byte_ffff22:8
jsr sub_09556
bset #0, @byte_ffff21:8
mov #0xef, r0h
jsr sub_09d36
mov #4, r0h
mov r0h, @byte_ffe517
mov #off_0a342, er0
mov er0, @long_ffea9a
bra loc_0a0e6
loc_0a0dc: mov #task24o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
loc_0a0e6: mov #task24o, r0h
jsr schedFrontTask
clr c
bra rts_0a0f2
loc_0a0f0: set c
rts_0a0f2: rts
off_0a0f4: case 0 sub_0a0fe sub_0a17c sub_0a1c8 sub_0a228
case 4 sub_0a13c
sub_0a0fe: cmp #0xfa, r2h
bne loc_0a116
jsr sub_09df8
btst #4, @byte_ffff22:8
beq loc_0a112
bsr sub_0a1b8:16
bra loc_0a138
loc_0a112: mov #2, r0h
bra loc_0a132
loc_0a116: bclr #0, @byte_ffff21:8
bclr #5, @byte_ffff22:8
btst #6, @byte_ffff22:8
beq loc_0a128
bsr sub_0a410:16
loc_0a128: jsr sub_09560
bclr #4, @byte_ffff22:8
mov #3, r0h
loc_0a132: mov r0h, @byte_ffe517
loc_0a138: clr c
rts
sub_0a13c: cmp #0xfe, r2h
beq loc_0a148
cmp #0xfc, r2h
beq loc_0a148
bra loc_0a26c:16
loc_0a148: mov #3, r0h
mov r0h, @byte_ffe517
jsr sub_08bba
mov #off_0a34a, er0
mov er0, @long_ffea9a
bclr #0, @byte_ffff21:8
bclr #5, @byte_ffff22:8
btst #6, @byte_ffff22:8
beq loc_0a174
bsr sub_0a410:16
loc_0a174: jsr sub_09560
clr c
rts
sub_0a17c: cmp #0xaa, r2h
bne loc_0a192
mov #task24o, r0h
mov #10, r1
jsr schedBackTaskDelayed
jsr sub_09df8
bsr sub_0a1b8
bra loc_0a1b4
loc_0a192: bclr #0, @byte_ffff21:8
bclr #5, @byte_ffff22:8
btst #6, @byte_ffff22:8
beq loc_0a1a4
bsr sub_0a410:16
loc_0a1a4: jsr sub_09560
bclr #4, @byte_ffff22:8
mov #3, r0h
mov r0h, @byte_ffe517
loc_0a1b4: clr c
rts
sub_0a1b8: mov @byte_ffe517, r0h
inc r0h
mov r0h, @byte_ffe517
rts
sub_0a1c8: cmp #0, r2h
bne loc_0a1ce
bsr sub_0a1f4
loc_0a1ce: mov #3, r0h
mov r0h, @byte_ffe517
bclr #0, @byte_ffff21:8
bclr #5, @byte_ffff22:8
btst #6, @byte_ffff22:8
beq loc_0a1e8
bsr sub_0a410:16
loc_0a1e8: jsr sub_09560
bclr #4, @byte_ffff22:8
clr c
rts
sub_0a1f4: bset #7, @byte_ffff21:8
bset #6, @byte_ffff21:8
bset #5, @byte_ffff21:8
bclr #4, @byte_ffff21:8
mov #2, r0h
jsr sub_09f56
mov #off_0a34a, er1
mov er1, @long_ffea9a
jsr sub_08da8
jsr sub_04576
bcs rts_0a226
jsr sub_09df8
rts_0a226: rts
sub_0a228: clr c
rts
sub_0a22c: bset #5, @byte_ffff22:8
rts
sub_0a232: bld #0, @byte_ffff21:8
bst #7, @byte_ffff22:8
rts
sub_0a23c: bld #0, @byte_ffff21:8
bist #7, @byte_ffff22:8
rts
sub_0a246: btst #6, r0l
bne loc_0a24e
btst #7, r0l
beq loc_0a250
loc_0a24e: bra loc_0a26c
loc_0a250: btst #5, @byte_ffff22:8
beq loc_0a268
mov r0, r2
mov @byte_ffe517, r0h
mov #off_0a0f4, er1
jsr switch_er1_r0h
loc_0a268: mov #1, r0h
rts
loc_0a26c: btst #0, @byte_ffff21:8
beq loc_0a282
btst #7, @byte_ffff22:8
bne loc_0a282
btst #5, @byte_ffff22:8
beq loc_0a2f6
bclr #5, @byte_ffff22:8
loc_0a282: btst #7, @byte_ffff21:8
beq loc_0a2ac
mov #0, r0h
jsr sub_09f56
btst #6, @byte_ffff21:8
beq loc_0a2ac
btst #5, @byte_ffff21:8
beq loc_0a2ac
mov #off_0a342, er0
mov er0, @long_ffea9a
jsr sub_08dca
loc_0a2ac: btst #0, @byte_ffff22:8
beq loc_0a2ba
jsr sub_08e1a
bclr #0, @byte_ffff22:8
loc_0a2ba: bclr #1, @byte_ffff22:8
bclr #7, @byte_ffff21:8
bclr #6, @byte_ffff21:8
bclr #5, @byte_ffff21:8
bclr #0, @byte_ffff21:8
bclr #5, @byte_ffff22:8
btst #6, @byte_ffff22:8
beq loc_0a2dc
bsr sub_0a410:16
loc_0a2dc: jsr sub_09560
bclr #4, @byte_ffff22:8
mov #task24o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
mov #3, r0h
mov r0h, @byte_ffe517
loc_0a2f6: mov #1, r0h
rts
sub_0a2fa: mov #4, r2l
bra loc_0a32e
sub_0a2fe: btst #1, @byte_ffff21:8
bne loc_0a32a
btst #6, r0l
beq loc_0a30c
bra loc_0a26c:16
loc_0a30c: btst #7, @byte_ffff21:8
beq loc_0a32a
btst #3, @byte_ffff22:8
bne loc_0a32a
push er0
mov #task24o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
pop er0
loc_0a32a: mov #0, r2l
bra loc_0a32e
loc_0a32e: mov @long_ffea9a, er1
zero e2
mov #0, r2h
add er2, er1
mov @er1, er1
jmp @er1
off_0a342: .long sub_0a246, sub_0a22c
off_0a34a: .long sub_08a9c, sub_08d12
sub_0a352: bset #1, @byte_ffff21:8
rts
sub_0a358: bclr #1, @byte_ffff21:8
bclr #1, @byte_ffff22:8
rts
sub_0a362: bset #3, @byte_ffff22:8
rts
sub_0a368: bclr #3, @byte_ffff22:8
bclr #1, @byte_ffff22:8
rts
sub_0a372: push er1
mov #off_0a34a, er1
mov er1, @long_ffea9a
pop er1
rts
sub_0a38a: bset #2, @byte_ffff22:8
rts
sub_0a390: bclr #2, @byte_ffff22:8
rts
sub_0a396: bset #4, @byte_ffff22:8
bra loc_0a3a0
loc_0a39c: bset #0, @byte_ffff22:8
loc_0a3a0: jsr sub_09556
bset #0, @byte_ffff21:8
mov #0, r0h
mov r0h, @byte_ffe517
mov #off_0a342, er0
mov er0, @long_ffea9a
bclr #7, @byte_ffff21:8
bclr #6, @byte_ffff21:8
bclr #5, @byte_ffff21:8
bclr #4, @byte_ffff21:8
mov #0, r1
mov #task24o, r0h
jsr schedBackTaskDelayed
rts
sub_0a3da: mov #1000, r1
mov #task24o, r0h
jsr schedBackTaskDelayed
mov #task24o, r0h
jsr schedFrontTask
rts
sub_0a3ec: btst #0, @byte_ffff21:8
rts
sub_0a3f2: bset #6, @byte_ffff22:8
rts
sub_0a3f8: push er0
mov #task24o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
pop er0
bclr #6, @byte_ffff22:8
rts
sub_0a410: bsr sub_0a362:16
bsr sub_0a352:16
bsr sub_0a38a:16
jsr sub_09e0e
rts
sub_0a422: mov #0, r0h
mov r0h, @byte_ffff23
mov #off_0a5a2, er0
mov er0, @long_ffea9e
mov #task25o, r0h
jsr schedFrontTask
clr c
rts
sub_0a442: bra sub_0a422
rts_0a444: rts
task25: btst #2, @byte_ffff23
beq loc_0a4ba
mov #task25o, r0h
jsr checkSchedTask
bcc loc_0a4ba
btst #0, @byte_ffff23
beq loc_0a482
mov #off_0a5a2, er0
mov er0, @long_ffea9e
bclr #0, @byte_ffff23
bclr #2, @byte_ffff23
bra loc_0a4ba
loc_0a482: btst #1, @byte_ffff23
bne loc_0a4ba
bset #0, @byte_ffff23
mov #off_0a59a, er0
mov er0, @long_ffea9e
mov #-1, r0h
jsr sub_09d28
mov #0, r0h
mov r0h, @byte_ffe518
mov #task25o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
loc_0a4ba: mov #task25o, r0h
jsr schedFrontTask
clr c
bra rts_0a4c6
set c
rts_0a4c6: rts
off_0a4c8: case 0 sub_0a4d0 sub_0a4e8 sub_0a50a sub_0a540
sub_0a4d0: cmp #0xfa, r2h
bne loc_0a4dc
jsr sub_09dea
bsr sub_0a544
bra loc_0a4e4
loc_0a4dc: mov #3, r0h
mov r0h, @byte_ffe518
loc_0a4e4: clr c
rts
sub_0a4e8: cmp #0xaa, r2h
bne loc_0a4fe
mov #task25o, r0h
mov #10, r1
jsr schedBackTaskDelayed
jsr sub_09dea
bsr sub_0a544
bra loc_0a506
loc_0a4fe: mov #3, r0h
mov r0h, @byte_ffe518
loc_0a506: clr c
rts
sub_0a50a: cmp #0, r2h
bne loc_0a534
mov #off_0a5a2, er0
mov er0, @long_ffea9e
bclr #0, @byte_ffff23
bclr #2, @byte_ffff23
bset #1, @byte_ffff23
loc_0a534: mov #3, r0h
mov r0h, @byte_ffe518
clr c
rts
sub_0a540: clr c
rts
sub_0a544: mov @byte_ffe518, r0h
inc r0h
mov r0h, @byte_ffe518
rts
rts_0a554: rts
sub_0a556: btst #6, r0l
bne loc_0a55e
btst #7, r0l
beq loc_0a568
loc_0a55e: mov #3, r0h
mov r0h, @byte_ffe518
bra loc_0a57a
loc_0a568: mov r0, r2
mov @byte_ffe518, r0h
mov #off_0a4c8, er1
jsr switch_er1_r0h
loc_0a57a: mov #0, r0h
rts
sub_0a57e: mov #4, r2l
bra loc_0a586
sub_0a582: mov #0, r2l
bra loc_0a586
loc_0a586: mov @long_ffea9e, er1
zero e2
mov #0, r2h
add er2, er1
mov @er1, er1
jmp @er1
off_0a59a: .long sub_0a556, rts_0a554
off_0a5a2: .long sub_08aa6, sub_08d1c
sub_0a5aa: btst #0, @byte_ffff23
rts
sub_0a5b4: stm er0-er1, @-sp
bset #2, @byte_ffff23
bclr #1, @byte_ffff23
mov #task25o, r0h
mov #0, r1
jsr schedBackTaskDelayed
ldm @sp+, er0-er1
rts
sub_0a5d8: jsr sub_0a6e6
mov #task26o, r0h
mov #3000, r1
jsr schedBackTaskDelayed
bild #0, @byte_ffe083
bcs loc_0a5f4
jsr sub_11136
loc_0a5f4: bild #1, @byte_ffe083
bcs loc_0a602
jsr sub_1114a
loc_0a602: bild #4, @byte_ffe083
bcs rts_0a610
jsr sub_110fa
rts_0a610: rts
sub_0a612: mov @byte_ffe51a, r0h
cmp #1, r0h
bne loc_0a63e
jsr sub_0ac02
mov @byte_ffe51e, r0h
jsr sub_0c6c8
mov r0, @byte_ffeaa4
mov @byte_ffe51c, r0h
cmp #2, r0h
bhi loc_0a63e
jsr loc_07764
loc_0a63e: bclr #7, @byte_ffff25
btst #0, @byte_ffff26
beq rts_0a668
bclr #0, @byte_ffff26
bset #4, @byte_ffff25
jsr sub_0a6e6
jsr sub_0b296
rts_0a668: rts
rts_0a66a: rts
sub_0a66c: jsr sub_0b50c
rts
task26: mov #task26o, r0h
jsr checkSchedTask
bcc loc_0a688
jsr sub_0a6a4
mov #task26o, r0h
mov #127, r1
jsr schedBackTaskDelayed
loc_0a688: mov #task26o, r0h
jsr schedFrontTask
mov @byte_ffe51e, r0h
bsr sub_0b42e:16
cmp #2, r0h
bne loc_0a6a0
set c
bra rts_0a6a2
loc_0a6a0: clr c
rts_0a6a2: rts
sub_0a6a4: btst #7, @byte_ffff24:8
bne rts_0a6e4
jsr sub_0126e
bcc loc_0a6b6
jsr sub_074d0
bcc loc_0a6b6
loc_0a6b6:
mov #off_0a6f8, er0
mov @byte_ffe519, r1l
mov r1l, @byte_ffe51a
cmp #1, r1l
beq sub_0a6d4
bclr #2, @byte_ffff25
sub_0a6d4: mov #0, r1h
shll #2, r1
add r1, r0
bcc loc_0a6de
inc #1, e0
loc_0a6de: mov @er0, er0
jsr @er0
rts_0a6e4: rts
sub_0a6e6: jsr sub_0a7e4
jsr sub_0ac42
jsr sub_0b1ec
jsr sub_0b292
rts
off_0a6f8: .long sub_0a7c4 ; 0
.long sub_0a7e8 ; 1
.long sub_0ac74 ; 2
.long sub_0b218 ; 3
.long sub_0b264 ; 4
.long sub_0a718 ; 5
.long sub_0a7c4 ; 6
.long sub_0b2a0 ; 7
sub_0a718: mov #0, r0h
mov r0h, @byte_ffe51b
jsr sub_110f0
jsr sub_11118
jsr sub_1112c
btst #4, @byte_ffff25
beq loc_0a76a
btst #5, @byte_ffff25
beq loc_0a748
mov #0, r0h
jsr sub_1110e
bra loc_0a74e
loc_0a748: mov #1, r0h
jsr sub_11122
loc_0a74e: jsr sub_0db7a
bcs loc_0a758
mov #7, r0h
bra loc_0a7ba
loc_0a758: bclr #4, @byte_ffff25
jsr sub_11118
jsr sub_1112c
bra loc_0a792
loc_0a76a: btst #3, @byte_ffff25
beq loc_0a792
bclr #3, @byte_ffff25
jsr sub_074d0
bcs loc_0a792
mov #-1, r0h
jsr sub_0db7a
bcs loc_0a792
mov #7, r0h
jsr sub_110e6
bra loc_0a7ba
loc_0a792: jsr sub_074d0
mov #0, r0l
bist #0, r0l
push er0
mov #-1, r0h
jsr sub_0db7a
pop er0
bist #1, r0l
mov #byte_0a7c0, er1
add r0l, r1l
addx #0, r1h
bcc loc_0a7b8
inc #1, e1
loc_0a7b8: mov @er1, r0h
loc_0a7ba: jsr loc_0b298
rts
byte_0a7c0: .byte 6, 0, 1, 2
sub_0a7c4: mov #-1, r0h
jsr sub_0db7a
bcc loc_0a7d2
jsr sub_074d0
bcc rts_0a7d6
loc_0a7d2: jsr sub_0b296
rts_0a7d6: rts
sub_0a7d8: mov @byte_ffe51b, r1l
jsr sub_0a6d4
rts
sub_0a7e4: jmp loc_0ac6a
sub_0a7e8: jsr sub_074d0
bcc loc_0a7f6
mov #-1, r0h
jsr sub_0db7a
bcc loc_0a800
loc_0a7f6: jsr sub_0ac42
jsr sub_0b296
bra rts_0a816
loc_0a800: jsr sub_0ab50
mov #off_0a818, er0
jsr sub_0a7d8
jsr sub_0ab06
jsr sub_0aaac
rts_0a816: rts
off_0a818: .long sub_0a84c ; 0
.long sub_0a8a8 ; 1
.long sub_0aaa4 ; 2
.long sub_0a9da ; 3
.long sub_0aa54 ; 4
.long sub_0aaa4 ; 5
.long sub_0aa64 ; 6
.long sub_0aa54 ; 7
.long sub_0aaa4 ; 8
.long sub_0aa8a ; 9
.long sub_0aa54 ; 10
.long sub_0aaa4 ; 11
.long sub_0aa84 ; 12
sub_0a84c:
btst #4, @byte_ffff25
beq loc_0a866
mov #0, r0h
btst #5, @byte_ffff25
bne loc_0a864
mov #1, r0h
loc_0a864: bra loc_0a88e
loc_0a866:
btst #6, @byte_ffff24
beq loc_0a874
mov #0, r0h
bra loc_0a88e
loc_0a874: btst #5, @byte_ffff24
beq loc_0a882
mov #1, r0h
bra loc_0a88e
loc_0a882: mov #0, r0h
bld #2, @byte_ffff24
bist #0, r0h
loc_0a88e: bclr #6, @byte_ffff24
bclr #5, @byte_ffff24
mov r0h, @byte_ffe51e
jmp sub_0aeee
sub_0a8a8: mov @byte_ffe51e, r0h
jsr sub_0c38c
push er0
mov @byte_ffe51e, r0h
xor #1, r0h
jsr sub_0c38c
pop er1
cmp #0, r1h
bls loc_0a90e
cmp #0, r0h
bls loc_0a90e
mov @byte_ffe51e, r2h
cmp #1, r2h
bne loc_0a906
btst #2, @byte_ffff25
bne loc_0a902
push er0
push er1
jsr sub_074f8
pop er1
pop er0
bcs loc_0a902
btst #0, @byte_ffff24
beq loc_0a906
loc_0a902: mov #0, r0h
bra loc_0a90c
loc_0a906: mov @byte_ffe51e, r0h
loc_0a90c: bra loc_0a97c
loc_0a90e: cmp #0, r1h
bls loc_0a91a
mov @byte_ffe51e, r0h
bra loc_0a928
loc_0a91a: cmp #0, r0h
bls loc_0a93a
mov @byte_ffe51e, r0h
xor #1, r0h
bra loc_0a928
loc_0a928: cmp #0, r0h
beq loc_0a97c
btst #2, @byte_ffff25
beq loc_0a97c
mov #0, r0h
bra loc_0a97c
loc_0a93a: zero er0
push er0
mov #0, r0h
jsr sub_0db7a
pop er0
bst #0, r0l
push er0
mov #1, r0h
jsr sub_0db7a
pop er0
bst #1, r0l
cmp #0, r0l
bne loc_0a974
push er0
jsr sub_01276
pop er0
bcs loc_0a974
mov #0, r0h
bra loc_0a97c
loc_0a974: mov @(byte_0a9c6,er0), r0h
loc_0a97c:
btst #4, @byte_ffff25
beq loc_0a9a0
mov #0, r0l
bld #5, @byte_ffff25
bist #0, r0l
cmp r0l, r0h
beq loc_0a9a0
bset #6, @byte_ffff25
bra rts_0a9c4
loc_0a9a0: cmp #-1, r0h
beq loc_0a9bc
mov r0h, @byte_ffe51e
jsr sub_0aeaa
jsr sub_0aeee
mov @byte_ffe51e, r0h
bsr sub_0a9ca
bra rts_0a9c4
loc_0a9bc: mov #4, r0h
mov r0h, @byte_ffe51b
rts_0a9c4: rts
byte_0a9c6: .byte -1, 1, 0, -1
sub_0a9ca: jsr sub_0c6c8
mov r0, @byte_ffeaa4
jsr sub_0ac02
rts
sub_0a9da: jsr sub_01272
bcs loc_0a9fc
mov @byte_ffe51a, r0h
cmp #7, r0h
bne loc_0a9f8
jsr sub_0ac42
jsr sub_01ede
jsr sub_0b296
bra rts_0aa52
loc_0a9f8: mov #7, r0h
bra loc_0aa04
loc_0a9fc: jsr sub_0126e
bcs loc_0aa0c
mov #10 - 3 & (level < 0x01000062), r0h
loc_0aa04: mov r0h, @byte_ffe51b
bra rts_0aa52
loc_0aa0c: mov @byte_ffe51e, r0h
cmp #1, r0h
bne loc_0aa2c
btst #2, @byte_ffff25
beq loc_0aa2c
mov #0, r0h
jsr sub_0c38c
cmp #2, r0h
bhi loc_0aa4a
bra rts_0aa52
loc_0aa2c: mov @byte_ffe51e, r0h
jsr sub_0c38c
cmp #0, r0h
bhi rts_0aa52
mov @byte_ffe51e, r0h
xor #1, r0h
jsr sub_0c38c
cmp #2, r0h
bls rts_0aa52
loc_0aa4a: mov #1, r0h
mov r0h, @byte_ffe51b
rts_0aa52: rts
sub_0aa54: jsr sub_0b7ac
mov #-1, r0h
mov r0h, @byte_ffe51e
jmp sub_0aeee
sub_0aa64: jsr sub_07238
bcs rts_0aa82
mov #0, r0h
jsr sub_0c38c
cmp #2, r0h
bhi loc_0aa7e
mov #1, r0h
jsr sub_0c38c
cmp #2, r0h
bls rts_0aa82
loc_0aa7e: jsr sub_0ac42
rts_0aa82: rts
sub_0aa84: jsr sub_0126e
bra loc_0aa8e
sub_0aa8a: jsr sub_01272
loc_0aa8e: bcc loc_0aa96
jsr sub_0ac42
bra rts_0aaa2
loc_0aa96: jsr sub_0abc0
cmp #3, r0h
blo rts_0aaa2
jsr sub_0773a
rts_0aaa2: rts
sub_0aaa4: jsr sub_0b90c
jmp sub_0aeee
sub_0aaac: mov #0, r0h
bsr sub_0aaea
push er0
mov #1, r0h
bsr sub_0aaea
pop er1
mov r0h, r1l
add r1h, r0h
cmp #0, r0h
bgt rts_0aae8
blt loc_0aae4
mov r1, r2
beq rts_0aae8
jsr sub_01276
bcs rts_0aae8
jsr sub_02086
cmp #9, r0h
beq loc_0aae0
cmp #6, r0h
bne rts_0aae8
mov r2h, r1l
mov r2l, r1h
loc_0aae0: cmp r1l, r1h
bge rts_0aae8
loc_0aae4: jsr sub_017a0
rts_0aae8: rts
sub_0aaea: jsr sub_0c76c
bcs loc_0aafc
btst #7, r0h
beq loc_0aaf8
mov #-1, r0h
bra loc_0aafa
loc_0aaf8: mov #1, r0h
loc_0aafa: bra rts_0ab04
loc_0aafc:
jsr sub_0db7a
bcc loc_0aaf8
mov #0, r0h
rts_0ab04: rts
sub_0ab06: mov #-1, r0h
jsr sub_0c3d2
bcs rts_0ab4e
bsr sub_0abc0:16
mov @byte_ffe51c, r1h
cmp r1h, r0h
bhs rts_0ab4e
push er0
cmp #2, r0h
bhi loc_0ab2e
cmp #2, r1h
bls loc_0ab2e
mov #1, r0h
jsr sub_063a0
loc_0ab2e: pop er0
mov r0h, @byte_ffe51c
mov #off_0ac14, er1
shll #2, r0h
add r0h, r1l
addx #0, r1h
bcc loc_0ab48
inc #1, e1
loc_0ab48: mov @er1, er0
jsr @er0
rts_0ab4e: rts
sub_0ab50: mov #1, r0h
jsr sub_0c3d2
bcs loc_0abac
jsr sub_0c8fa
bcs loc_0abac
mov @byte_ffe51e, r0h
cmp #0, r0h
beq loc_0abaa
mov #0, r0h
jsr sub_0c38c
cmp #2, r0h
bhi loc_0abaa
btst #2, @byte_ffff25
bne loc_0ab92
dec #1, r1
mov r1, @word_ffeaaa
mov #1, r0h
jsr sub_063a0
mov #0x4e, r0h
jsr sub_10cc0
bra loc_0abaa
loc_0ab92: mov @word_ffeaaa, r0
cmp r0, r1
bhi loc_0abaa
dec #1, r1
mov r1, @word_ffeaaa
mov #0x4f, r0h
jsr sub_10cc0
loc_0abaa: clr c
loc_0abac: bist #2, @byte_ffff25
rts
sub_0abb6: bld #2, @byte_ffff25
rts
sub_0abc0: mov #0, r0h
jsr sub_0c38c
push er0
mov #1, r0h
jsr sub_0c38c
pop er1
btst #2, @byte_ffff25
beq loc_0abe8
mov @byte_ffe51e, r2l
cmp #0, r2l
beq loc_0abf2
loc_0abe8: btst #0, @byte_ffff24
beq loc_0abf4
loc_0abf2: mov #0, r0h
loc_0abf4: cmp r0h, r1h
bls loc_0abfe
mov r0h, r0l
mov r1h, r0h
bra rts_0ac00
loc_0abfe: mov r1h, r0l
rts_0ac00: rts
sub_0ac02: mov @word_ffe9be, r0
add #0x3c, r0l
addx #0, r0h
mov r0, @word_ffeaa2
rts
off_0ac14: .long sub_0ac2e ; 0
.long sub_0ac2e ; 1
.long sub_0ac36 ; 2
.long sub_0ac3a ; 3
.long rts_0ac2c ; 4
.long rts_0ac2c ; 5
rts_0ac2c: rts
sub_0ac2e: mov #0x22, r0h
jsr sub_10cc0
bra sub_0ac36
sub_0ac36: jmp loc_07764
sub_0ac3a: mov #2, r0h
jsr sub_063a0
rts
sub_0ac42: mov #-1, r0h
mov r0h, @byte_ffe51c
jsr sub_0773a
mov #0, r0
mov r0, @word_ffeaa6
bclr #6, @byte_ffff24
bclr #5, @byte_ffff24
bra loc_0ac6a
loc_0ac6a: mov #0, r0h
mov r0h, @byte_ffe51b
rts
sub_0ac74: jsr sub_074d0
bcs loc_0ac82
mov #-1, r0h
jsr sub_0db7a
bcc loc_0ac8c
loc_0ac82: jsr sub_0b1ec
jsr sub_0b296
bra rts_0acac
loc_0ac8c: btst #3, @byte_ffff24
bne rts_0acac
jsr sub_0b5e4
bcs loc_0aca2
jsr sub_0b1ec
bra rts_0acac
loc_0aca2: mov #off_0acae, er0
jsr sub_0a7d8
rts_0acac: rts
off_0acae: .long sub_0ad06 ; 0
.long sub_0b10e ; 1
.long sub_0ad1c ; 2
.long sub_0aede ; 3
.long sub_0aefe ; 4
.long sub_0ad82 ; 5
.long sub_0aede ; 6
.long sub_0ad9e ; 7
.long sub_0ad56 ; 8
.long sub_0aff0 ; 9
.long sub_0aa54 ; 10
.long sub_0affc ; 11
.long sub_0aebe ; 12
.long sub_0af2c ; 13
.long sub_0b008 ; 14
.long sub_0aede ; 15
.long sub_0aefe ; 16
.long sub_0af0e ; 17
.long sub_0b01a ; 18
.long sub_0aecc ; 19
.long sub_0aefe ; 20
.long sub_0b13c ; 21
sub_0ad06: mov #0, r0h
bld #1, @byte_ffff24
bst #0, r0h
mov r0h, @byte_ffe51e
loc_0ad18: jmp sub_0aeee
sub_0ad1c: mov @byte_ffe51e, r0h
bne loc_0ad30
bld #0, @byte_ffe083
bcs loc_0ad46
bra loc_0ad3a
loc_0ad30: bld #1, @byte_ffe083
bcs loc_0ad46
loc_0ad3a: mov @byte_ffe51e, r0h
jsr sub_0db7a
bcc loc_0ad50
loc_0ad46: mov #8, r0h
mov r0h, @byte_ffe51b
bra rts_0ad54
loc_0ad50: jsr sub_0aeee
rts_0ad54: rts
sub_0ad56: mov @byte_ffe51e, r0h
xor #1, r0h
cmp #1, r0h
bne loc_0ad6e
btst #0, @byte_ffff24
beq loc_0ad6e
mov #0, r0h
loc_0ad6e: mov r0h, @byte_ffe51e
mov #1, r0h
mov r0h, @byte_ffe51b
rts
mov #1, r0h
bra loc_0ad18
sub_0ad82: mov @byte_ffe51e, r0h
jsr sub_0c42c
bcs loc_0ad94
jsr sub_0aeee
bra rts_0ad9c
loc_0ad94: mov #0x0e, r0h
mov r0h, @byte_ffe51b
rts_0ad9c: rts
sub_0ad9e: jsr sub_0b1bc
bcs loc_0ae04
cmp #0, r0h
bne loc_0ae04
mov @byte_ffe51e, r0l
mov #byte_ffe084, er2
extu r0
extu er0
add er0, er2
mov @er2, r1l
add #2, er2
mov @er2, r1h
push er1
mov r0l, r0h
jsr sub_0c460
pop er1
bcs loc_0adfa
cmp #0, r1l
beq loc_0ade0
bsr sub_0ae24
bcc loc_0ade0
cmp r1l, r0h
bhi loc_0adfa
loc_0ade0: cmp #0, r1h
beq loc_0ade8
cmp r1h, r0h
bhs loc_0adfa
loc_0ade8: jsr sub_0ae5c
mov #0x0c, r0h
mov r0h, @byte_ffe51b
bsr sub_0aeaa:16
bra rts_0ae22
loc_0adfa:
mov #8, r0h
mov r0h, @byte_ffe51b
bra rts_0ae22
loc_0ae04: mov @byte_ffe51e, r0h
jsr sub_0c76c
bcs loc_0ae1e
btst #4, r0h
beq loc_0ae1e
mov #0x0e, r0h
mov r0h, @byte_ffe51b
bra rts_0ae22
loc_0ae1e: jsr sub_0aefe
rts_0ae22: rts
sub_0ae24: mov @byte_ffe51e, r3l
bne loc_0ae36
bild #2, @byte_ffe083
bra rts_0ae3e
loc_0ae36: bild #3, @byte_ffe083
rts_0ae3e: rts
sub_0ae40: mov @byte_ffe51e, r3l
bne loc_0ae52
bclr #2, @byte_ffe083
bra rts_0ae5a
loc_0ae52: bclr #3, @byte_ffe083
rts_0ae5a: rts
sub_0ae5c: mov @byte_ffe51e, r3l
bne loc_0ae6e
bset #2, @byte_ffe083
bra rts_0ae76
loc_0ae6e: bset #3, @byte_ffe083
rts_0ae76: rts
sub_0ae78: mov @byte_ffe51e, r0l
mov #byte_ffe086, er2
extu r0
extu er0
add er0, er2
mov @er2, r1l
beq loc_0aea6
push er1
mov r0l, r0h
jsr sub_0c460
pop er1
bcs loc_0aea6
cmp r1l, r0h
blo loc_0aea6
set c
bra rts_0aea8
loc_0aea6: clr c
rts_0aea8: rts
sub_0aeaa: mov @byte_ffe51e, r0h
bne loc_0aeb8
jsr sub_0b7a4
bra rts_0aebc
loc_0aeb8: jsr sub_0b7a8
rts_0aebc: rts
sub_0aebe: jsr sub_01e92
jsr sub_01ecc
jsr sub_0b90c
bra sub_0aeee
sub_0aecc: mov @word_ffe9be, r0
add #10, r0l
addx #0, r0h
mov r0, @word_ffeaa2
bra sub_0aeee
sub_0aede: mov @word_ffe9be, r0
add #3, r0l
addx #0, r0h
mov r0, @word_ffeaa2
sub_0aeee: mov @byte_ffe51b, r0h
inc r0h
mov r0h, @byte_ffe51b
rts
sub_0aefe: mov @word_ffeaa2, r0
jsr sub_016e4
bcc rts_0af0c
bsr sub_0aeee
rts_0af0c: rts
sub_0af0e: mov #28800, r1
bra loc_0af18
mov #14400, r1
loc_0af18: mov @word_ffe9be, r0
add r1, r0
mov r0, @word_ffeaa2
jsr sub_0aeee
rts
sub_0af2c: jsr sub_0b208
bcs rts_0afee:16
jsr sub_0ae78
bcs loc_0af44
jsr sub_0b1bc
bcc loc_0af7c
cmp #0, r0h
bne loc_0af72
loc_0af44: jsr sub_0ae40
jsr sub_0b1ec
mov @byte_ffe51e, r0h
jsr sub_0c800
bcs loc_0af70
cmp #1, r0h
bne loc_0af70
mov @byte_ffe51e, r0h
jsr sub_0cc40
bcs loc_0af70
mov #0x13, r0h
mov r0h, @byte_ffe51b
loc_0af70:
bra loc_0af78
loc_0af72: mov #6, r0h
jsr sub_0b280
loc_0af78: bra rts_0afee:16
loc_0af7c: jsr sub_01276
bcc rts_0afee
mov @byte_ffe51e, r0h
jsr sub_0c800
bcs rts_0afee
cmp #1, r0h
bne rts_0afee
mov @byte_ffe51e, r0h
jsr sub_0c446
bcs rts_0afee
mov #1800, r1
cmp r1, r0
ble loc_0afb0
bset #7, @byte_ffff25
bra rts_0afee
loc_0afb0: mov #1000, r1
cmp r1, r0
bgt rts_0afee
btst #7, @byte_ffff25
beq rts_0afee
mov @byte_ffe51e, r0h
bld #0, r0h
bist #0, r0h
push er0
jsr sub_0c3d2
pop er0
bcs rts_0afee
jsr sub_0c35c
btst #2, r0h
beq rts_0afee
jsr sub_0b1ec
mov #8, r0h
mov r0h, @byte_ffe51b
rts_0afee: rts
sub_0aff0: jsr sub_01e9c
jsr sub_01ecc
jmp sub_0aeee
sub_0affc: jsr sub_07238
bcs rts_0b006
jsr sub_0b1ec
rts_0b006: rts
sub_0b008: mov @byte_ffe51e, r0h
jsr sub_01eae
jsr sub_0b90c
jmp sub_0aeee
sub_0b01a: jsr sub_0b208
bcs rts_0b09e
mov @byte_ffe51e, r0h
jsr sub_0db7a
bcc loc_0b032
jsr sub_0b1ec
bra rts_0b09e
loc_0b032: mov @byte_ffe51e, r0h
jsr sub_0c3d2
bcc loc_0b044
jsr sub_0b0b4
bcc loc_0b050
loc_0b044: mov @word_ffeaa2, r0
jsr sub_016e4
bcc loc_0b072
loc_0b050: mov @byte_ffe51e, r0h
bne loc_0b062
bset #0, @byte_ffe082
bra loc_0b06a
loc_0b062: bset #1, @byte_ffe082
loc_0b06a: mov #6, r0h
jsr sub_0b280
bra rts_0b09e
loc_0b072: mov @byte_ffe51e, r0h
jsr sub_0c76c
bcs rts_0b09e
btst #4, r0h
bne rts_0b09e
mov @byte_ffe51e, r0h
jsr sub_0c35c
btst #2, r0h
bne loc_0b096
jsr sub_0b1ec
bra rts_0b09e
loc_0b096: mov #6, r0h
mov r0h, @byte_ffe51b
rts_0b09e: rts
sub_0b0a0: cmp #1, r0h
bne loc_0b0ac
mov @word_ffec58, r0
bra rts_0b0b2
loc_0b0ac: mov @word_ffec56, r0
rts_0b0b2: rts
sub_0b0b4: mov @byte_ffe51e, r0h
jsr sub_0b0a0
mov #0x1eb, r1
cmp r1, r0
bls loc_0b102
btst #4, @byte_ffff24
bne loc_0b0ee
mov @tick, r0
mov #1000, r1
add r1, r0
mov r0, @word_ffeaa8
bset #4, @byte_ffff24
set c
bra loc_0b100
loc_0b0ee: mov @word_ffeaa8, r0
jsr cmpTick
bcc loc_0b0fe
clr c
bra loc_0b100
loc_0b0fe: set c
loc_0b100: bra rts_0b10c
loc_0b102: bclr #4, @byte_ffff24
set c
rts_0b10c: rts
sub_0b10e: mov #1, r0h
jsr sub_0c3d2
bcs loc_0b134
jsr sub_074f8
bcs loc_0b126
btst #0, @byte_ffff24
beq loc_0b12e
loc_0b126: mov #0, r0h
jsr sub_0c3d2
bcc loc_0b134
loc_0b12e: jsr sub_0b7a8
bra loc_0b138
loc_0b134: jsr sub_0b7a4
loc_0b138: jmp sub_0aeee
sub_0b13c: mov @byte_ffe51e, r0h
jsr sub_0cbfc
bcs loc_0b18a
bsr sub_0b190
mov r0h, r4h
mov r1, r0
bsr sub_0b190
or r0h, r4h
mov r2, r0
bsr sub_0b190
or r0h, r4h
mov r3, r0
bsr sub_0b190
or r0h, r4h
cmp #3, r4h
bne loc_0b184
mov @byte_ffe51e, r0h
bne loc_0b174
bset #0, @byte_ffe082
bra loc_0b17c
loc_0b174: bset #1, @byte_ffe082
loc_0b17c: mov #6, r0h
jsr sub_0b280
bra loc_0b188
loc_0b184: jsr sub_0b1ec
loc_0b188: bra rts_0b18e
loc_0b18a: jsr sub_0b1ec
rts_0b18e: rts
sub_0b190: push r1
mov #1000, r1
cmp r1, r0
bls loc_0b1b6
mov #0xff0, r1
cmp r1, r0
bhs loc_0b1a6
mov #1, r0h
bra loc_0b1b4
loc_0b1a6: mov #0x1072, r1
cmp r1, r0
bls loc_0b1b2
mov #2, r0h
bra loc_0b1b4
loc_0b1b2: mov #0, r0h
loc_0b1b4: bra loc_0b1b8
loc_0b1b6: mov #0, r0h
loc_0b1b8: pop r1
rts
sub_0b1bc: mov @byte_ffe51e, r0h
jsr sub_0c35c
mov r0h, r0l
btst #0, r0h
beq loc_0b1dc
push er0
jsr sub_0b280
pop er0
set c
bra rts_0b1ea
loc_0b1dc: btst #2, r0h
beq loc_0b1e6
mov #0, r0h
clr c
bra rts_0b1ea
loc_0b1e6: mov #0, r0h
set c
rts_0b1ea: rts
sub_0b1ec: jsr sub_01e9c
jsr sub_01ecc
bclr #4, @byte_ffff24
bclr #7, @byte_ffff25
jmp loc_0ac6a
sub_0b208: jsr sub_07238
bcc rts_0b216
mov #9, r0h
mov r0h, @byte_ffe51b
rts_0b216: rts
sub_0b218: jsr sub_074d0
bcc loc_0b222
bsr sub_0b232
bcs loc_0b22c
loc_0b222: jsr sub_0b296
jsr sub_0773a
bra rts_0b230
loc_0b22c: jsr loc_07764
rts_0b230: rts
sub_0b232: mov #0, r0h
bsr sub_0b23e
bcc rts_0b23c
mov #1, r0h
bsr sub_0b23e
rts_0b23c: rts
sub_0b23e: push er0
jsr sub_0db7a
pop er0
bcs loc_0b260
jsr sub_0c38c
cmp #3, r0h
bls loc_0b258
clr c
bra loc_0b25e
loc_0b258: jsr sub_0b90c
set c
loc_0b25e: bra rts_0b262
loc_0b260: set c
rts_0b262: rts
sub_0b264: jsr sub_074d0
bcs loc_0b276
mov @byte_ffe51e, r0h
jsr sub_0db7a
bcc rts_0b27e
loc_0b276: jsr sub_0b296
jsr sub_0b292
rts_0b27e: rts
sub_0b280: mov r0h, @byte_ffe51d
jsr sub_0b1ec
mov #4, r0h
jsr loc_0b298
rts
sub_0b292:
jmp loc_0ac6a
sub_0b296: mov #5, r0h
loc_0b298: mov r0h, @byte_ffe519
rts
sub_0b2a0:
btst #4, @byte_ffff25
beq loc_0b30c
btst #6, @byte_ffff25
beq loc_0b2be
bclr #6, @byte_ffff25
bra loc_0b328
loc_0b2be: mov #0, r0h
btst #5, @byte_ffff25
bne loc_0b2cc
mov #1, r0h
loc_0b2cc: jsr sub_0db7a
bcs loc_0b328
bld #2, @byte_ffff25
band #0, r0h
bcs loc_0b328
bld #0, @byte_ffff24
band #0, r0h
bcs loc_0b328
jsr sub_074f8
band #0, r0h
bcs loc_0b328
jsr sub_0c38c
cmp #0, r0h
bls loc_0b328
jsr sub_01272
bcs loc_0b30a
bset #0, @byte_ffff26
bra loc_0b328
loc_0b30a:
bra loc_0b33e
loc_0b30c:
jsr sub_074d0
bcs loc_0b328
jsr sub_01276
bcs loc_0b328
mov #-1, r0h
jsr sub_0db7a
bcs loc_0b328
jsr sub_0abc0
cmp #0, r0h
bhi loc_0b33e
loc_0b328:
bclr #4, @byte_ffff25
jsr sub_0ac42
jsr sub_01ede
jsr sub_0b296
bra rts_0b354
loc_0b33e: mov @byte_ffe51b, r0h
bne loc_0b34a
jsr sub_01ed6
loc_0b34a: mov #off_0a818, er0
jsr sub_0a7d8
rts_0b354: rts
sub_0b356: cmp #1, r0l
bne loc_0b362
jsr sub_0b5fe
jmp rts_0b42c
loc_0b362: cmp #2, r0l
bne loc_0b382
jsr sub_0b5b8
jsr sub_0b5c6
bset #4, @byte_ffe083
jsr sub_110fa
jsr sub_0b5d4
jmp rts_0b42c
loc_0b382: cmp #3, r0l
bne loc_0b3a2
bclr #4, @byte_ffff25
jsr sub_0ac42
jsr sub_01ede
jsr sub_0b296
jsr sub_0a6e6
jmp rts_0b42c
loc_0b3a2: cmp #4, r0l
bne loc_0b3ca
bclr #4, @byte_ffff25
bclr #5, @byte_ffff25
bset #3, @byte_ffff25
loc_0b3be:
jsr sub_0a6e6
jsr sub_0b296
jmp rts_0b42c
loc_0b3ca:
cmp #7, r0l
bne loc_0b3e8
bset #4, @byte_ffff25
bset #5, @byte_ffff25
bclr #3, @byte_ffff25
bra loc_0b3be
loc_0b3e8: cmp #8, r0l
bne loc_0b406
bset #4, @byte_ffff25
bclr #3, @byte_ffff25
bclr #5, @byte_ffff25
bra loc_0b3be
loc_0b406: cmp #5, r0l
bne loc_0b414
jsr sub_0b5b8
jsr sub_0b5d4
bra rts_0b42c
loc_0b414: cmp #6, r0l
bne loc_0b422
jsr sub_0b5c6
jsr sub_0b5d4
bra rts_0b42c
loc_0b422:
cmp #0x10, r0l
bne rts_0b42c
jsr sub_0ea1c
bra rts_0b42c
rts_0b42c: rts
sub_0b42e: mov @byte_ffe51e, r0l
bmi loc_0b43a
cmp r0l, r0h
bne loc_0b478
loc_0b43a: push er0
mov @byte_ffe51a, r0h
mov #word_0b498, er1
mov #num_0b498, r0l
mov #0, r3h
loc_0b44e: mov @er1+, r2
cmp r2h, r0h
bne loc_0b458
mov r2l, r3h
bra loc_0b45c
loc_0b458: dec r0l
bne loc_0b44e
loc_0b45c: cmp #2, r0h
bne loc_0b46c
mov @byte_ffe51b, r0l
cmp #0x0c, r0l
bhi loc_0b46c
mov #0, r3h
loc_0b46c: pop er0
mov @byte_ffe51c, r1h
bra loc_0b47a
loc_0b478: mov #0, r3h
loc_0b47a: push er3
jsr sub_0c38c
pop er3
mov r0h, r1h
mov r3h, r0h
mov @byte_ffe51c, r0l
add #0xfe, r0l
bpl rts_0b496
mov #0, r0l
rts_0b496: rts
word_0b498: .word 0x000, 0x101, 0x202, 0x301, 0x400
.word 0x701
num_0b498 = (. - word_0b498) / 2
rts_0b4a4: rts
sub_0b4a6:
push r0
jsr sub_0db7a
pop r0
bcc rts_0b4d6
cmp #0, r0h
bne loc_0b4c6
bclr #0, @byte_ffe082
bclr #2, @byte_ffe083
bra rts_0b4d6
loc_0b4c6: bclr #1, @byte_ffe082
bclr #3, @byte_ffe083
rts_0b4d6: rts
sub_0b4d8: mov @byte_ffe51a, r0h
cmp #1, r0h
beq loc_0b4f0
cmp #7, r0h
bne rts_0b50a
btst #4, @byte_ffff25
bne rts_0b50a
loc_0b4f0: mov #0, r0h
jsr sub_0c3d2
bcs rts_0b50a
mov #1, r0h
jsr sub_0c3d2
bcs rts_0b50a
jsr sub_01272
bcc rts_0b50a
jsr sub_0ac42
rts_0b50a: rts
sub_0b50c: clr c
bra loc_0b512
sub_0b510: set c
loc_0b512: bxor #0, @byte_ffff24
bcc rts_0b544
bld #0, @byte_ffff24
bist #0, @byte_ffff24
mov #0, r0h
jsr sub_0c3d2
bcs rts_0b544
mov #1, r0h
jsr sub_0c3d2
bcs rts_0b544
jsr sub_0ac42
jsr sub_0b1ec
rts_0b544: rts
bild #0, @byte_ffff24
rts
mov #0, r0h
bld #1, @byte_ffff24
bist #4, r0h
bst #5, r0h
bld #2, @byte_ffff24
bst #0, r0h
bist #1, r0h
rts
bld #5, r0h
bst #1, @byte_ffff24
bld #0, r0h
bst #2, @byte_ffff24
rts
sub_0b582: bld #3, @byte_ffff24
bcs rts_0b5a2
bset #3, @byte_ffff24
mov @byte_ffe51a, r0h
cmp #2, r0h
bne rts_0b5a2
jsr sub_0b1ec
rts_0b5a2: rts
sub_0b5a4: bclr #3, @byte_ffff24
rts
bild #3, @byte_ffff24
rts
sub_0b5b8: bset #0, @byte_ffe083
jsr sub_11136
rts
sub_0b5c6: bset #1, @byte_ffe083
jsr sub_1114a
rts
sub_0b5d4:
mov @byte_ffe51a, r0h
cmp #2, r0h
bne rts_0b5e2
jsr sub_0b1ec
rts_0b5e2: rts
sub_0b5e4: set c
btst #0, @byte_ffe083
beq rts_0b5fc
btst #1, @byte_ffe083
beq rts_0b5fc
clr c
rts_0b5fc: rts
sub_0b5fe: bclr #0, @byte_ffe083
bclr #1, @byte_ffe083
jsr sub_11140
jsr sub_11154
jsr sub_11104
rts
sub_0b61c:
bld #2, @byte_ffe562 ; 0x03
bcs loc_0b62a
bsr sub_0b62e
bra rts_0b62c
loc_0b62a: bsr sub_0b674
rts_0b62c: rts
sub_0b62e: bld #7, r0l
bcc rts_0b672
and #0x7f, r0l
cmp #0x64, r0l
bhi rts_0b672
cmp #0, r0h
bne loc_0b64c
bclr #2, @byte_ffe083
mov r0l, @byte_ffe084
bra loc_0b65a
loc_0b64c: bclr #3, @byte_ffe083
mov r0l, @byte_ffe085
loc_0b65a: mov @byte_ffe51a, r0l
cmp #2, r0l
bne rts_0b672
mov @byte_ffe51e, r1h
cmp r0h, r1h
bne 1f
jsr sub_0b1ec
1:
rts_0b672: rts
sub_0b674: bld #7, r0l
bcc rts_0b690
and #0x7f, r0l
cmp #0x64, r0l
bhi rts_0b690
cmp #0, r0h
bne loc_0b68a
mov r0l, @byte_ffe086
bra rts_0b690
loc_0b68a: mov r0l, @byte_ffe087
rts_0b690: rts
ret24: bld #2, @byte_ffe562 ; 0x03
bcs loc_0b6a4
mov @byte_ffe084, r0h
bra rts_0b6aa
loc_0b6a4: mov @byte_ffe086, r0h
rts_0b6aa: rts
ret25: bld #2, @byte_ffe562 ; 0x03
bcs loc_0b6be
mov @byte_ffe085, r0h
bra rts_0b6c4
loc_0b6be: mov @byte_ffe087, r0h
rts_0b6c4: rts
sub_0b6c6: mov @byte_ffe51a, r0l
cmp #1, r0l
bne rts_0b710
mov @byte_ffe51e, r0l
cmp r0h, r0l
beq rts_0b710
cmp #1, r0h
bhi rts_0b710
push er0
jsr sub_0ac42
pop er0
cmp #0, r0h
bne loc_0b700
bset #6, @byte_ffff24
bclr #5, @byte_ffff24
bra rts_0b710
loc_0b700: bset #5, @byte_ffff24
bclr #6, @byte_ffff24
rts_0b710: rts
sub_0b712:
push er0
mov @byte_ffe082, r0l
cmp #0, r0h
bne loc_0b724
bild #0, r0l
bra loc_0b72e
loc_0b724: cmp #1, r0h
bne loc_0b72c
bild #1, r0l
bra loc_0b72e
loc_0b72c: set c
loc_0b72e:
pop er0
rts
sub_0b734: cmp #-1, r0
beq loc_0b73c
shll r0
loc_0b73c: mov r0, @word_ffe088
mov #task27o, r0h
mov #30000, r1
jsr schedBackTaskDelayed
mov #task27o, r0h
jsr schedBackTask
rts
task27: mov @word_ffe088, r1
cmp #0, r1
beq loc_0b78c
mov #task27o, r0h
jsr checkSchedTask
bcc loc_0b79a
mov #task27o, r0h
mov #30000, r1
jsr schedBackTaskDelayed
mov @word_ffe088, r1
cmp #-1, r1
beq loc_0b790
dec #1, r1
mov r1, @word_ffe088
cmp #0, r1
bhi loc_0b79a
loc_0b78c: jsr sub_0b5fe
loc_0b790: mov #task27o, r0h
jsr schedFrontTask
clr c
bra rts_0b7a2
loc_0b79a: mov #task27o, r0h
jsr schedFrontTask
set c
rts_0b7a2: rts
sub_0b7a4: mov #0, r0h
bra loc_0b7ae
sub_0b7a8: mov #4, r0h
bra loc_0b7ae
sub_0b7ac: mov #2, r0h
loc_0b7ae: mov r0h, @byte_ffe51f
mov #task28o, r0h
jsr schedBackTask
bset #7, @byte_ffff24:8
rts
sub_0b7c0: mov #2, r0h
mov r0h, @byte_ffe51f
inc r0h
mov r0h, @byte_ffff27
bset #7, @byte_ffff24:8
rts
task28: mov @byte_ffe51f, r0h
mov @byte_ffff27, r0l
cmp r0h, r0l
beq loc_0b826
push er0
mov #task28o, r0h
jsr checkSchedTask
pop er0
bcc loc_0b822
cmp r0l, r0h
blo loc_0b7fe
inc r0l
bra loc_0b800
loc_0b7fe: dec r0l
loc_0b800: mov r0l, @byte_ffff27
mov #0, r0h
mov #0, e0
mov @(byte_0b838,er0), r0h
jsr sub_02018
mov #task28o, r0h
mov #20, r1
jsr schedBackTaskDelayed
loc_0b822: set c
bra loc_0b82c
loc_0b826: bclr #7, @byte_ffff24:8
clr c
loc_0b82c: stc ccr, r5h
mov #task28o, r0h
jsr schedFrontTask
ldc r5h, ccr
rts
byte_0b838: .byte 9, 8, 0, 2, 6, 0
sub_0b83e: mov @off_00474, er0
mov er0, @long_ffebe4
mov #0, r0h
mov r0h, @byte_ffe520
mov r0h, @byte_ffeaac
mov r0h, @byte_ffeaad
mov r0h, @byte_ffeb46
mov r0h, @byte_ffeb47
mov #byte_ffeaac, er2
bset #2, @er2
mov #0x24, r0h
mov r0h, @byte_ffeaaf
mov #0x25, r0h
mov r0h, @byte_ffeb49
mov #-1, r0
mov r0, @byte_ffebe8
mov #-1, r0
mov r0, @word_ffeab4
mov r0, @word_ffeb4e
jsr sub_0cc8c
jsr sub_0c1f8
mov #2880, r0
mov r0, @byte_ffebf4
rts
sub_0b8b6: btst #4, @er4
beq rts_0b8e4
mov @(0x20,er4), r0
mov @(6,er4), r1
cmp r0, r1
bls loc_0b8cc
sub r0, r1
bra loc_0b8d0
loc_0b8cc: sub r1, r0
mov r0, r1
loc_0b8d0: mov @byte_ffebe8, r0
cmp r0, r1
bls rts_0b8e4
mov @(0x20,er4), r0
mov r0, @(6,er4)
bsr sub_0b8e6
rts_0b8e4: rts
sub_0b8e6: push er4
mov @(3,er4), r0h
jsr sub_10cc0
pop er4
rts
sub_0b8f8: mov #byte_ffeaac, er4
bsr sub_0c8e6:16
mov #byte_ffeb46, er4
bsr sub_0c8e6:16
sub_0b90c: jsr sub_0c378
mov @byte_ffe520, r0h
cmp #0x1e, r0h
blo loc_0b91e
jsr sub_0c1b8
loc_0b91e: jsr sub_0c1f8
rts
task29: mov @long_ffebec, er4
mov @byte_ffe520, r0h
mov #off_0b942, er1
jsr switch_er1_r0h
bld #6, @byte_ffff28:8
rts
off_0b942: case 0 sub_0bc82 sub_0bcb6 sub_0bf1a sub_0bd3c
case 4 sub_0be0a sub_0be38 sub_0bd34 sub_0bf34
case 8 sub_0bd3c sub_0bf6e sub_0be38 sub_0bf66
case 12 sub_0bd3c sub_0bfa4 sub_0be38 sub_0bfc8
case 16 sub_0bfa4 sub_0bf66 sub_0bd3c sub_0bfa4
case 20 sub_0be38 sub_0bf2c sub_0bd3c sub_0be0a
case 24 sub_0be38 sub_0bea4 sub_0c088 sub_0c20c
case 28 sub_0bc94 sub_0c15a sub_0c1ce sub_0c0cc
case 32 sub_0c12a sub_0c1bc sub_0c0c2 sub_0c12a
case 36 sub_0c150 sub_0c070 sub_0c0a8 sub_0c0b8
word_0b992: .word 0x1a09
.long NULL
.word 0x36
.word 0
.word 0x109
.long NULL
.word 0x0c
.word 0
.word 0x209
.long NULL
.word 0x0e
.word 0
.word 0x409
.long NULL
.word 0x12
.word 0
.word 0x388
.long NULL
.word 0x8000
.word 0
.word 0x309
.long NULL
.word 0x10
.word 0
.word 0x1809
.long NULL
.word 0x32
.word 0
.word 0x1909
.long NULL
.word 0x34
.word 0
.word 0x1b09
.long NULL
.word 0x38
.word 0
.word 0x1c09
.long NULL
.word 0x3a
.word 0
.word 0x200b
.long sub_0baec
.word 0x3c
.word 0x10
.word 0x210b
.long sub_0baec
.word 0x4c
.word 0x10
.word 0x220b
.long sub_0baec
.word 0x5c
.word 4
.word 0x1509
.long NULL
.word 0x2c
.word 0
.word 0
.word 0
word_0ba22: .word 0x2f0b
.long sub_0bb3c
.word 0x70 - 0x10 & -(type1R && level < 0x01030069)
.word 0x10
.long NULL
word_0ba30: .word 0x3f09
.long NULL
.word 0x90 - 0x20 & -(type1R && level < 0x01030069)
.word 0
.word 0
.word 0
word_0ba3e: .word 9
.long sub_0ca36
.word 0x0a
.long 0x809
.long NULL
.long 0x140000
.word 0x909
.long NULL
.word 0x16
.long 0xf09
.long NULL
.long 0x200000
.word 0x1009
.long NULL
.word 0x22
.long 0xa09
.long NULL
.long 0x180000
.word 0x1409
.long NULL
.word 0x2a
.long 0xb09
.long sub_0bb7e
.long 0x1a0000
.word 0x1309
.long sub_0bc60
.word 0x28
.long 0x1209
.long sub_0bbb4
.long 0x260000
.word 0x1109
.long NULL
.word 0x24
.long 0x1609
.long sub_0ca10
.long 0x2e0000
.word 0x1709
.long sub_0ca52
.word 0x30
.long 0xc09
.long NULL
.long 0x1c0000
.word 0xd09
.long NULL
.word 0x1e
.long 0x230b
.long sub_0baec
.long 0x600010
.word 0x300b
.long sub_0bb32
.word 0x80
.long 0x100000
.word 0
sub_0baec: mov @i2cBuf02, r0h
mov @long_ffebf0, er3
mov @(6,er3), r1
mov #0, e1
add er4, er1
mov #byte_ffebf6, er2
mov @(9,er3), r0l
cmp r0l, r0h
bls loc_0bb14
mov r0l, r0h
loc_0bb14: mov @er2, r3h
mov r3h, @er1
adds #1, er1
adds #1, er2
dec r0l
dec r0h
bne loc_0bb14
mov #0, r3h
loc_0bb24: cmp #0, r0l
beq rts_0bb30
mov r3h, @er1
adds #1, er1
dec r0l
bra loc_0bb24
rts_0bb30: rts
sub_0bb32: btst #0, @er4
beq rts_0bb3a
bsr sub_0baec
rts_0bb3a: rts
sub_0bb3c: bsr sub_0baec
mov #long_00b42, er1
mov @(0x71,er4), r2h
mov @(0x72,er4), r2l
mov @(0x73,er4), r0h
mov @(0x74,er4), r0l
mov r2, e0
loc_0bb56: mov @er1+, er2
beq loc_0bb64
cmp er2, er0
bne loc_0bb56
clr c
bra loc_0bb66
loc_0bb64: set c
loc_0bb66: bst #0, @er4
rts
sub_0bb6c:
push er4
jsr sub_0c378
btst #0, @er4
pop er4
rts
sub_0bb7e: bsr sub_0c87e:16
mov @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4), er1
mov e1, r0
btst #5, r0h
bne loc_0bba2
exts e1
mov r0h, r2l
and #0x1f, r2l
beq loc_0bb9e
mov #0, r2h
divxs r2, er1
bra loc_0bba0
loc_0bb9e: zero r1
loc_0bba0: bra loc_0bbae
loc_0bba2: mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
loc_0bbae: mov r1, @(0x1a,er4)
rts
sub_0bbb4: mov #0, r3
mov @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4), er1
mov e1, r0
btst #7, r0h
beq loc_0bc10
mov @(0x1a,er4), r1
bpl loc_0bbf2
beq loc_0bbf2
neg r1
mov @(0x10,er4), r0h
btst #7, r0h
beq loc_0bbe2
mov @(0x16,er4), r2
mulxu r2, er1
mov #10000, r2
divxu r2, er1
loc_0bbe2: mov r1, r3
mov @(0x20,er4), r2
mov #60, r0
mulxu r0, er2
divxu r1, er2
bra loc_0bbf6
loc_0bbf2: mov #-1, r2
loc_0bbf6: mov @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4), er1
mov e1, r0
btst #5, r0h
beq loc_0bc0e
mov @byte_ffebf6, r2l
mov @byte_ffebf7, r2h
loc_0bc0e: bra loc_0bc14
loc_0bc10: mov #-1, r2
loc_0bc14: cmp #-1, r2
beq loc_0bc24
cmp #2880, r2
bls loc_0bc24
mov #2880, r2
loc_0bc24: mov r2, @(0x26,er4)
mov r2, @(0x98 - 0x20 & -(type1R && level < 0x01030069),er4)
cmp #0, r3
beq rts_0bc5e
mov r3, r1
mov #byte_ffeb46, er3
cmp #byte_ffeaac, er4
beq loc_0bc48
mov #byte_ffeaac, er3
loc_0bc48: btst #4, @er3
beq rts_0bc5e
mov @(0x20,er3), r2
mov #0x3c, r0
mulxu r0, er2
divxu r1, er2
mov r2, @(0x98 - 0x20 & -(type1R && level < 0x01030069),er3)
rts_0bc5e: rts
sub_0bc60: mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
cmp #-1, r1
beq loc_0bc7c
cmp #2880, r1
bls loc_0bc7c
mov #2880, r1
loc_0bc7c: mov r1, @(0x28,er4)
rts
sub_0bc82: mov #byte_ffeaac, er0
mov er0, @long_ffebec
jmp sub_0c0d8
sub_0bc94: btst #2, @er4
beq loc_0bcb0
mov #byte_ffeb46, er0
mov er0, @long_ffebec
mov #1, r0h
jsr sub_0c152
bra rts_0bcb4
loc_0bcb0: jsr sub_0c0d8
rts_0bcb4: rts
sub_0bcb6: push er4
mov #0, r0h
bild #2, @er4
bst #0, r0h
jsr sub_0db7a
pop er4
bcs loc_0bd2a
btst #5, @er4
bne loc_0bce4
push er4
mov @(0x92 - 0x20 & -(type1R && level < 0x01030069),er4), r0
jsr sub_016e4
pop er4
bcc loc_0bd2a
loc_0bce4: btst #4, @er4
beq loc_0bcfe
btst #5, @er4
beq loc_0bcf6
jsr sub_0c0d8
bra loc_0bcfc
loc_0bcf6: mov #0x15, r0h
jsr sub_0c152
loc_0bcfc: bra loc_0bd28
loc_0bcfe: bclr #6, @er4
mov #0, r0
mov r0, @(0x36,er4)
mov #0x10, r1h
mov er4, er2
add #0x70 - 0x10 & -(type1R && level < 0x01030069), er2
loc_0bd14: mov r0h, @er2
adds #1, er2
dec r1h
bne loc_0bd14
mov #0, r0
mov r0, @(0x90 - 0x20 & -(type1R && level < 0x01030069),er4)
jsr sub_0c0d8
loc_0bd28: bra rts_0bd32
loc_0bd2a: mov #0x1b, r0h
jsr sub_0c152
set c
rts_0bd32: rts
sub_0bd34: bclr #5, @er4
jmp sub_0c0d8
sub_0bd3c: push er4
btst #2, @er4
beq loc_0bd4a
mov #1, r2h
bra loc_0bd4c
loc_0bd4a: mov #2, r2h
loc_0bd4c: mov @long_ffebf0, er5
mov @er5, r6
push er6
mov #0, r2l
mov @(0x37,er4), r6h
and #0xf0, r6h
cmp #0x30, r6h
bne loc_0bd68
mov #1, r2l
loc_0bd68: pop er6
cmp #0x300b, r6
bne loc_0bd88
btst #0, @er4
bne loc_0bd88
mov @byte_ffe520, r0h
inc r0h
mov r0h, @byte_ffe520
bra loc_0be02
loc_0bd88: mov r6h, r4h
mov r6l, r3h
and #0x1f, r3h
btst #7, r6l
beq loc_0bda2
mov @(6,er5), r6
mov r6l, @byte_ffebf6
mov r6h, @byte_ffebf7
loc_0bda2: mov #i2cBuf, er6
btst #7, @er6 ; i2c00o
bne loc_0bdfe
mov r3h, @(i2c03o:16,er6)
mov #0x16, r5h
mov r5h, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffebf6, er5
mov er5, @(i2c08o:16,er6)
mov #0x18, r5h
mov r5h, @(i2c02o:16,er6)
mov #0, er5
mov er5, @(i2c12o:16,er6)
mov #200, r5h
mov r5h, @(i2c20o:16,er6)
cmp #0, r2l
beq loc_0bde6
bset #4, r2h
loc_0bde6: mov r2h, @(i2c00o:16,er6)
mov #0, r2h
mov r2h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_0be02
loc_0bdfe: mov #0x1a, r0h
set c
loc_0be02: pop er4
bra sub_0c0d8:16
sub_0be0a: btst #6, @i2cBuf00
beq rts_0be36
mov @i2cBuf04, r0h
cmp #0, r0h
beq loc_0be32
jsr sub_0c0f8
bcc loc_0be28
mov #0x1b, r0h
bra loc_0be2a
loc_0be28: mov #0x22, r0h
loc_0be2a: jsr sub_0c152
clr c
bra rts_0be36
loc_0be32: jsr sub_0c0d8
rts_0be36: rts
sub_0be38: mov @long_ffebf0, er3
mov @er3, r0
btst #7, r0l
bne loc_0be74
mov @(2,er3), er0
beq loc_0be52
jsr @er0
bra loc_0be74
loc_0be52: mov @(6,er3), r0
beq loc_0be74
mov #0, e0
add er4, er0
mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
set i
mov r1h, @er0
mov r1l, @(1,er0)
clr i
loc_0be74: mov @long_ffebf0, er3
add #0x0a, er3
mov @er3, r0
bne loc_0be8c
jsr sub_0c0d8
bra loc_0bea0
loc_0be8c: mov er3, @long_ffebf0
mov @byte_ffe520, r0h
add #0xfe, r0h
jsr sub_0c152
loc_0bea0: clr c
rts
sub_0bea4: bclr #7, @er4
btst #4, @er4
bne loc_0bef8
bset #4, @er4
push er4
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr rts_0b4a4
pop er4
jsr sub_0c344
mov @(0x20,er4), r0
mov r0, @(6,er4)
jsr sub_0c794
push er4
jsr sub_0b4d8
jsr sub_0d8d6
pop er4
jsr sub_0c602
mov r0h, @(4,er4)
mov @(0x20,er4), r0
mov r0, @(6,er4)
bra loc_0bf04
loc_0bef8: jsr sub_0c32e
jsr sub_0c798
bsr sub_0b8b6:16
loc_0bf04: mov @(0x22,er4), r1
mov @(0x20,er4), r0
bsr sub_0c48a:16
mov r0, @(0x1e,er4)
jsr sub_0c0d8
rts
sub_0bf1a: mov #word_0b992, er0
loc_0bf20: mov er0, @long_ffebf0
jmp sub_0c0d8
sub_0bf2c: mov #word_0ba3e, er0
bra loc_0bf20
sub_0bf34: mov @(0x37,er4), r0h
and #0xf0, r0h
cmp #0x30, r0h
bne loc_0bf5e
mov @(0x4c,er4), r0h
mov @(0x4d,er4), r0l
mov @(0x4e,er4), r1h
cmp #0x49, r0h
bne loc_0bf5e
cmp #0x42, r0l
bne loc_0bf5e
cmp #0x4d, r1h
bne loc_0bf5e
mov #word_0ba22, er0
bra loc_0bf20
loc_0bf5e: mov #0x15, r0h
jsr sub_0c152
rts
sub_0bf66: mov #word_0ba30, er0
bra loc_0bf20
sub_0bf6e: btst #6, @i2cBuf00
beq rts_0bfa2
mov @i2cBuf04, r0h
cmp #0, r0h
beq loc_0bf9a
cmp #0x1f, r0h
bne loc_0bf8c
jsr sub_0c0f8
bcc loc_0bf90
loc_0bf8c: mov #0x1b, r0h
bra loc_0bf92
loc_0bf90: mov #0x22, r0h
loc_0bf92: jsr sub_0c152
clr c
bra rts_0bfa2
loc_0bf9a: bset #6, @er4
jsr sub_0c0d8
rts_0bfa2: rts
sub_0bfa4: btst #6, @i2cBuf00
beq rts_0bfc6
mov @i2cBuf04, r0h
cmp #0, r0h
beq loc_0bfc2
mov #0x15, r0h
jsr sub_0c152
clr c
bra rts_0bfc6
loc_0bfc2: jsr sub_0c0d8
rts_0bfc6: rts
sub_0bfc8: mov @(0x90 - 0x20 & -(type1R && level < 0x01030069),er4), r0
bne loc_0bfec
push er4
jsr sub_06db2
pop er4
bcs loc_0bfec
push er4
bsr sub_0bff6
pop er4
jsr sub_0c0d8
bra loc_0bff2
loc_0bfec: mov #0x15, r0h
jsr sub_0c152
loc_0bff2: set c
rts
sub_0bff6: btst #2, @er4
beq loc_0c000
mov #1, r2h
bra loc_0c002
loc_0c000: mov #2, r2h
loc_0c002: mov r0l, @byte_ffebf6
mov r0h, @byte_ffebf7
mov #i2cBuf, er6
btst #7, @er6 ; i2c00o
bne loc_0c06a
mov #8, r5h
mov r5h, @(i2c03o:16,er6)
mov #0x16, r5h
mov r5h, @(i2c05o:16,er6)
mov #0x3f, r5h
mov r5h, @(i2c06o:16,er6)
mov #byte_ffebf6, er5
mov er5, @(i2c08o:16,er6)
mov #0x18, r5h
mov r5h, @(i2c02o:16,er6)
mov #0, er5
mov er5, @(i2c12o:16,er6)
mov #200, r5h
mov r5h, @(i2c20o:16,er6)
bset #4, r2h
mov r2h, @(i2c00o:16,er6)
mov #0, r2h
mov r2h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra rts_0c06e
loc_0c06a: mov #0x1a, r0h
set c
rts_0c06e: rts
sub_0c070: push er4
mov #0, r0
bsr sub_0bff6:16
pop er4
jsr sub_0c0d8
set c
rts
sub_0c088: btst #4, @er4
beq loc_0c0a0
btst #3, @er4
beq loc_0c0a0
bclr #3, @er4
mov #0x25, r0h
jsr sub_0c152
bra loc_0c0a4
loc_0c0a0: jsr sub_0c0d8
loc_0c0a4: set c
rts
sub_0c0a8: btst #6, @i2cBuf00
beq rts_0c0b6
jsr sub_0c0d8
rts_0c0b6: rts
sub_0c0b8: mov #0x11, r0h
jsr sub_0c152
set c
rts
sub_0c0c2: bset #6, @byte_ffff28:8
mov #30, r1
bra loc_0c0d6
sub_0c0cc: mov #2000, r1
bra loc_0c0d6
mov #4000, r1
loc_0c0d6: bsr sub_0c0e8
sub_0c0d8: mov @byte_ffe520, r0h
inc r0h
mov r0h, @byte_ffe520
rts
sub_0c0e8: push er4
mov #task29o, r0h
jsr schedBackTaskDelayed
pop er4
rts
sub_0c0f8: mov @(1,er4), r0l
inc r0l
mov r0l, @(1,er4)
cmp #4, r0l
blo loc_0c11a
push er4
jsr sub_0c410
pop er4
bset #7, @er4
set c
bra rts_0c128
loc_0c11a: cmp #0x18, r0h
bne loc_0c126
bset #7, @er4
set c
bra rts_0c128
loc_0c126: clr c
rts_0c128: rts
sub_0c12a: push er4
mov #task29o, r0h
jsr checkSchedTask
pop er4
bcc loc_0c140
jsr sub_0c0d8
bra rts_0c14e
loc_0c140: push er4
mov #task29o, r0h
jsr schedFrontTask
pop er4
rts_0c14e: rts
sub_0c150: mov #1, r0h
sub_0c152: mov r0h, @byte_ffe520
rts
sub_0c15a: bsr sub_0c1b8
push er4
jsr sub_01276
bcc loc_0c1ae
jsr sub_074d0
bcc loc_0c1ae
mov #byte_ffeaac, er4
jsr sub_0c2ee
push er0
mov #byte_ffeb46, er4
jsr sub_0c2ee
pop er1
cmp r1h, r0h
bhs loc_0c18e
mov r1h, r0h
loc_0c18e: cmp #3, r0h
bhi loc_0c198
mov #0x3c, r0
bra loc_0c19c
loc_0c198: mov #3600, r0
loc_0c19c: mov @word_ffe9be, r1
add r1, r0
mov r0, @word_ffebea
mov #0x1e, r0h
bra loc_0c1b0
loc_0c1ae: mov #0x1f, r0h
loc_0c1b0: bsr sub_0c152
pop er4
rts
sub_0c1b8: bclr #6, @byte_ffff28:8
sub_0c1bc: mov #0, r0h
mov r0h, @byte_ffeaad
mov r0h, @byte_ffeb47
bsr sub_0c152
rts
sub_0c1ce: push er4
mov @word_ffebea, r0
jsr sub_016e4
bcs loc_0c1ea
jsr sub_074d0
bcc loc_0c1ea
jsr sub_07238
bcc loc_0c1f2
loc_0c1ea: mov @sp, er4 ; pop+push er4
jsr sub_0c0d8
loc_0c1f2: pop er4
rts
sub_0c1f8: mov @word_ffe9be, r0
mov r0, @word_ffeb3e
mov r0, @word_ffebd8
rts
sub_0c20c: btst #4, @er4
beq loc_0c29c:16
btst #0, @byte_ffe10a
beq loc_0c22a
bclr #0, @byte_ffe10a
jsr sub_0cb0a
loc_0c22a: push er4
mov @(0x92 - 0x20 & -(type1R && level < 0x01030069),er4), r0
jsr sub_016e4
pop er4
bcc loc_0c29a
push er4
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr sub_0b42e
pop er4
cmp #0, r0h
bne loc_0c28a
bsr sub_0c2aa
bcc loc_0c25e
mov #0, r0
bra loc_0c288
loc_0c25e: mov #0, r0
mov r0, @(0x1a,er4)
mov r0, @(0x18,er4)
jsr sub_0c53a
bld #2, r0h
bor #4, r0l
bcc loc_0c27a
mov #0x78, r0
bra loc_0c288
loc_0c27a: btst #4, r0h
beq loc_0c284
mov #1, r0
bra loc_0c288
loc_0c284: mov #5400, r0
loc_0c288: bra loc_0c28e
loc_0c28a: mov #0, r0
loc_0c28e: mov @word_ffe9be, r1
add r1, r0
mov r0, @(0x92 - 0x20 & -(type1R && level < 0x01030069),er4)
loc_0c29a: bra loc_0c2a6
loc_0c29c: mov @word_ffe9be, r0
mov r0, @(0x92 - 0x20 & -(type1R && level < 0x01030069),er4)
loc_0c2a6: jmp sub_0c0d8
sub_0c2aa: mov @(0x1a,er4), r0
mov #0x14, r1
cmp r1, r0
bgt loc_0c2ea
mov #0xffec, r1
cmp r1, r0
ble loc_0c2ea
mov @(0x26,er4), r0
mov #-1, r1
cmp r1, r0
bne loc_0c2ea
mov @(0x28,er4), r0
cmp r1, r0
bne loc_0c2ea
mov @(0x18,er4), r0
mov #0x32, r1
cmp r1, r0
bgt loc_0c2ea
mov #0xff9c, r1
cmp r1, r0
ble loc_0c2ea
clr c
bra rts_0c2ec
loc_0c2ea: set c
rts_0c2ec: rts
sub_0c2ee: mov @(0x22,er4), r1
mov @(0x20,er4), r0
jsr sub_0c48a
mov @(0x20,er4), r1
mov @long_ffebe4, er2
mov @er2, r3h
adds #2, er2
mov #0, r3l
loc_0c30c: mov @er2+, er5
cmp #-1, e5
beq loc_0c31a
cmp e5, r1
bls loc_0c32a
loc_0c31a: cmp #-1, r5
beq loc_0c324
cmp r5, r0
bls loc_0c32a
loc_0c324: inc r3l
dec r3h
bne loc_0c30c
loc_0c32a: mov r3l, r0h
rts
sub_0c32e: jsr sub_0c2ee
mov @(2,er4), r0l
cmp r0h, r0l
beq rts_0c342
mov r0h, @(2,er4)
jsr sub_0b8e6
rts_0c342: rts
sub_0c344: mov #-1, r0h
mov r0h, @(2,er4)
bra sub_0c32e
push er4
jsr sub_0c378
bsr sub_0c344
pop er4
rts
sub_0c35c: push er0
jsr sub_0db7a
pop er0
bcs loc_0c374
jsr sub_0c378
jsr sub_0c53a
bra rts_0c376
loc_0c374: zero r0
rts_0c376: rts
sub_0c378: cmp #1, r0h
beq loc_0c384
mov #byte_ffeaac, er4
bra rts_0c38a
loc_0c384: mov #byte_ffeb46, er4
rts_0c38a: rts
sub_0c38c: push er4
push er1
bsr sub_0c378
bild #4, @er4
bcs loc_0c3c2
mov @(2,er4), r0l
cmp #4, r0l
bls loc_0c3bc
mov @long_ffebe4, er4
mov @er4, r0h
dec r0h
cmp r0h, r0l
blo loc_0c3b8
mov #5, r0h
bra loc_0c3ba
loc_0c3b8: mov #4, r0h
loc_0c3ba: bra loc_0c3be
loc_0c3bc: mov r0l, r0h
loc_0c3be: clr c
bra loc_0c3c8
loc_0c3c2: mov #0, r0h
mov r0h, r0l
set c
loc_0c3c8: pop er1
pop er4
rts
sub_0c3d2: cmp #-1, r0h
bne loc_0c3e8
mov @byte_ffeaac, r0h
bild #4, r0h
mov @byte_ffeb46, r0h
biand #4, r0h
bra rts_0c3fe
loc_0c3e8: cmp #1, r0h
bne loc_0c3f6
mov @byte_ffeb46, r0h
bild #4, r0h
bra rts_0c3fe
loc_0c3f6: mov @byte_ffeaac, r0h
bild #4, r0h
rts_0c3fe: rts
sub_0c400: push er4
jsr sub_0c378
bsr sub_0c410
pop er4
rts
sub_0c410: bclr #7, @er4
bld #4, @er4
bclr #4, @er4
bcc rts_0c42a
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr rts_0b4a4
rts_0c42a: rts
sub_0c42c: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0c440
jsr sub_0c5e0
clr c
loc_0c440: pop er4
rts
sub_0c446: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0c45a
mov @(0x1a,er4), r0
clr c
loc_0c45a: pop er4
rts
sub_0c460: jsr sub_0c378
btst #4, @er4
beq loc_0c478
mov @(0x22,er4), r1
mov @(0x20,er4), r0
bsr sub_0c47e
clr c
bra rts_0c47c
loc_0c478: mov #0, r0h
set c
rts_0c47c: rts
sub_0c47e: bsr sub_0c48a
mov r0l, r0h
cmp #100, r0h
bls rts_0c488
mov #100, r0h
rts_0c488: rts
sub_0c48a: mov #100, r2
mulxu r2, er0
divxu r1, er0
mov e0, r2
beq rts_0c498
inc #1, r0
rts_0c498: rts
sub_0c49a: push er6
mov #0x20, r5h
mov #0, r0
mov r0, r4
mov r0, r6
loc_0c4a8: shll r2l
rotxl r2h
rotxl r3l
rotxl r3h
rotxl r4l
rotxl r4h
shll r0l
rotxl r0h
rotxl r6l
rotxl r6h
cmp r1, r4
blo loc_0c4c4
sub r1, r4
bset #0, r0l
loc_0c4c4: dec r5h
bne loc_0c4a8
mov #0, r2
cmp r6, r2
mov r6, r1
pop er6
rts
mov #60, r1h
bra loc_0c4dc
mov #100, r1h
loc_0c4dc: mov r0l, r2l
mulxu r1h, r2
mov r0h, r3l
mulxu r1h, r3
add r3l, r2h
addx #0, r3h
mov r3h, r3l
mov #0, r3h
rts
sub_0c4ee: mulxu r1, er0
mov e0, r1
rts
bsr sub_0c4fc
jsr sub_0c47e
rts
sub_0c4fc: mov #byte_ffeaac, er0
btst #4, @er0
beq loc_0c516
mov @word_ffeace, r1
mov @word_ffeacc, r0
bra loc_0c51c
loc_0c516: mov #0, r1
mov r1, r0
loc_0c51c: mov #byte_ffeb46, er2
btst #4, @er2
beq rts_0c538
mov @word_ffeb68, r2
add r2, r1
mov @word_ffeacc, r2
add r2, r0
rts_0c538: rts
sub_0c53a: mov #0, r0
push er1
push er2
push er3
btst #4, @er4
beq loc_0c5b0
mov @(0x2e,er4), r1
bld #7, r1h
bor #6, r1h
bor #4, r1h
bcs loc_0c576
btst #6, @er4
beq loc_0c576
mov @(0x2a,er4), r2
beq loc_0c576
mov #500, r3
cmp r3, r2
blo loc_0c574
bset #2, r0h
bra loc_0c576
loc_0c574: bset #4, r0l
loc_0c576: bld #4, r1h
bst #4, r0h
bld #3, r1h
bst #7, r0l
btst #6, @er4
beq loc_0c5ac
mov @(0x0a,er4), r1
bld #1, r1l
bst #5, r0h
bld #0, r1l
bst #0, r0h
push er4
push r0
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr sub_0b712
pop r0
biand #0, r0h
bist #0, r0h
pop er4
loc_0c5ac: clr c
bra loc_0c5d2
loc_0c5b0: btst #7, @er4
beq loc_0c5cc
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr sub_0b712
mov #0, r0
bist #0, r0h
clr c
bra loc_0c5d2
loc_0c5cc: mov #0, r0
set c
loc_0c5d2: pop er3
pop er2
pop er1
rts
sub_0c5e0: mov @(0x16,er4), r0
mov #0x0a, r1
mov #0, e0
divxu r1, er0
rts
sub_0c5f0: mov @(0x14,er4), r0
mov #2730, r1
sub r1, r0
mov #10, r1h
divxu r1h, r0
mov r0l, r0h
rts
sub_0c602: mov #0x5c, er0
add er4, er0
push er4
push er0
mov #off_0c65a, er1
loc_0c618: mov @er1, er2
bne loc_0c622
mov #0, r0h
bra loc_0c650
loc_0c622: mov @(4,er1), r3l
mov @sp, er0 ; pop+push er0
loc_0c62a: mov @er2+, r4h
mov @er0+, r4l
cmp #0x61, r4l
blo loc_0c638
cmp #0x7a, r4l
bhi loc_0c638
add #0xe0, r4l
loc_0c638: cmp r4h, r4l
bne loc_0c640
dec r3l
bne loc_0c62a
loc_0c640: bne loc_0c648
mov @(5,er1), r0h
bra loc_0c650
loc_0c648: add #6, er1
bra loc_0c618
loc_0c650: pop er4
pop er4
rts
off_0c65a: .long nimh ; "NIMH"
.word 1024
.long lion ; "LION"
.word 1025
.long lip_ ; "LIP"
.word 771
.long pbac ; "PBAC"
.word 1028
.long nicd ; "NICD"
.word 1029
.long nizn ; "NIZN"
.word 1030
.long ram_ ; "RAM"
.word 775
.long znar ; "ZNAR"
.word 1032
.long NULL
nimh: .ascii "NIMH"
lion: .ascii "LION"
pbac: .ascii "PBAC"
nicd: .ascii "NICD"
nizn: .ascii "NIZN"
ram_: .ascii "RAM"
znar: .ascii "ZNAR"
lip_: .ascii "LIP"
sub_0c6ac: mov @byte_ffebf4, r0
rts
sub_0c6b4: mov #0x8000, r1
cmp r1, r0
blo loc_0c6c0
mov #0x7fff, r0
loc_0c6c0: mov r0, @byte_ffebf4
rts
sub_0c6c8: jsr sub_0c378
bild #4, @er4
bcs loc_0c6d8
mov @(0x20,er4), r0
bra rts_0c6dc
loc_0c6d8: mov #0, r0
rts_0c6dc: rts
mov #0, r0h
bsr sub_0c6fc
push er0
mov #1, r0h
bsr sub_0c6fc
pop er1
shll r0h
shll r0h
shll r0h
shll r0h
or r1h, r0h
clr c
rts
sub_0c6fc: push er0
jsr sub_0c378
bild #4, @er4
biand #7, @er4
pop er0
bcs loc_0c72a
jsr sub_0b42e
and #3, r0h
mov #byte_0c72e, er1
add r0h, r1l
addx #0, r1h
bcc loc_0c726
inc #1, e1
loc_0c726: mov @er1, r0h
bra rts_0c72c
loc_0c72a: mov #0, r0h
rts_0c72c: rts
byte_0c72e: .byte 5, 7, 13, 5
mov r0h, r2h
mov r0l, r0h
mov r2h, r0l
rts
jsr sub_0c378
jsr sub_0c53a
rts
loc_0c744: push er1
jsr sub_0c378
pop er1
btst #4, @er4
beq loc_0c75c
jsr @er1
clr c
bra rts_0c762
loc_0c75c: mov #-1, r0
set c
rts_0c762: rts
sub_0c764: mov #sub_0c5f0, er1
bra loc_0c744
sub_0c76c: jsr sub_0c378
btst #4, @er4
beq loc_0c780
jsr sub_0c53a
mov r0l, r0h
clr c
bra rts_0c782
loc_0c780: set c
rts_0c782: rts
loc_0c784: push er1
jsr sub_0c378
pop er1
mov r1, @(8,er4)
sub_0c794: mov #-1, r0h
bra loc_0c79a
sub_0c798: mov #0, r0h
loc_0c79a: btst #4, @er4
beq rts_0c7dc
mov @(0x20,er4), r1
mov @(8,er4), r2
mov #-1, r3
cmp r2, r3
beq rts_0c7dc
cmp r2, r1
bhs loc_0c7b8
set c
bra loc_0c7ba
loc_0c7b8: clr c
loc_0c7ba: bxor #1, @er4
bcc rts_0c7dc
bld #1, @er4
bist #1, @er4
cmp #0, r0h
bne rts_0c7dc
push er4
mov @(3,er4), r0h
jsr sub_10cc0
pop er4
rts_0c7dc: rts
sub_0c7de: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0c7f4
mov @(0x18,er4), r0
clr c
bra loc_0c7fa
loc_0c7f4: mov #0, r0
set c
loc_0c7fa: pop er4
rts
sub_0c800: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0c812
mov @(4,er4), r0h
loc_0c812: pop er4
rts
sub_0c818: push er4
push er0
jsr sub_0c378
pop er0
btst #4, @er4
beq loc_0c836
bset #3, @er4
jsr sub_0b90c
loc_0c836: pop er4
rts
sub_0c83c: push er4
mov #0, r0h
bsr sub_0c84e
mov #1, r0h
bsr sub_0c84e
pop er4
rts
sub_0c84e: push er0
jsr sub_0c378
pop er0
btst #4, @er4
beq rts_0c868
bset #5, @er4
jsr sub_0b90c
rts_0c868: rts
sub_0c86a: push er1
mov @long_ffebe4, er1
mov @er1, r0h
pop er1
rts
sub_0c87e: push er4
mov #0, r0h
bld #2, @er4
bist #0, r0h
jsr sub_0b42e
pop er4
cmp #1, r0h
bne loc_0c89a
mov #0x80, r0h
bra loc_0c8a4
loc_0c89a: cmp #2, r0h
bne loc_0c8a2
mov #0x40, r0h
bra loc_0c8a4
loc_0c8a2: mov #0, r0h
loc_0c8a4: mov @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4), er1
mov e1, r2
mov r2h, r2l
and #0xc0, r2l
cmp r2l, r0h
beq loc_0c8c2
zero er1
mov #0, r0l
mov r0, e1
mov er1, @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4)
loc_0c8c2: cmp #0, r0h
beq rts_0c8e4
mov e1, r2
btst #5, r2h
bne rts_0c8e4
exts e1
mov @(0x18,er4), r3
exts er3
add er3, er1
inc r2h
mov e1, r3
mov r2h, r3h
mov r3, e1
mov er1, @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4)
rts_0c8e4: rts
sub_0c8e6: mov @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4), er1
and #0xc000, e1
zero r1
mov er1, @(0x94 - 0x20 & -(type1R && level < 0x01030069),er4)
rts
sub_0c8fa: mov #sanyo_03, er3 ; "SANYO" "03"
bsr sub_0c9ce:16
bcc loc_0c91e
mov #panasonic_03, er3 ; "Panasonic" "03"
bsr sub_0c9ce:16
bcc loc_0c91e
mov #sony_03, er3 ; "SONY" "03"
bsr sub_0c9ce:16
bcs loc_0c932
loc_0c91e: mov #byte_ffeb46, er0
mov @(0x0b,er0), r2l
btst #7, r2l
beq loc_0c98a
mov @(0x1e,er0), r1
bra loc_0c986
loc_0c932: mov #byte_ffeb82 - 0x3c, er0
mov #sanyo, er3 ; "SANYO"
mov #0, r1l
loc_0c940: mov @(0x3c,er0), r2l
mov @er3, r2h
cmp r2l, r2h
bne loc_0c98a
inc r0l
inc r3l
inc r1l
cmp #0x10, r1l
blo loc_0c940
mov #byte_ffeb46, er4
jsr sub_0c5f0
mov @word_ffebe2, r2
bne loc_0c968
mov #0x37, r2l
loc_0c968: cmp r2l, r0h
blo loc_0c98a
mov #byte_ffeb64 - 0x1e, er0
mov @(0x1e,er0), r1
mov @word_ffebe0, r2
bne loc_0c982
mov #0x14, r2
loc_0c982: cmp r2, r1
bhi loc_0c98a
loc_0c986: clr c
bra rts_0c98c
loc_0c98a: set c
rts_0c98c: rts
sanyo: .asciz "SANYO" "\0\0\0\0\0\0\0\0\0"
sanyo_03: .asciz "SANYO" "03" "\0\0\0\0\0\0"
panasonic_03: .asciz "Panasonic" "03" "\0\0"
sony_03: .asciz "SONY" "03" "\0\0\0\0\0\0\0"
sub_0c9ce: mov #byte_ffeb82 - 0x3c, er0
mov #0, r1l
loc_0c9d6: mov @(0x3c,er0), r2l
mov @er3, r2h
cmp r2l, r2h
bne loc_0c9ee
inc r0l
inc r3l
inc r1l
cmp #0x10, r1l
blo loc_0c9d6
clr c
bra loc_0c9ee
loc_0c9ee: set c
rts
sub_0c9f2: push er1
mov r0, r1
extu r0
mov r0, @word_ffebe0
mov r1h, r0l
extu r0
mov r0, @word_ffebe2
pop er1
rts
sub_0ca10: mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
btst #3, r1h
beq loc_0ca26
mov #5, r0l
jsr sub_0ca94
loc_0ca26: btst #4, r1h
beq loc_0ca30
mov #4, r0l
jsr sub_0ca94
loc_0ca30: mov r1, @(0x2e,er4)
rts
sub_0ca36: mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
btst #1, r1l
beq loc_0ca4c
mov #6, r0l
jsr sub_0ca94
loc_0ca4c: mov r1, @(0x0a,er4)
rts
sub_0ca52: mov @byte_ffebf6, r1l
mov @byte_ffebf7, r1h
btst #0, @byte_ffe10a
bne loc_0ca8e
mov #long_ffe0fa, er2
btst #2, @er4
beq loc_0ca7a
mov #long_ffe0ea, er2
loc_0ca7a: mov @(0x0e,er2), r0l
mov @(0x0f,er2), r0h
cmp r0, r1
beq loc_0ca8e
bset #0, @byte_ffe10a
loc_0ca8e: mov r1, @(0x30,er4)
rts
sub_0ca94: push r1
push er4
bsr sub_0cb60:16
mov r0l, @(1,er2)
mov r1l, @(9,er2)
stm er0-er2, @-sp
bsr sub_0c5f0:16
mov r0h, @(0x0c,er2)
mov @(0x16,er4), r1
mov r1l, @(0x0d,er2)
mov r1h, @(0x0e,er2)
mov @(0x20,er4), r1
mov r1l, @(0x0a,er2)
mov r1h, @(0x0b,er2)
mov #0x0f, r0h
mov r0h, @(0,er2)
mov er2, er6
jsr sub_06cc6
mov r0l, @(2,er6)
mov r0h, @(3,er6)
mov r1h, @(4,er6)
mov r1l, @(5,er6)
mov r2h, @(6,er6)
mov r2l, @(7,er6)
mov r3h, @(8,er6)
bsr sub_0cbc2:16
mov r5l, @(0x0f,er6)
ldm @sp+, er0-er2
jsr sub_14e8a
pop er4
pop r1
rts
sub_0cb0a: push er4
mov #0x22, r0l
bsr sub_0cb60
mov r0l, @(1,er2)
mov r1l, @(2,er2)
mov #0x0f, r0l
mov r0l, @(0,er2)
mov #0x72, er3
add er4, er3
mov er2, er5
mov er2, er6
add #0x0c, er6
loc_0cb32: mov @er3+, r0l
mov r0l, @(3,er5)
add #1, er5
cmp er6, er5
blo loc_0cb32
mov @(0x90,er4), r0
mov r0l, @(0x0c,er4)
mov r0h, @(0x0d,er4)
mov @(0x30,er4), r0
mov r0l, @(0x0e,er4)
mov r0h, @(0x0f,er4)
pop er4
rts
sub_0cb60: mov #byte_0cb9a, er3
loc_0cb66: mov @(0,er3), r0h
cmp r0h, r0l
bne loc_0cb8a
cmp #byte_ffeaac, er4
bne loc_0cb80
mov @(2,er3), er2
mov #0, r1l
bra rts_0cb98
loc_0cb80: mov @(6,er3), er2
mov #1, r1l
bra rts_0cb98
loc_0cb8a: add #10, er3
cmp #byte_0cbc2, er3
blo loc_0cb66
rts_0cb98: rts
byte_0cb9a: .byte 0x04, 0xff, 0x00, 0xff, 0xe0, 0x8a, 0x00, 0xff
.byte 0xe0, 0x9a, 0x05, 0xff, 0x00, 0xff, 0xe0, 0xaa
.byte 0x00, 0xff, 0xe0, 0xba, 0x06, 0xff, 0x00, 0xff
.byte 0xe0, 0xca, 0x00, 0xff, 0xe0, 0xda, 0x22, 0xff
.byte 0x00, 0xff, 0xe0, 0xea, 0x00, 0xff, 0xe0, 0xfa
byte_0cbc2:
sub_0cbc2: push er2
mov @(9,er6), r5l
cmp #0, r5l
bne loc_0cbd2
mov #0, r0h
bra loc_0cbd4
loc_0cbd2: mov #1, r0h
loc_0cbd4: push r0
jsr sub_0c3d2
pop r0
bcs loc_0cbea
jsr sub_0b42e
shll #2, r0h
shll r0h
or r0h, r5l
bra loc_0cbec
loc_0cbea: or #0x18, r5l
loc_0cbec: pop er2
rts
sub_0cbf2: bset #0, @byte_ffe10a
rts
sub_0cbfc: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0cc2e
mov @(0x64,er4), r3l
mov @(0x65,er4), r3h
mov @(0x66,er4), r2l
mov @(0x67,er4), r2h
mov @(0x68,er4), r1l
mov @(0x69,er4), r1h
mov @(0x6a,er4), r0l
mov @(0x6b,er4), r0h
clr c
bra loc_0cc3a
loc_0cc2e: mov #0, r0
mov r0, r1
mov r0, r2
mov r0, r3
set c
loc_0cc3a: pop er4
rts
sub_0cc40: push er4
jsr sub_0c378
bild #4, @er4
bcs loc_0cc7a
mov #panasonic, er1 ; "PANASONIC"
loc_0cc54: mov @er1+, r0h
mov @(0x3c,er4), r0l
inc #1, er4
cmp #0x61, r0l
blo loc_0cc66
cmp #0x7a, r0l
bhi loc_0cc66
add #0xe0, r0l
loc_0cc66: cmp r0h, r0l
beq loc_0cc6e
set c
bra loc_0cc78
loc_0cc6e: cmp #0, r0h
bne loc_0cc76
clr c
bra loc_0cc78
loc_0cc76: bra loc_0cc54
loc_0cc78: bra loc_0cc7c
loc_0cc7a: set c
loc_0cc7c: pop er4
rts
panasonic: .asciz "PANASONIC"
sub_0cc8c: mov #0x1000, r0
mov r0, @word_ffec24
mov #0, r0
mov r0, @word_ffec26
rts
sub_0cca2: cmp #1, r0h
beq loc_0ccae
mov #byte_ffeaac, er4
bra rts_0ccb4
loc_0ccae: mov #byte_ffeb46, er4
rts_0ccb4: rts
sub_0ccb6: cmp #0x16, r0h
bne loc_0ccbe
bsr sub_0ccce
bra rts_0cccc
loc_0ccbe: cmp #0x14, r0h
bne loc_0ccc8
jsr sub_0d300
bra rts_0cccc
loc_0ccc8: jsr sub_0d1ce
rts_0cccc: rts
sub_0ccce: mov @word_ffec24, r3
mov #7, r4h
mov #4, r4l
loc_0ccd8: btst r4h, r3h
bne loc_0cce2
dec r4h
dec r4l
bne loc_0ccd8
loc_0cce2: add #-4, r4h
bmi loc_0cd0e
cmp #2, r4h
bhs loc_0cd0e
push er0
push er1
push er2
mov r4h, r0h
jsr sub_0cca2
pop er2
pop er1
pop er0
btst #4, @er4
bne loc_0cd12
loc_0cd0e: jmp loc_0cdba
loc_0cd12: mov #byte_0cf8e, er3
cmp #0x40, r1h
bhi loc_0cdb4:16
mov r1h, r5h
shll r5h
add r5h, r3l
addx #0, r3h
bcc loc_0cd2a
inc #1, e3
loc_0cd2a: mov @er3+, r6h
mov @er3+, r6l
cmp r0l, r6h
beq loc_0cd36
cmp r0l, r6l
bne loc_0cdb4
loc_0cd36: mov #word_0d00e, er3
add r5h, r3l
addx #0, r3h
bcc loc_0cd44
inc #1, e3
loc_0cd44: mov @er3, r3
beq loc_0cd92
mov #0, e3
add er4, er3
cmp #9, r0l
bne loc_0cd62
mov @er3+, r5l
mov @er3, r5h
mov r5h, @er2
adds #1, er2
mov r5l, @er2
mov #0, r0h
mov #0, r0l
bra loc_0cd90
loc_0cd62: cmp #0x0b, r0l
bne loc_0cd8c
mov #byte_0d08e, er5
add r1h, r5l
addx #0, r5h
bcc loc_0cd74
inc #1, e5
loc_0cd74: mov @er5, r5h
mov #0, r5l
loc_0cd78: mov @er3+, r6h
beq loc_0cd86
mov r6h, @er2
adds #1, er2
inc r5l
dec r5h
bne loc_0cd78
loc_0cd86: mov #0, r0h
mov r5l, r0l
bra loc_0cd90
loc_0cd8c: mov #0x12, r0h
mov #0, r0l
loc_0cd90: bra loc_0cdb2
loc_0cd92: mov r1h, r5l
mov #0, r5h
shll #2, r5
mov #off_0d0ce, er3
add r5, r3
bcc loc_0cda4
inc #1, e3
loc_0cda4: mov @er3, er3
beq loc_0cdae
jsr @er3
bra loc_0cdb2
loc_0cdae: mov #0x12, r0h
mov #0, r0l
loc_0cdb2: bra loc_0cdb8
loc_0cdb4: mov #0x12, r0h
mov #0, r0l
loc_0cdb8: bra rts_0cdbe
loc_0cdba: mov #0x10, r0h
mov #0, r0l
rts_0cdbe: rts
sub_0cdc0: mov #0x0c, r3
loc_0cdc4: mov #0, e3
add er4, er3
cmp #9, r0l
bne loc_0cdd8
mov @er3, r0
mov r0l, @er2
adds #1, er2
mov r0h, @er2
bra loc_0cde0
loc_0cdd8: mov @er2, r0l
adds #1, er2
mov @er2, r0h
mov r0, @er3
loc_0cde0: mov #0, r0h
mov #0, r0l
rts
sub_0cde6: mov #0x0e, r3
bra loc_0cdc4
sub_0cdec: mov #0x12, r3
bra loc_0cdc4
sub_0cdf2: push er2
mov @(0x12,er4), r1
mov @(0x22,er4), r2
mov @(0x20,er4), r0
sub r0, r2
mov r1, r0
bmi loc_0ce42
loc_0ce08: beq loc_0ce42
mov r2, r4
beq loc_0ce3c
mov #0, r3l
mov #6, r3h
loc_0ce12: shll r2l
rotxl r2h
rotxl r3l
dec r3h
bne loc_0ce12
mov #0, r5l
shll r4l
rotxl r4h
rotxl r5l
shll r4l
rotxl r4h
rotxl r5l
sub r4, r2
subx r5l, r3l
mov #0, r3h
jsr sub_0c49a
bcc loc_0ce3a
mov #-1, r0
loc_0ce3a: bra loc_0ce40
loc_0ce3c: mov #0, r0
loc_0ce40: bra loc_0ce46
loc_0ce42: mov #-1, r0
loc_0ce46: pop er2
mov r0l, @er2
adds #1, er2
mov r0h, @er2
mov #0, r0h
mov #0, r0l
rts
sub_0ce56: push er2
mov @(0x12,er4), r0
bpl loc_0ce68
mov #0, r1
sub r0, r1
bra loc_0ce6c
loc_0ce68: mov #0, r1
loc_0ce6c: mov @(0x20,er4), r2
mov r1, r0
bra loc_0ce08
sub_0ce74: push er2
mov @(0x12,er4), r0
bmi loc_0ce86
mov #1, r0
jmp loc_0cf0e
loc_0ce86: mov @(0x18,er4), r0
bpl loc_0ce92
not r0h
not r0l
inc #1, r0
loc_0ce92: push er4
mov @(0x16,er4), r1
jsr sub_0c4ee
mov r0, r2
mov r1, r3
mov #10000, r1
jsr sub_0c49a
pop er4
mov @(0x12,er4), r1
not r1h
not r1l
inc #1, r1
mov @(0x18,er4), r2
bpl loc_0cec8
add r1, r0
mov #0, r1
addx #0, r1l
bra loc_0ced8
loc_0cec8: sub r0, r1
mov r1, r0
bpl loc_0ced4
mov #-1, r1
bra loc_0ced8
loc_0ced4: mov #0, r1
loc_0ced8: mov r1, r2
bmi loc_0cf0a
push er4
mov r0, r2
mov r1, r3
mov #0x168, r1
jsr sub_0c49a
mov r4, r1
beq loc_0cef2
inc #1, r0
loc_0cef2: pop er4
mov @(0x20,er4), r1
cmp r0, r1
blo loc_0cf04
mov #1, r0
bra loc_0cf08
loc_0cf04: mov #0, r0
loc_0cf08: bra loc_0cf0e
loc_0cf0a: mov #1, r0
loc_0cf0e: pop er2
mov r0l, @er2
mov r0h, @(1,er2)
mov #0, r0h
mov #0, r0l
rts
sub_0cf1e: mov @(0x22,er4), r1
loc_0cf22: mov @(0x20,er4), r0
push er2
jsr sub_0c48a
pop er2
mov r0l, @er2
adds #1, er2
mov r0h, @er2
mov #0, r0h
mov #0, r0l
rts
sub_0cf3e: mov @(0x32,er4), r1
bra loc_0cf22
sub_0cf44: mov #0, r0h
mov #0, r0l
rts
sub_0cf4a: push er2
bsr sub_0cf60
pop er2
mov r0l, @er2
adds #1, er2
mov r0h, @er2
mov #0, r0h
mov #0, r0l
rts
sub_0cf60: mov @(0x2e,er4), r0
mov @(0x0c,er4), r1
beq loc_0cf72
mov @(0x20,er4), r2
cmp r1, r2
blo loc_0cf76
loc_0cf72: bclr #1, r0h
bra loc_0cf78
loc_0cf76: bset #1, r0h
loc_0cf78: mov @(0x0e,er4), r1
beq loc_0cf86
mov @(0x26,er4), r2
cmp r1, r2
blo loc_0cf8a
loc_0cf86: bclr #0, r0h
bra rts_0cf8c
loc_0cf8a: bset #0, r0h
rts_0cf8c: rts
byte_0cf8e: .byte 0, 9, 8, 9, 8, 9, 0, 9, 8, 9, 0, 9, 0, 9, 0, 9
.byte 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9
.byte 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9
.byte 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0
.byte 0, 11, 0, 11, 0, 11, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9
word_0d00e: .word 10, 0, 0, 16, 0, 0, 0, 0, 20, 22, 24, 26, 28, 30, 0, 32
.word 34, 36, 38, 40, 42, 44, 0, 48, 50, 52, 54, 56, 58, 0, 0, 0
.word 60, 76, 92, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112
.word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144
byte_0d08e: .byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0
.byte 16, 16, 4, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2
off_0d0ce: .long NULL ; 0
.long sub_0cdc0 ; 1
.long sub_0cde6 ; 2
.long NULL ; 3
.long sub_0cdec ; 4
.long sub_0cdf2 ; 5
.long sub_0ce56 ; 6
.long sub_0ce74 ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long sub_0cf1e ; 13
.long sub_0cf3e ; 14
.long NULL ; 15
.long NULL ; 16
.long NULL ; 17
.long NULL ; 18
.long NULL ; 19
.long NULL ; 20
.long NULL ; 21
.long sub_0cf4a ; 22
.long NULL ; 23
.long NULL ; 24
.long NULL ; 25
.long NULL ; 26
.long NULL ; 27
.long NULL ; 28
.long NULL ; 29
.long NULL ; 30
.long NULL ; 31
.long NULL ; 32
.long NULL ; 33
.long NULL ; 34
.long NULL ; 35
.long NULL ; 36
.long NULL ; 37
.long NULL ; 38
.long NULL ; 39
.long NULL ; 40
.long NULL ; 41
.long NULL ; 42
.long NULL ; 43
.long NULL ; 44
.long NULL ; 45
.long NULL ; 46
.long NULL ; 47
.long NULL ; 48
.long NULL ; 49
.long NULL ; 50
.long NULL ; 51
.long NULL ; 52
.long NULL ; 53
.long NULL ; 54
.long NULL ; 55
.long NULL ; 56
.long NULL ; 57
.long NULL ; 58
.long NULL ; 59
.long NULL ; 60
.long NULL ; 61
.long NULL ; 62
.long NULL ; 63
sub_0d1ce: mov #off_0d1fe, er3
mov #0x17, r4h
loc_0d1d6: cmp #9, r0l
beq loc_0d1de
cmp #8, r0l
bne loc_0d1f8
loc_0d1de: cmp r4h, r1h
bhs loc_0d1f8
mov r1h, r1l
mov #0, r1h
mov #0, e1
shll #2, er1
add er1, er3
mov @er3, er3
beq loc_0d1f8
jsr @er3
bra rts_0d1fc
loc_0d1f8: mov #0x12, r0h
mov #0, r0l
rts_0d1fc: rts
off_0d1fe: .long NULL ; 0
.long NULL ; 1
.long NULL ; 2
.long NULL ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long NULL ; 14
.long NULL ; 15
.long NULL ; 16
.long sub_0d2e6 ; 17
.long sub_0d26a ; 18
.long sub_0d294 ; 19
.long sub_0d25a ; 20
.long sub_0d25a ; 21
.long sub_0d25a ; 22
sub_0d25a: cmp #8, r0l
bne loc_0d264
mov #0, r0h
mov #0, r0l
bra rts_0d268
loc_0d264: mov #0x12, r0h
mov #0, r0l
rts_0d268: rts
sub_0d26a: cmp #8, r0l
bne loc_0d28e
mov @er2, r0l
mov @(1,er2), r0h
mov r0, @word_ffec26
btst #0, r0l
beq loc_0d284
jsr sub_0b582
bra loc_0d288
loc_0d284: jsr sub_0b5a4
loc_0d288: mov #0, r0h
mov #0, r0l
bra rts_0d292
loc_0d28e: mov #0x12, r0h
mov #0, r0l
rts_0d292: rts
sub_0d294: cmp #9, r0l
bne loc_0d2e0
push er2
mov @word_ffec26, r0
mov #0, r1
bld #0, r0l
bst #0, r1l
bld #1, r0l
bst #1, r1l
bset #4, r1l
bset #5, r1l
push er1
mov #-1, r0h
jsr sub_0c3d2
pop er1
bist #6, r1h
push er1
jsr sub_074d0
pop er1
bist #7, r1h
pop er2
mov r1l, @er2
mov r1h, @(1,er2)
mov #0, r0h
mov #0, r0l
bra rts_0d2e4
loc_0d2e0: mov #0x12, r0h
mov #0, r0l
rts_0d2e4: rts
sub_0d2e6: cmp #9, r0l
bne loc_0d2fa
mov #2, r0l
mov #0, r0h
mov r0l, @er2
mov r0h, @(1,er2)
mov #0, r0h
mov #0, r0l
bra rts_0d2fe
loc_0d2fa: mov #0x12, r0h
mov #0, r0l
rts_0d2fe: rts
sub_0d300: mov #off_0d30c, er3
mov #5, r4h
jmp loc_0d1d6
off_0d30c: .long NULL ; 0
.long sub_0d320 ; 1
.long NULL ; 2
.long NULL ; 3
.long sub_0d422 ; 4
sub_0d320: cmp #9, r0l
beq loc_0d328
jmp loc_0d3c0
loc_0d328: push er2
mov #0, r0
push er0
mov #0, r0h
jsr sub_0d3e4
pop er1
or r0h, r1h
or r0l, r1l
push er1
mov #1, r0h
jsr sub_0d3e4
pop er1
or r0h, r1h
or r0l, r1l
mov r1l, r0h
beq loc_0d37a
and #0xf0, r0h
bne loc_0d37a
mov @word_ffec24+1, r0l
shlr r0l
shlr r0l
shlr r0l
shlr r0l
and r1l, r0l
bne loc_0d370
mov r1l, r0l
loc_0d370: btst #0, r0l
beq loc_0d378
bset #4, r1l
bra loc_0d37a
loc_0d378: bset #5, r1l
loc_0d37a: mov @word_ffec24, r0
and #0xf0, r0h
or r0h, r1h
push er1
jsr sub_074d0
pop er1
bcs loc_0d3b4
mov r1l, r0h
xor #0xf0, r1l
push er1
mov #0, r0h
jsr sub_0b42e
cmp #2, r0h
beq loc_0d3aa
mov #1, r0h
jsr sub_0b42e
loc_0d3aa: pop er1
cmp #2, r0h
bne loc_0d3b4
xor #0x0f, r1h
loc_0d3b4: pop er2
mov r1l, @er2
mov r1h, @(1,er2)
bra loc_0d3de
loc_0d3c0: mov @er2, r0l
mov @(1,er2), r0h
mov r0, @word_ffec24
and #0x0f, r0h
beq loc_0d3de
cmp #3, r0h
bhs loc_0d3de
bld #1, r0h
mov #0, r0h
bst #0, r0h
jsr sub_0b6c6
loc_0d3de: mov #0, r0h
mov #0, r0l
rts
sub_0d3e4: push er0
jsr sub_0cca2
bld #4, @er4
pop er1
bcc loc_0d41c
push er1
mov r1h, r0h
jsr sub_0b42e
pop er1
mov #0, r2
bset r1h, r2l
cmp #1, r0h
bne loc_0d410
bset r1h, r2h
loc_0d410: cmp #2, r0h
bne loc_0d418
add #4, r1h
bset r1h, r2l
loc_0d418: mov r2, r0
bra rts_0d420
loc_0d41c: mov #0, r0
rts_0d420: rts
sub_0d422: cmp #9, r0l
bne loc_0d436
mov #1, r0h
mov #0x13, r0l
mov r0l, @er2
mov r0h, @(1,er2)
mov #0, r0h
mov #0, r0l
bra rts_0d43a
loc_0d436: mov #0x12, r0h
mov #0, r0l
rts_0d43a: rts
init_adc: b clr mstpcrh.mstp9 ; A/D (Module Stop Control Register H)
mov #0, r0h
mov r0h, @byte_ffff29
jsr clear_ADvals
rts
rts_0d44e: rts
task30: mov @byte_ffff29, r0l
and #0x0f, r0l
beq loc_0d484
mov #0, r0h
jsr sub_0d52c
bcc loc_0d484
jsr sub_0d54a
b set adcsr.scan ; Scan Mode (A/D Control/Status Register)
b clr adcsr.ch2 ; Channel Select 2 (A/D Control/Status Register)
b set adcsr.ch1 ; Channel Select 1 (A/D Control/Status Register)
b set adcsr.ch0 ; Channel Select 0 (A/D Control/Status Register)
b set adcsr.adst ; A/D Start (A/D Control/Status Register)
mov #adcVals0, er5
jsr sub_0d4c0
loc_0d484: mov @byte_ffff29, r0l
and #0x30, r0l
beq loc_0d4bc
shlr #2, r0l
shlr #2, r0l
mov #1, r0h
jsr sub_0d52c
bcc loc_0d4bc
jsr sub_0d54a
b set adcsr.scan ; Scan Mode (A/D Control/Status Register)
b set adcsr.ch2 ; Channel Select 2 (A/D Control/Status Register)
b clr adcsr.ch1 ; Channel Select 1 (A/D Control/Status Register)
b set adcsr.ch0 ; Channel Select 0 (A/D Control/Status Register)
b set adcsr.adst ; A/D Start (A/D Control/Status Register)
mov #adcVals1, er5
jsr sub_0d4c0
loc_0d4bc: clr c
rts
sub_0d4c0: b tst adcsr.adf ; A/D End Flag (A/D Control/Status Register)
nop
beq sub_0d4c0
b clr adcsr.adst ; A/D Start (A/D Control/Status Register)
b clr adcsr.adf ; A/D End Flag (A/D Control/Status Register)
mov r0l, r4l
zero r4h
mov #addrah & M24, er0 ; A/D Data Register AH
zero er1
add er5, er1
loc_0d4e0: mov @er0+, r3l
mov @er0+, r3h
shal r3l
rotxl r3h
bst #0, r3l
shal r3l
rotxl r3h
bst #0, r3l
mov @er1, er2
beq loc_0d4fc
btst r4h, r4l
beq loc_0d4fc
jsr @er2
loc_0d4fc: add #4, er1
inc r4h
cmp #4, r4h
blo loc_0d4e0
rts
clear_ADvals: mov #0, er0
mov #8, r1l
zero er2
loc_0d516: _mov er0, adcVals0,er2
add #4, er2
dec r1l
bne loc_0d516
rts
sub_0d52c: stm er0-er1, @-sp
sub_0d530: mov r0h, r1l
extu r1
extu er1
shll er1
mov @(word_ffec48,er1), r0
jsr cmpTick
loc_0d544: ldm @sp+, er0-er1
rts
sub_0d54a: stm er0-er1, @-sp
mov r0h, r0l
extu r0
extu er0
shll er0
mov @(word_ffec4c,er0), r1
mov @tick, e1
add r1, e1
mov e1, @(word_ffec48,er0)
ldm @sp+, er0-er1
rts
sub_0d574: bset r0h, @byte_ffff29
rts
sub_0d57e: bclr r0h, @byte_ffff29
rts
sub_0d588: push er0
mov r0h, r0l
extu r0
extu er0
shll #2, er0
_mov er1, adcVals0,er0
pop er0
rts
sub_0d5a4: stm er0-er1, @-sp
mov r0h, r0l
extu r0
extu er0
shll er0
mov r1, @(word_ffec4c,er0)
mov @tick, e1
add r1, e1
mov e1, @(word_ffec48,er0)
ldm @sp+, er0-er1
rts
sub_0d5ce: mov #task31o, r0h
mov #249, r1
jsr schedBackTaskDelayed
bclr #3, @byte_ffff2a:8
rts
sub_0d5de: bsr sub_0d5ce
bset #3, @byte_ffff2a:8
rts
sub_0d5e6: bsr sub_0d5f6
mov r0h, r0l
shll #2, r0l
shll #2, r0l
or r0l, r0h
jsr sub_10f42
rts
sub_0d5f6: zero er2
jsr sub_0c86a
mov r0h, r2l
dec r2l
mov @(byte_0d78a,er2), r0h
rts
task31_3: bsr task31_1_2
bld #3, @byte_ffff2a:8
rts
task31_1_2: mov #task31o, r0h
jsr checkSchedTask
bcc loc_0d624
bsr sub_0d5ce
bsr sub_0d62e
jsr sub_0d7c2
loc_0d624: mov #task31o, r0h
jsr schedFrontTask
clr c
rts
sub_0d62e: sub #8, sp
mov #0, r0h
mov sp, er6
adds #2, er6
mov er6, @(4,sp)
loc_0d640: mov r0h, @sp
bsr sub_0d726:16
mov @(4,sp), er6
mov r0h, @er6
adds #1, er6
mov er6, @(4,sp)
mov r0h, r0l
mov @sp, r0h
jsr sub_10e2e
mov @sp, r0h
inc r0h
cmp #1, r0h
bls loc_0d640
mov @(2,sp), r0
add #8, sp
bld #7, r0h
bor #7, r0l
bcs loc_0d67a
mov #0, r0h
bra loc_0d6f8
loc_0d67a: btst #7, r0h
bne loc_0d682
mov r0l, r0h
bra loc_0d69a
loc_0d682: btst #7, r0l
bne loc_0d68a
mov r0h, r0l
bra loc_0d69a
loc_0d68a: mov r0, r1
and #0xf0f, r1
cmp r1h, r1l
bls loc_0d69a
mov r0h, r1h
mov r0l, r0h
mov r1h, r0l
loc_0d69a: mov r0, r1
and #0xf0f, r1
cmp #0x0f, r1h
bne loc_0d6a6
mov #0, r1h
loc_0d6a6: cmp #0x0f, r1l
bne loc_0d6ac
mov #0, r1l
loc_0d6ac: bld #5, r0h
bor #5, r0l
bcc loc_0d6cc
stm er0-er1, @-sp
bsr sub_0d5f6:16
mov r0h, r2h
ldm @sp+, er0-er1
cmp r2h, r1l
blo loc_0d6c8
mov #4, r0h
bra loc_0d6ca
loc_0d6c8: mov #2, r0h
loc_0d6ca: bra loc_0d6f8
loc_0d6cc:
bld #4, r0h
bor #4, r0l
bcs loc_0d6f2
push er1
jsr sub_074d0
bcc loc_0d6e6
jsr sub_01276
bcc loc_0d6e6
mov #0, r0h
bra loc_0d6f4
loc_0d6e6: mov @sp, er1 ; pop+push er1
cmp #1, r1h
bls loc_0d6f2
mov #3, r0h
bra loc_0d6f4
loc_0d6f2: mov #1, r0h
loc_0d6f4: pop er1
loc_0d6f8: mov @byte_ffe3d6, r0l
cmp r0h, r0l
beq rts_0d724
mov r0h, @byte_ffe3d6
mov #4, r0h
jsr sub_068e6
mov #5, r0h
jsr sub_068e6
mov @byte_ffe3d6, r0h
mov #off_0d79a, er1
jsr switch_er1_r0h
rts_0d724: rts
sub_0d726: push er0
jsr sub_0b42e
cmp #1, r0h
bne loc_0d736
mov #0xc0, r1h
bra loc_0d740
loc_0d736: cmp #2, r0h
bne loc_0d73e
mov #0xa0, r1h
bra loc_0d740
loc_0d73e: mov #0x80, r1h
loc_0d740: mov @sp, er0 ; pop+push er0
push er1
jsr sub_0c35c
pop er1
bcs loc_0d780
bld #0, r0h
bst #4, r1h
mov @sp, er0 ; pop+push er0
push er1
jsr sub_0c38c
pop er1
bcs loc_0d77c
zero er2
mov r0l, r2l
and #0x0f, r2l
mov @(byte_0d78a,er2), r0l
or r0l, r1h
bra loc_0d77e
loc_0d77c: or #0x0f, r1h
loc_0d77e: bra loc_0d782
loc_0d780: mov #0, r1h
loc_0d782: mov r1h, r0h
pop er1
rts
byte_0d78a: .byte 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
off_0d79a: case 0 rts_0d7a4 sub_0d7a6 sub_0d7ae sub_0d7b6
case 4 sub_0d7bc
rts_0d7a4: rts
sub_0d7a6: mov #4, r0h
jsr sub_0693c
rts
sub_0d7ae: mov #4, r0h
jsr sub_068e2
rts
sub_0d7b6: mov #5, r0h
jmp sub_068e2
sub_0d7bc: mov #5, r0h
jmp loc_06956
sub_0d7c2: mov #byte_0d85a, er3
mov #2, r4h
mov #long_ffec52, er5
loc_0d7d0: mov @(0,er3), r0h
mov #9, r0l
mov @(1,er3), r1h
mov #2, r1l
push er3
push er4
push er5
push er0
mov sp, er2
adds #2, er2
jsr sub_0ccb6
pop er1
pop er5
pop er4
pop er3
cmp #0, r0h
bne loc_0d84a
mov @er5, r0
xor r1h, r0h
xor r1l, r0l
mov @(2,er3), r2h
mov @(3,er3), r2l
and r2h, r0h
bne loc_0d81e
and r2l, r0l
beq loc_0d84a
loc_0d81e: mov @(0,er3), r0h
push er3
push er4
push er5
push er1
jsr sub_10fc0
pop er1
pop er5
pop er4
pop er3
bcs loc_0d84a
mov r1, @er5
loc_0d84a: add #4, er3
adds #2, er5
dec r4h
bne loc_0d7d0:16
rts
byte_0d85a: .byte 0x12, 0x13, 0x00, 0xc0, 0x14, 0x01, 0xff, 0x0f
sub_0d862: bset #3, @byte_ffff2a:8
rts
sub_0d868: b clr mstpcrh.mstp9 ; A/D (Module Stop Control Register H)
mov #0, r0h
mov r0h, @byte_ffe3d7
setOutL 4 5 ; Pin P45/TMRI1/HIRQ12/CSYNCI
mov #task32o, r0h
mov #300, r1
jsr schedBackTaskDelayed
mov #-1, r0h
mov r0h, @byte_ffe525
mov #-1, r0
mov r0, @word_ffec5a
mov r0, @word_ffec5c
mov #0, r0h
loc_0d8a8: mov #sub_0de34, er1
jsr sub_0d588
inc r0h
cmp #4, r0h
blo loc_0d8a8
mov #0, r0h
mov #2, r1
jsr sub_0d5a4
rts
sub_0d8c4: mov @byte_ffe3d7, r0h
cmp #6, r0h
bne sub_0d8d6
mov #5, r0h
mov r0h, @byte_ffe3d7
sub_0d8d6: mov @byte_ffe3d7, r0h
cmp #0x0c, r0h
blo rts_0d8ea
mov #task32o, r0h
mov #0, r1
jsr schedBackTaskDelayed
rts_0d8ea: rts
task32: mov @byte_ffe3d7, r0h
mov #off_0d8fc, er1
jmp switch_er1_r0h
off_0d8fc: case 0 sub_0d944 sub_0d91a sub_0da22 sub_0d944
case 4 sub_0da2e sub_0da48 sub_0d99c sub_0dad6
case 8 sub_0d98a sub_0d9d8 sub_0daf0 sub_0db3a
case 12 sub_0d9ee sub_0d95c sub_0d97a
sub_0d91a: mov @byte_ffe525, r0h
cmp #-1, r0h
beq loc_0d938
mov #0, r0h
jsr sub_0b42e
cmp #2, r0h
beq loc_0d938
mov #1, r0h
jsr sub_0b42e
cmp #2, r0h
bne loc_0d940
loc_0d938: b set p45dr ; Pin P45/TMRI1/HIRQ12/CSYNCI (Port 4 Data Register)
bra sub_0d9dc:16
loc_0d940: mov #4, r0h
bra sub_0d970
sub_0d944: mov #task32o, r0h
jsr checkSchedTask
bcc loc_0d952
bsr sub_0d9dc:16
bra rts_0d95a
loc_0d952: mov #task32o, r0h
jsr schedFrontTask
set c
rts_0d95a: rts
sub_0d95c: mov #task32o, r0h
jsr checkSchedTask
bcs loc_0d96e
mov #task32o, r0h
jsr schedFrontTask
clr c
bra rts_0d978
loc_0d96e: mov #1, r0h
sub_0d970: mov r0h, @byte_ffe3d7
set c
rts_0d978: rts
sub_0d97a: jsr sub_074d0
bcs loc_0d986
mov #1, r0h
bsr sub_0d970
bra rts_0d988
loc_0d986: bsr sub_0d95c
rts_0d988: rts
sub_0d98a: mov #byte_ffe523, er0
mov @er0, r1h
dec r1h
mov r1h, @er0
beq sub_0d9dc
mov #5, r0h
bra sub_0d970
sub_0d99c: mov @word_ffec62, r0
mov @word_ffec60, r1
mov @word_ffec5e, r2
sub r1, r0
sub r2, r0
shar r0h
rotxr r0l
shar r0h
rotxr r0l
shar r0h
rotxr r0l
mov @byte_ffe523, r1l
shll r1l
mov #word_ffec5e, er2
sub r1l, r2l
subx #0, r2h
bcc loc_0d9d4
dec #1, e2
loc_0d9d4: mov r0, @er2
bra sub_0d9dc
sub_0d9d8: b clr p45dr ; Pin P45/TMRI1/HIRQ12/CSYNCI (Port 4 Data Register)
sub_0d9dc: mov @byte_ffe3d7, r0h
inc r0h
mov r0h, @byte_ffe3d7
set c
rts
sub_0d9ee: jsr sub_01276
bcs loc_0d9fa
mov #250, r1
bra loc_0da0a
loc_0d9fa: jsr sub_074d0
bcs loc_0da06
mov #2000, r1
bra loc_0da0a
loc_0da06: mov #10000, r1
loc_0da0a: mov #task32o, r0h
jsr schedBackTaskDelayed
jsr sub_074d0
bcs loc_0da1a
bsr sub_0d9dc
bra rts_0da20
loc_0da1a: mov #0x0e, r0h
bsr sub_0d970:16
rts_0da20: rts
sub_0da22: mov #task32o, r0h
mov #2, r1
jsr schedBackTaskDelayed
bra sub_0d9dc
sub_0da2e: mov #byte_0dad2, er0
mov er0, @long_ffec64
mov #4, r1h
mov r1h, @byte_ffe523
bsr sub_0daa4
bra sub_0d9dc
sub_0da48: mov @byte_ffe525, r0h
cmp #-1, r0h
beq loc_0da7e
mov @long_ffec64, er0
mov @er0, r0h
cmp #0, r0h
bne loc_0da72
mov #0, r0h
loc_0da62: jsr sub_0b42e
cmp #2, r0h
beq loc_0da70
mov #7, r0h
jmp sub_0d970
loc_0da70: bra loc_0da7e
loc_0da72: cmp #2, r0h
bne loc_0da7a
mov #1, r0h
bra loc_0da62
loc_0da7a: b clr p45dr ; Pin P45/TMRI1/HIRQ12/CSYNCI (Port 4 Data Register)
loc_0da7e: mov @long_ffec64, er0
mov @er0, r0h
jsr sub_0d574
mov @byte_ffe525, r0l
bset r0h, r0l
mov r0l, @byte_ffe525
mov #task32o, r0h
jsr schedFrontTask
jmp sub_0d9dc
sub_0daa4: mov #0x0a, r0h
mov r0h, @byte_ffe524
mov #0, r0
mov r0, @word_ffec60
mov #0x7fff, r0
mov r0, @word_ffec5e
mov #0, r0
mov r0, @word_ffec62
mov r0l, @byte_ffe526
rts
byte_0dad2: .byte 0, 2, 1, 3
sub_0dad6: mov @long_ffec64, er0
adds #1, er0
mov er0, @long_ffec64
jsr sub_0daa4
jmp sub_0d9dc
sub_0daf0: jsr sub_074d0
bcc loc_0db2e
jsr sub_01272
bcc loc_0db2e
mov #-1, r0h
jsr sub_0db7a
bcs loc_0db2e
mov #0x51, r0
mov @byte_ffe525, r2h
btst #0, r2h
beq loc_0db1c
mov @word_ffec56, r1
cmp r0, r1
bhs loc_0db2e
loc_0db1c: btst #2, r2h
beq loc_0db2e
mov @word_ffec58, r1
cmp r0, r1
bhs loc_0db2e
jsr sub_017a0
loc_0db2e: mov #0, r0h
mov r0h, @byte_ffe525
jmp sub_0d9dc
sub_0db3a: mov #0, r0h
bsr sub_0db46
mov #1, r0h
bsr sub_0db46
jmp sub_0d9dc
sub_0db46: push er0
bsr sub_0db7a
bcc loc_0db54
jsr sub_0c400
set c
loc_0db54: pop er0
btst r0h, @byte_ffff2b:8
stc ccr, r0l
bld #0, r0l
bxor #2, r0l
bcc rts_0db78
bnot r0h, @byte_ffff2b:8
push r0
jsr sub_0b90c
pop r0
jsr sub_0b4a6
jsr sub_0cbf2
rts_0db78: rts
sub_0db7a: push er0
bsr sub_0dbb2
pop er0
bcs loc_0db8a
set c
bra rts_0dbb0
loc_0db8a: cmp #0, r0h
bne loc_0db96
mov @word_ffec5a, r1
bra loc_0dbaa
loc_0db96: cmp #-1, r0h
bne loc_0dba4
mov #0, r0h
bsr sub_0db7a
bcc rts_0dbb0
mov #1, r0h
bra sub_0db7a
loc_0dba4: mov @word_ffec5c, r1
loc_0dbaa: mov #880, r2
cmp r1, r2
rts_0dbb0: rts
sub_0dbb2: jsr sub_0126e
bcc loc_0dbbe
jsr sub_074d0
bcc loc_0dbbe
loc_0dbbe: set c
rts
sub_0dbc2: cmp #1, r0h
beq loc_0dbce
mov @word_ffec5a, r0
bra loc_0dbd4
loc_0dbce: mov @word_ffec5c, r0
loc_0dbd4: mov #word_0dc10, er1
mov @er1, e0
cmp e0, r0
bhs rts_0dc0e
mov #word_0de30, er3
loc_0dbe6: mov er3, er2
sub er1, er2
shlr #2, er2
shlr er2
bcc loc_0dbf2
inc #1, er2
loc_0dbf2: shll #2, er2
add er1, er2
cmp er3, er2
bne loc_0dc00
mov @(2,er1), r0
bra rts_0dc0e
loc_0dc00: mov @er2, e0
cmp e0, r0
bhi loc_0dc0a
mov er2, er1
bra loc_0dc0c
loc_0dc0a: mov er2, er3
loc_0dc0c: bra loc_0dbe6
rts_0dc0e: rts
word_0dc10: .word 917, -15
.word 912, -14
.word 908, -13
.word 903, -12
.word 898, -11
.word 893, -10
.word 888, -9
.word 882, -8
.word 877, -7
.word 871, -6
.word 865, -5
.word 859, -4
.word 853, -3
.word 847, -2
.word 840, -1
.word 834, 0
.word 827, 1
.word 820, 2
.word 813, 3
.word 806, 4
.word 799, 5
.word 791, 6
.word 784, 7
.word 776, 8
.word 768, 9
.word 761, 10
.word 753, 11
.word 745, 12
.word 736, 13
.word 728, 14
.word 719, 15
.word 711, 16
.word 702, 17
.word 694, 18
.word 685, 19
.word 676, 20
.word 667, 21
.word 659, 22
.word 650, 23
.word 640, 24
.word 632, 25
.word 622, 26
.word 613, 27
.word 604, 28
.word 595, 29
.word 586, 30
.word 577, 31
.word 568, 32
.word 558, 33
.word 549, 34
.word 540, 35
.word 531, 36
.word 522, 37
.word 513, 38
.word 504, 39
.word 495, 40
.word 487, 41
.word 478, 42
.word 469, 43
.word 461, 44
.word 452, 45
.word 444, 46
.word 435, 47
.word 427, 48
.word 419, 49
.word 411, 50
.word 403, 51
.word 395, 52
.word 387, 53
.word 379, 54
.word 371, 55
.word 364, 56
.word 356, 57
.word 349, 58
.word 342, 59
.word 335, 60
.word 328, 61
.word 321, 62
.word 314, 63
.word 307, 64
.word 301, 65
.word 295, 66
.word 288, 67
.word 282, 68
.word 276, 69
.word 270, 70
.word 264, 71
.word 258, 72
.word 253, 73
.word 247, 74
.word 242, 75
.word 237, 76
.word 231, 77
.word 226, 78
.word 221, 79
.word 216, 80
.word 212, 81
.word 207, 82
.word 202, 83
.word 198, 84
.word 193, 85
.word 189, 86
.word 185, 87
.word 181, 88
.word 177, 89
.word 173, 90
.word 169, 91
.word 166, 92
.word 162, 93
.word 158, 94
.word 155, 95
.word 151, 96
.word 148, 97
.word 144, 98
.word 141, 99
.word 138, 100
.word 135, 101
.word 132, 102
.word 129, 103
.word 126, 104
.word 124, 105
.word 121, 106
.word 118, 107
.word 116, 108
.word 113, 109
.word 111, 110
.word 110, 111
.word 108, 112
.word 106, 113
.word 103, 114
.word 101, 115
.word 99, 116
.word 97, 117
.word 95, 118
.word 93, 119
.word 91, 120
word_0de30: .word 82, 125
sub_0de34: stm er0-er2, @-sp
mov @word_ffec60, r1
cmp r1, r3
ble loc_0de48
mov r3, @word_ffec60
loc_0de48: mov @word_ffec5e, r1
cmp r1, r3
bge loc_0de58
mov r3, @word_ffec5e
loc_0de58: mov @word_ffec62, r1
add r3, r1
mov r1, @word_ffec62
mov @byte_ffe526, r0l
inc r0l
mov r0l, @byte_ffe526
mov @byte_ffe524, r0h
cmp r0h, r0l
blo loc_0de92
mov @long_ffec64, er0
mov @er0, r0h
jsr sub_0d57e
mov #task32o, r0h
jsr schedBackTask
loc_0de92: ldm @sp+, er0-er2
rts
rts_0de98: rts
sub_0de9a: b set icrc.icrc1 ; LPCH (Interrupt Control Register C)
b ld pc2pin ; Pin PC2 (Port C Input Data Register)
bst #0, @byte_ffff2d:8
bst #5, @byte_ffe593 ; 0x34
b ld pc3pin ; Pin PC3 (Port C Input Data Register)
bst #3, @byte_ffff2d:8
bst #6, @byte_ffe56d ; 0x0e
setOutH c 2 ; Pin PC2
setOutL c 3 ; Pin PC3
mov #task33o, r0h
jsr schedFrontTask
mov #0, r0h
mov r0h, @byte_ffff2c
mov r0h, @byte_ffe554
mov r0h, @byte_ffe555
jsr sub_0e12e
mov #4, r0h
mov #sub_0e216, er1
jsr sub_0d588
mov #5, r0h
mov #sub_0e234, er1
jsr sub_0d588
rts
task33_2_3:
clr c
rts
task33_1:
btst #6, @byte_ffff2d
beq loc_0df40
mov #task33o, r0h
jsr checkSchedTask
bcc loc_0e0e4:16
jsr sub_0e12e
bclr #6, @byte_ffff2d
loc_0df40: btst #1, @byte_ffff2d:8
beq loc_0df4a
jsr sub_0e2f8
loc_0df4a: btst #0, @byte_ffff2c:8
beq loc_0e0e4:16
mov @byte_ffe52a, r0l
mov @byte_ffe530, r2l
shlr r0l
cmp r2l, r0l
blo loc_0e0e4:16
mov @byte_ffe527, r0l
shlr r0l
cmp r2l, r0l
blo loc_0e0e4:16
bset #2, @byte_ffff2d:8
btst #6, @byte_ffff2c:8
beq loc_0df96
mov @tick, r0
mov r0l, @twr1 ; LPC Bidirectional Data Register 1
mov r0h, @twr2 ; LPC Bidirectional Data Register 2
bclr #6, @byte_ffff2c:8
bset #7, @byte_ffff2c:8
bra loc_0dfce
loc_0df96: btst #7, @byte_ffff2c:8
beq loc_0dfce
mov @byte_ffe556, r0l
inc r0l
cmp #100, r0l
blo loc_0dfc8
mov @tick, r0
mov r0l, @twr3 ; LPC Bidirectional Data Register 3
mov r0h, @twr4 ; LPC Bidirectional Data Register 4
mov #0, r0l
mov r0l, @twr15 ; LPC Bidirectional Data Register 15
b set hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
bclr #7, @byte_ffff2c:8
mov #0, r0l
loc_0dfc8: mov r0l, @byte_ffe556
loc_0dfce: zero er0
zero er1
loc_0dfd6: mov @(word_ffec68,er0), e1
add e1, r1
add #2, er0
dec r2l
bne loc_0dfd6
jsr sub_0e176
mov @byte_ffe530, r2l
extu r2
extu er1
divxu r2, er1
btst #7, @byte_ffff2d:8
beq loc_0e00e
mov @word_ffecf0, r1
inc #1, r1
mov r1, @word_ffecf0
loc_0e00e: mov r1, @long_ffecca+0x1e
mov @byte_ffe530, r2l
zero er0
zero er1
loc_0e022: mov @(word_ffeca8,er0), e1
add e1, r1
add #2, er0
dec r2l
bne loc_0e022
jsr sub_0e18e
mov @byte_ffe530, r2l
extu r2
extu er1
divxu r2, er1
btst #7, @byte_ffff2d:8
beq loc_0e05a
mov @word_ffecf2, r1
inc #1, r1
mov r1, @word_ffecf2
loc_0e05a: mov r1, @word_ffecea
set i
btst #1, @byte_ffff2c:8
beq loc_0e0e2:16
mov @byte_ffe528, r0l
extu r0
extu er0
mov @long_ffecca+0x1e, r1
mov r1, @(word_ffec88,er0)
add #2, r0l
cmp #0x12, r0l
blo loc_0e08a
mov #0, r0l
loc_0e08a: mov r0l, @byte_ffe528
mov @byte_ffe52b, r0l
extu r0
extu er0
mov @word_ffecea, r1
mov r1, @(word_ffecc8,er0)
add #2, r0l
cmp #0x12, r0l
blo loc_0e0b0
mov #0, r0l
loc_0e0b0: mov r0l, @byte_ffe52b
mov @byte_ffe52f, r0l
inc r0l
cmp #9, r0l
blo loc_0e0dc
mov @byte_ffe528, r0l
mov r0l, @byte_ffe529
mov @byte_ffe52b, r0l
mov r0l, @byte_ffe52c
mov #9, r0l
loc_0e0dc: mov r0l, @byte_ffe52f
loc_0e0e2: clr i
loc_0e0e4: bclr #2, @byte_ffff2d:8
clr c
rts
mov #0, r1l
mov #0x20, r1h
loc_0e0f0: shll er0
addx #0, r1l
dec r1h
bne loc_0e0f0
rts
sub_0e0fa:
b set pc2odr ; Pin PC2 (Port C Output Data Register)
rts
sub_0e102:
bld #5, @byte_ffff2d
bcc loc_0e128
b clr pc2odr ; Pin PC2 (Port C Output Data Register)
jsr sub_0e12e
mov #task33o, r0h
mov #10, r1
jsr schedBackTaskDelayed
bset #6, @byte_ffff2d
loc_0e128: set c
rts
rts_0e12c: rts
sub_0e12e: bclr #1, @byte_ffff2c:8
bclr #3, @byte_ffff2c:8
bclr #0, @byte_ffff2e:8
bclr #1, @byte_ffff2e:8
mov #0, r0h
mov r0h, @byte_ffe527
mov r0h, @byte_ffe528
mov r0h, @byte_ffe529
mov r0h, @byte_ffe52a
mov r0h, @byte_ffe52b
mov r0h, @byte_ffe52c
mov r0h, @byte_ffe52f
mov r0h, @byte_ffe52d
jsr sub_048e4
rts
sub_0e176: stm er0-er1, @-sp
mov #byte_ffe527, er0
mov #word_ffec68, er1
bsr sub_0e1a6
ldm @sp+, er0-er1
rts
sub_0e18e: stm er0-er1, @-sp
mov #byte_ffe52a, er0
mov #word_ffeca8, er1
bsr sub_0e1a6
ldm @sp+, er0-er1
rts
sub_0e1a6: push er0
mov @er0, r2l
zero r2h
mov er1, er0
add #2, er0
loc_0e1b6: mov @er0, e2
mov e2, @er1
add #2, er0
add #2, er1
add #2, r2h
cmp r2l, r2h
blo loc_0e1b6
subx #2, r2l
pop er0
mov r2l, @er0
rts
sub_0e1d6: push er0
bcc loc_0e1ec
bclr #3, @byte_ffff2c:8
mov r0l, @byte_ffe52d
bset #1, @byte_ffff2c:8
bra loc_0e208
loc_0e1ec: btst #1, @byte_ffff2c:8
beq loc_0e208
btst #3, @byte_ffff2c:8
bne loc_0e208
mov @byte_ffe52e, r0l
inc r0l
cmp #0x0a, r0l
bls loc_0e20a
bset #3, @byte_ffff2c:8
loc_0e208: mov #0, r0l
loc_0e20a: mov r0l, @byte_ffe52e
pop er0
rts
sub_0e216: stm er0-er2, @-sp
btst #0, @byte_ffff2c:8
beq loc_0e22e
mov #byte_ffe527, er0
mov #word_ffec68, er1
bsr sub_0e252
loc_0e22e: ldm @sp+, er0-er2
rts
sub_0e234: stm er0-er2, @-sp
btst #0, @byte_ffff2c:8
beq loc_0e24c
mov #byte_ffe52a, er0
mov #word_ffeca8, er1
bsr sub_0e252
loc_0e24c: ldm @sp+, er0-er2
rts
sub_0e252: mov @er0, r2l
extu r2
extu er2
add er1, er2
mov r3, @er2
mov @er0, r2l
add #2, r2l
cmp #0x20, r2l
blo loc_0e268
bsr sub_0e1a6:16
loc_0e268: mov r2l, @er0
rts
sub_0e26c: btst #1, @byte_ffff2d:8
bne loc_0e278
btst #4, @byte_ffff2d:8
beq loc_0e27c
loc_0e278: mov #6, r0h
bra loc_0e2f2
loc_0e27c: mov @twr1, r1l ; LPC Bidirectional Data Register 1
mov @twr2, r1h ; LPC Bidirectional Data Register 2
cmp #0, r1
bne loc_0e292
mov #task33o, r0h
jsr schedFrontTask
bra loc_0e2d0
loc_0e292: cmp #500, r1
bls loc_0e29c
mov #3, r0h
bra loc_0e2f2
loc_0e29c: mov r1, @byte_ffecee
mov @twr3, r0h ; LPC Bidirectional Data Register 3
beq loc_0e2b4
cmp #8, r0h
bhi loc_0e2b4
mov r0h, @byte_ffe531
bra loc_0e2b8
loc_0e2b4: mov #3, r0h
bra loc_0e2f2
loc_0e2b8: mov #9 - 4 & (level < 0x01000062), r0h
mov r0h, @byte_ffe533
bra loc_0e2c6
mov #3, r0h
bra loc_0e2f2
loc_0e2c6: mov #task33o, r0h
jsr schedBackTask
bset #1, @byte_ffff2d:8
loc_0e2d0: mov #4, r0h
jsr sub_0d57e
mov #5, r0h
jsr sub_0d57e
bclr #0, @byte_ffff2c:8
mov #0, r0h
mov #0, r0
mov r0, @word_ffecf0
mov r0, @word_ffecf2
loc_0e2f2: mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e2f8: mov @byte_ffecee, r1
mov r1, @word_ffecec
mov #1000, er0
divxu r1, er0
mov r0, r1
mov #1, r0h
jsr sub_0d5a4
mov @byte_ffe531, r0h
mov r0h, @byte_ffe530
mov #4, r0h
jsr sub_0d574
mov #5, r0h
jsr sub_0d574
mov @byte_ffe533, r0h
mov r0h, @byte_ffe532
jsr sub_0e12e
bset #0, @byte_ffff2c:8
bclr #1, @byte_ffff2d:8
rts
sub_0e346: btst #4, @byte_ffff2d:8
bne loc_0e44e:16
bld #0, @byte_ffff2c:8
band #1, @byte_ffff2c:8
bcc loc_0e44e:16
jsr sub_0e45a
mov @byte_ffe52f, r0l
beq loc_0e44e:16
cmp #2, r0l
blo loc_0e376
mov #2, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
subx #2, r0l
bra loc_0e37c
loc_0e376: mov r0l, @twr1 ; LPC Bidirectional Data Register 1
mov #0, r0l
loc_0e37c: mov r0l, @twr12 ; LPC Bidirectional Data Register 12
mov r0l, @byte_ffe52f
mov @byte_ffe52d, r0h
mov @twr1, r0l ; LPC Bidirectional Data Register 1
mov #twr2 & M24, er1 ; LPC Bidirectional Data Register 2
loc_0e396:
mov @byte_ffe529, r2l
extu r2
extu er2
mov @(word_ffec88,er2), r3
mov r3l, @er1
add #1, er1
mov r3h, @er1
add #1, er1
add #2, r2l
cmp #0x12, r2l
blo loc_0e3c0
mov #0, r2l
loc_0e3c0: mov r2l, @byte_ffe529
mov @byte_ffe52c, r2l
extu r2
extu er2
mov @(word_ffecc8,er2), r3
mov r3l, @er1
add #1, er1
mov r3h, @er1
add #1, er1
mov r0h, @er1
add #1, er1
add #2, r2l
cmp #0x12, r2l
blo loc_0e3f8
mov #0, r2l
loc_0e3f8: mov r2l, @byte_ffe52c
dec r0l
bne loc_0e396
jsr sub_074bc
bst #7, @twr13 ; LPC Bidirectional Data Register 13
jsr sub_048d0
bst #6, @twr13 ; LPC Bidirectional Data Register 13
jsr sub_048da
bst #5, @twr13 ; LPC Bidirectional Data Register 13
jsr sub_048fa
bld #0, @byte_ffff2e:8
bst #4, @twr13 ; LPC Bidirectional Data Register 13
bld #1, @byte_ffff2e:8
bst #3, @twr13 ; LPC Bidirectional Data Register 13
bclr #0, @byte_ffff2e:8
bclr #1, @byte_ffff2e:8
btst #3, @byte_ffff2c:8
beq loc_0e44a
mov #5, r0h
bra loc_0e454
loc_0e44a: mov #0, r0h
bra loc_0e454
loc_0e44e: mov #0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
loc_0e454: mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e45a: mov #twr1 & M24, er0 ; LPC Bidirectional Data Register 1
mov #0, r1l
mov #0x0e, r1h
loc_0e464: mov r1l, @er0
inc #1, er0
dec r1h
bne loc_0e464
rts
sub_0e46e: mov #0, r0l
btst #0, @byte_ffff2d:8
beq loc_0e480
mov #1, r0l
btst #3, @byte_ffff2d:8
bne loc_0e480
mov #3, r0l
loc_0e480: mov r0l, @twr1 ; LPC Bidirectional Data Register 1
mov #3, r0l
mov r0l, @twr2 ; LPC Bidirectional Data Register 2
mov #0, r0l
mov r0l, @twr3 ; LPC Bidirectional Data Register 3
mov r0l, @twr4 ; LPC Bidirectional Data Register 4
mov #0, r0l
mov r0l, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e49c: mov @twr1, r0l ; LPC Bidirectional Data Register 1
beq loc_0e4a6
clr c
bra loc_0e4a8
loc_0e4a6: set c
loc_0e4a8: b st pc2odr ; Pin PC2 (Port C Output Data Register)
bist #5, @byte_ffff2d
mov #0, r0l
mov r0l, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e4be: btst #2, @byte_ffff2c:8
bne loc_0e4c8
mov #4, r0l
bra loc_0e516
loc_0e4c8: mov @byte_ffe554, r0l
extu r0
extu er0
mov #0, r2l
mov @byte_ffe555, r2h
mov #twr2 & M24, er1 ; LPC Bidirectional Data Register 2
loc_0e4e0: mov @(byte_ffe534,er0), r3l
mov r3l, @er1
inc r2l
inc #1, er1
inc #1, er0
cmp r2h, r0l
bhs loc_0e4fc
cmp #twr12 & M24, er1 ; LPC Bidirectional Data Register 12
blo loc_0e4e0
loc_0e4fc: mov r2l, @twr1 ; LPC Bidirectional Data Register 1
mov r0l, @byte_ffe554
sub r0l, r2h
mov r2h, @twr12 ; LPC Bidirectional Data Register 12
bne loc_0e514
mov r2h, @byte_ffe554
loc_0e514: mov #0, r0l
loc_0e516: mov r0l, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e51c: bclr #2, @byte_ffff2c:8
mov @byte_ffe554, r0l
extu r0
extu er0
mov @twr1, r2l ; LPC Bidirectional Data Register 1
mov #twr2 & M24, er1 ; LPC Bidirectional Data Register 2
loc_0e534: mov @er1, r3l
mov r3l, @(byte_ffe534,er0)
inc #1, er1
inc #1, er0
cmp #0x20, er0
blo loc_0e550
mov #0, er0
loc_0e550: dec r2l
bne loc_0e534
mov @twr12, r1l ; LPC Bidirectional Data Register 12
bne loc_0e566
mov r0l, @byte_ffe555
mov r1l, r0l
bset #2, @byte_ffff2c:8
loc_0e566: mov r0l, @byte_ffe554
mov #0, r0l
mov r0l, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0e574: mov @twr1, r0l ; LPC Bidirectional Data Register 1
cmp #0x80, r0l
blo loc_0e598
cmp #0x80 + num_0e5a0 - 1, r0l
bhi loc_0e598
and #0x0f, r0l
shll #2, r0l
extu r0
extu er0
mov @(off_0e5a0,er0), er0
jsr @er0
mov #0, r0l
bra loc_0e59a
loc_0e598: mov #3, r0l
loc_0e59a: mov r0l, @twr15 ; LPC Bidirectional Data Register 15
rts
off_0e5a0: .long rts_0e5b0, sub_0e5b2, sub_0e5c6
.long sub_0e5fe
num_0e5a0 = (. - off_0e5a0) / 4
rts_0e5b0: rts
sub_0e5b2: mov #0, r0l
mov r0l, @twr1 ; LPC Bidirectional Data Register 1
mov #(num_0e5a0 - 1) << 5, r0l
mov r0l, @twr2 ; LPC Bidirectional Data Register 2
mov #0, r0l
mov r0l, @twr3 ; LPC Bidirectional Data Register 3
rts
sub_0e5c6: zero r0
bld #0, @byte_ffff2c:8
bst #0, r0l
bld #1, @byte_ffff2d:8
bst #1, r0l
bld #2, @byte_ffff2d:8
bst #2, r0l
bld #4, @byte_ffff2d:8
bst #3, r0l
mov r0l, @twr1 ; LPC Bidirectional Data Register 1
mov @word_ffecec, r0
mov r0l, @twr2 ; LPC Bidirectional Data Register 2
mov r0h, @twr3 ; LPC Bidirectional Data Register 3
mov @byte_ffe530, r0l
mov r0l, @twr4 ; LPC Bidirectional Data Register 4
rts
sub_0e5fe: mov @twr2, r0l ; LPC Bidirectional Data Register 2
cmp #1, r0l
bist #7, @byte_ffff2d:8
rts
sub_0e60a: bset #6, @byte_ffff2c:8
rts
sub_0e610: bld #0, @byte_ffff2d:8
rts
enterStandby1: bset #0, @byte_ffff2e:8
rts
enterHibernation1:
bset #1, @byte_ffff2e:8
rts
rts_0e622: rts
sub_0e624:
mov #0, r0h
mov r0h, @byte_ffe557
rts
task34_1:
btst #5, @byte_ffff2c:8
beq loc_0e644
mov @word_ffed10, r0
jsr sub_016e4
bcc loc_0e644
jsr sub_0e920
loc_0e644: mov @byte_ffe557, r0h
mov #off_0e660, er1
jsr switch_er1_r0h
bcs rts_0e65e
mov #task34o, r0h
jsr schedFrontTask
clr c
rts_0e65e: rts
off_0e660: case 0 sub_0e694 sub_0e6b4 sub_0e870 sub_0e890
case 4 sub_0e8a0 sub_0e70c sub_0e8b4 sub_0e8d8
case 8 sub_0e734 sub_0e7d6 sub_0e8f0 sub_0e70c
case 12 sub_0e8b4 sub_0e8d8 sub_0e734 sub_0e7d6
case 16 sub_0e934 sub_0e96c sub_0e890 sub_0e70c
case 20 sub_0e8b4 sub_0e8d8 sub_0e734 sub_0e7d6
case 24 sub_0e984 sub_0e9d4
sub_0e694: btst #5, @byte_ffff2c:8
beq loc_0e6a0
bsr sub_0e6a4
set c
bra rts_0e6a2
loc_0e6a0: clr c
rts_0e6a2: rts
sub_0e6a4: mov @byte_ffe557, r0h
inc r0h
mov r0h, @byte_ffe557
rts
sub_0e6b4: bclr #0, @byte_ffff2c:8
jsr sub_0e12e
loc_0e6bc: mov #2, r1
mov #1, r0h
jsr sub_0d5a4
mov #4, r0h
jsr sub_0d57e
mov #5, r0h
jsr sub_0d57e
bsr sub_0e6a4
set c
rts
sub_0e6d8: mov #0, r0h
mov r0h, @byte_ffe527
mov r0h, @byte_ffe528
mov r0h, @byte_ffe529
mov r0h, @byte_ffe52a
mov r0h, @byte_ffe52b
mov r0h, @byte_ffe52c
mov r0h, @byte_ffe52f
mov r0h, @byte_ffe52d
bra loc_0e6bc
sub_0e70c: mov #long_ffecf8, er0
mov #byte_ffe558, er1
jsr sub_0e7f2
mov #long_ffed02, er0
mov #byte_ffe559, er1
jsr sub_0e7f2
bsr sub_0e6a4:16
set c
rts
sub_0e734: mov @byte_ffe529, r2l
extu r2
extu er2
mov @(word_ffec88,er2), r1
add #2, r2l
cmp #0x12, r2l
blo loc_0e74e
mov #0, r2l
loc_0e74e: mov r2l, @byte_ffe529
mov #long_ffecf8, er0
mov #byte_ffe558, er2
jsr sub_0e858
mov @byte_ffe52c, r2l
extu r2
extu er2
mov @(word_ffecc8,er2), r1
add #2, r2l
cmp #0x12, r2l
blo loc_0e77e
mov #0, r2l
loc_0e77e: mov r2l, @byte_ffe52c
mov #long_ffed02, er0
mov #byte_ffe559, er2
jsr sub_0e858
bsr sub_0e6a4:16
mov #long_ffecf8, er0
jsr sub_0e810
bcs loc_0e7c8
mov r1, @word_ffed0c
mov #long_ffed02, er0
jsr sub_0e810
bcs loc_0e7c8
mov r1, @word_ffed0e
bsr sub_0e6a4:16
mov #task34o, r0h
mov #0, r1
bra loc_0e7ce
loc_0e7c8: mov #task34o, r0h
mov #200, r1
loc_0e7ce: jsr schedBackTaskDelayed
set c
rts
sub_0e7d6: mov #task34o, r0h
jsr checkSchedTask
bcc rts_0e7f0
mov @byte_ffe557, r0h
mov #3, r0l
sub r0l, r0h
mov r0h, @byte_ffe557
set c
rts_0e7f0: rts
sub_0e7f2: mov #0, r2
mov r2l, @er1
mov #0, r1l
loc_0e7fa: mov r2, @er0
add #2, er0
inc r1l
cmp #4, r1l
blo loc_0e7fa
mov #-1, r2
mov r2, @er0
rts
sub_0e810: mov #0, r3l
mov @er0, r1
mov r1, r2
mov r1, e2
add #2, er0
inc r3l
loc_0e820: mov @er0, r1
cmp r2, r1
blo loc_0e82a
mov r1, r2
bra loc_0e830
loc_0e82a: cmp e2, r1
bhi loc_0e830
mov r1, e2
loc_0e830: add #2, er0
inc r3l
cmp #5, r3l
blo loc_0e820
mov er2, er3
mov e2, r1
extu er1
extu er2
add er2, er1
shlr er1
sub e3, r3
cmp #4, r3
bls loc_0e854
set c
bra rts_0e856
loc_0e854: clr c
rts_0e856: rts
sub_0e858: mov @er2, r3l
extu r3
extu er3
add er3, er0
add er3, er0
mov r1, @er0
inc r3l
cmp #5, r3l
blo loc_0e86c
mov #0, r3l
loc_0e86c: mov r3l, @er2
rts
sub_0e870: b clr pc2odr ; Pin PC2 (Port C Output Data Register)
bset #5, @byte_ffff2d
mov #task34o, r0h
mov #10, r1
jsr schedBackTaskDelayed
bsr sub_0e6a4:16
set c
rts
sub_0e890: mov #task34o, r0h
jsr checkSchedTask
bcc rts_0e89e
bsr sub_0e6a4:16
set c
rts_0e89e: rts
sub_0e8a0: mov #11 - 4 & (level < 0x01000062), r0h
btst #3, @byte_ffff2d:8
bne loc_0e8aa
mov #5, r0h
loc_0e8aa: mov r0h, @byte_ffe557
set c
rts
sub_0e8b4: mov #5 - 4 & (level < 0x01000062), r0h
bra loc_0e8ba
sub_0e8b8: mov #10, r0h
loc_0e8ba: mov r0h, @byte_ffe530
mov #4, r0h
jsr sub_0d574
mov #5, r0h
jsr sub_0d574
bset #0, @byte_ffff2c:8
bsr sub_0e6a4:16
set c
rts
sub_0e8d8:
mov @byte_ffe52f, r0l
beq loc_0e8ec
dec r0l
mov r0l, @byte_ffe52f
bsr sub_0e6d8:16
loc_0e8ec: set c
rts
sub_0e8f0:
mov @word_ffed0c, r0
cmp #0x26c, r0
bhi sub_0e920
cmp #0x9b, r0
blo sub_0e920
mov @word_ffed0e, r0
cmp #0x26c, r0
bhi sub_0e920
cmp #0x9b, r0
blo sub_0e920
mov #0x19, r0h
mov r0h, @byte_ffe557
set c
rts
sub_0e920: bset #4, @byte_ffff2c:8
loc_0e924: bsr sub_0e6b4:16
mov #0x19 - 2 & (level < 0x01000062), r0h
mov r0h, @byte_ffe557
loc_0e930: set c
rts
sub_0e934:
mov @word_ffed0c, r0
mov r0, @word_ffecf4
cmp #0x39b, r0
bhi sub_0e920
cmp #0x64, r0
blo sub_0e920
mov @word_ffed0e, r0
mov r0, @word_ffecf6
cmp #0x39b, r0
bhi sub_0e920
cmp #0x64, r0
blo sub_0e920
bsr sub_0e6a4:16
set c
rts
sub_0e96c: b set pc3odr ; Pin PC3 (Port C Output Data Register)
mov #task34o, r0h
mov #5, r1
jsr schedBackTaskDelayed
bsr sub_0e6a4:16
set c
rts
sub_0e984:
mov @word_ffecf4, r0
mov @word_ffed0c, r1
sub r0, r1
bcs sub_0e920
cmp #20 - 10 & (level < 0x01000062), r1
blo sub_0e920
mov @word_ffecf6, r0
mov @word_ffed0e, r1
sub r0, r1
bcs sub_0e920:16
cmp #20 - 10 & (level < 0x01000062), r1
blo sub_0e920:16
bsr sub_0e6a4:16
set c
rts
sub_0e9bc: b clr pc3odr ; Pin PC3 (Port C Output Data Register)
mov #task34o, r0h
mov #5, r1
jsr schedBackTaskDelayed
bsr sub_0e6a4:16
set c
rts
sub_0e9d4: btst #5, @byte_ffff2c:8
beq loc_0e9f8
bld #4, @byte_ffff2c:8
bst #2, @byte_ffe56d ; 0x0e
bclr #5, @byte_ffff2c:8
b set pc2odr ; Pin PC2 (Port C Output Data Register)
bclr #5, @byte_ffff2d
loc_0e9f8:
bclr #5, @byte_ffe56d ; 0x0e
bclr #4, @byte_ffff2d:8
b clr pc3odr ; Pin PC3 (Port C Output Data Register)
mov #0, r0h
mov r0h, @byte_ffe557
clr c
rts
rts_0ea16: rts
task34_2_3: clr c
rts
sub_0ea1c: btst #1, @byte_ffff2d:8
bne rts_0ea5a
btst #4, @byte_ffff2d:8
bne rts_0ea5a
bset #5, @byte_ffff2c:8
mov @word_ffe9be, r0
add #0x1e, r0
mov r0, @word_ffed10
mov #0, r0h
mov r0h, @byte_ffe557
bset #4, @byte_ffff2d:8
bset #5, @byte_ffe56d ; 0x0e
bclr #4, @byte_ffff2c:8
mov #task34o, r0h
jsr schedBackTask
rts_0ea5a: rts
bild #4, @byte_ffff2d:8
rts
sub_0ea62: mov @twr1, r0h ; LPC Bidirectional Data Register 1
beq loc_0ea7a
cmp #1, r0h
beq loc_0ea70
mov #3, r0h
bra loc_0eaaa
loc_0ea70: btst #4, @byte_ffff2c:8
beq loc_0eaa8
mov #1, r0h
bra loc_0eaaa
loc_0ea7a: btst #1, @byte_ffff2d:8
bne loc_0ea86
btst #4, @byte_ffff2d:8
beq loc_0ea8a
loc_0ea86: mov #6, r0h
bra loc_0eaaa
loc_0ea8a: bset #4, @byte_ffff2d:8
bset #5, @byte_ffe56d ; 0x0e
bclr #4, @byte_ffff2c:8
mov #1, r0h
mov r0h, @byte_ffe557
mov #task34o, r0h
jsr schedBackTask
loc_0eaa8: mov #0, r0h
loc_0eaaa: mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_0eab0:
mov @twr1, r0h ; LPC Bidirectional Data Register 1
beq loc_0eac2
cmp #1, r0h
bhi loc_0eaca
b set pc3odr ; Pin PC3 (Port C Output Data Register)
bra loc_0eace
loc_0eac2: b clr pc3odr ; Pin PC3 (Port C Output Data Register)
bra loc_0eace
loc_0eaca: mov #3, r0h
bra loc_0ead0
loc_0eace: mov #0, r0h
loc_0ead0: mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts
sleep: set i
bsr setWaitTime ; 13.1 ms @ 10 MHz
bsr setupSleep:16
b set iscrh.irq7sca ; IRQ7 Sense Control A (IRQ Sense Control Register H)
b clr isr.irq7f ; IRQ7 Flag (IRQ Status Register)
b set ier.irq7e ; IRQ7 Enable (Interrupt Enable Register)
b set iscrh.irq6sca ; IRQ6 Sense Control A (IRQ Sense Control Register H)
b clr isr.irq6f ; IRQ6 Flag (IRQ Status Register)
b set ier.irq6e ; IRQ6 Enable (Interrupt Enable Register)
bclr #1, @byte_ffe55a
bclr #2, @byte_ffe55a
clr i
sleep
set i
bsr sub_0ec3a:16
clr i
b clr lpwrcr.excle ; Subclock Input Enable (Low-Power Control Register)
b clr lpwrcr.dton ; Direct Transfer On Flag (Low-Power Control Register)
b clr lpwrcr.lson ; Low-Speed On Flag (Low-Power Control Register)
b clr sbycr.ssby ; Software Standby (Standby Control Register)
rts
sub_0eb2c: mov #0, r1l
mov r1l, @byte_ffe55a
b set lpwrcr.excle ; Subclock Input Enable (Low-Power Control Register)
mov @wtcsr_1:8, r1l ; WDT_1 Watchdog Timer Control & Status Register
bclr #6, r1l
bset #5, r1l
bset #4, r1l
bclr #2, r1l
bclr #1, r1l
bclr #0, r1l
mov #0xa5, r1h ; tcsr write
mov r1, @wtcsr_1 ; WDT_1 Watchdog Timer Control & Status Register
rts
sub_0eb4e: bld #0, @byte_ffe55a
rts
; 13.1 ms @ 10 MHz
setWaitTime: b set sbycr.sts2 ; Standby Timer Select 2 (Standby Control Register)
b clr sbycr.sts1 ; Standby Timer Select 1 (Standby Control Register)
b clr sbycr.sts0 ; Standby Timer Select 0 (Standby Control Register)
rts
setupSleep: b clr ier.irq0e ; IRQ0 Enable (Interrupt Enable Register)
mov @wtcsr_1:8, r1l ; WDT_1 Watchdog Timer Control & Status Register
bclr #6, r1l
bset #5, r1l
bset #2, r1l
bclr #1, r1l
bclr #0, r1l
mov #0xa5, r1h ; tcsr write
mov r1, @wtcsr_1 ; WDT_1 Watchdog Timer Control & Status Register
mov #0x19, r0h ; watch mode: 4 excle=1, 3 ssby=1, 2 dton=0, 1 lson=0, 0 pss=1
bra loc_0eb92
b set iscrl.irq0sca ; IRQ0 Sense Control A (IRQ Sense Control Register L)
b clr iscrl.irq0scb ; IRQ0 Sense Control B (IRQ Sense Control Register L)
b set ier.irq0e ; IRQ0 Enable (Interrupt Enable Register)
mov #0x08, r0h ; standby mode: 4 excle=0, 3 ssby=1, 2 dton=0, 1 lson=0, 0 pss=0
loc_0eb92: bld #4, r0h
b st lpwrcr.excle ; Subclock Input Enable (Low-Power Control Register)
bld #3, r0h
b st sbycr.ssby ; Software Standby (Standby Control Register)
bld #2, r0h
b st lpwrcr.dton ; Direct Transfer On Flag (Low-Power Control Register)
bld #1, r0h
b st lpwrcr.lson ; Low-Speed On Flag (Low-Power Control Register)
mov @wtcsr_1:8, r1l ; WDT_1 Watchdog Timer Control & Status Register
bld #0, r0h
bst #4, r1l ; pss
mov #0xa5, r1h ; tcsr write
mov r1, @wtcsr_1 ; WDT_1 Watchdog Timer Control & Status Register
rts
; External Interrupt Request 0
irq0: stm er0-er1, @-sp
mov #250, r0
mov @tick, r1
add r1, r0
mov r0, @tick
ldm @sp+, er0-er1
rte
; WDT_1 Watchdog Interval Timer
wovi1: stm er0-er1, @-sp
btst #0, @byte_ffe55a
bne loc_0ebea
bset #0, @byte_ffe55a
loc_0ebea: bset #1, @byte_ffe55a
mov @wtcsr_1:8, r0l ; WDT_1 Watchdog Timer Control & Status Register
bclr #5, r0l
bclr #7, r0l
mov #0xa5, r0h ; tcsr write
mov r0, @wtcsr_1 ; WDT_1 Watchdog Timer Control & Status Register
ldm @sp+, er0-er1
rte
; External Interrupt Request 6/7
irq6_irq7: stm er0-er1, @-sp
btst #2, @byte_ffe55a
bne loc_0ec34
bset #2, @byte_ffe55a
jsr sub_01272
bcs loc_0ec24
jsr sub_01430
loc_0ec24: mov @wtcnt_1:8, r0l ; WDT_1 Watchdog Timer Counter
mov r0l, @byte_ffe55b
b clr ier.irq7e ; IRQ7 Enable (Interrupt Enable Register)
b clr ier.irq6e ; IRQ6 Enable (Interrupt Enable Register)
loc_0ec34: ldm @sp+, er0-er1
rte
sub_0ec3a: mov #263, r2
btst #1, @byte_ffe55a
bne loc_0ec60
mov @byte_ffe55b, r0l
beq loc_0ec60
mov r0l, r2l
mov #97, r1l
mulxu r1l, r2
mov #100, r1l
divxu r1l, r2
extu r2
add #13, r2
loc_0ec60: mov @tick, r1
add r1, r2
mov r2, @tick
rts
rts
rts
rts
rts
rts
rts
rts
sub_0ec7e:
jsr sub_0ec84
rts
sub_0ec84: bcc rts_0ecbe
mov #0x23, r0l
mov #byte_ffe10b, er2
stm er0-er2, @-sp
mov r0l, @(1,er2)
mov #4, r0h
mov r0h, @(0,er2)
bsr sub_0ecc0
mov r0l, @(2,er2)
mov @(3,er2), r0l
mov @(4,er2), r0h
add #1, r0
mov r0l, @(3,er2)
mov r0h, @(4,er2)
ldm @sp+, er0-er2
jsr sub_14e8a
rts_0ecbe: rts
sub_0ecc0: mov #2, r0l
bld #5, @byte_ffff02
bst #0, r0l
rts
sub_0ecce:
mov #byte_ffe10b, er2
mov #0, r0
mov r0l, @(3,er2)
mov r0h, @(4,er2)
rts
rts
rts
init_i2c:
setOutH 4 7 ; Pin P47/PWX1
zero er0
b clr mstpcrl.mstp4 ; IIC_0 (Module Stop Control Register L)
b clr mstpcrl.mstp3 ; IIC_1 (Module Stop Control Register L)
b set stcr.iice ; I²C Master Enable (Serial Timer Control Register)
mov r0h, @iccr_0:8 ; IIC_0 I²C Bus Control Register
set i
b set iccr_0.ice ; I²C Bus Interface Enable (IIC_0 I²C Bus Control Register)
mov @icmr_0:8, r1h ; IIC_0 I²C Bus Mode Register
and #0xc7, r1h
or #0x38, r1h
b set stcr.iicx0 ; I²C Transfer Rate Select 0 (Serial Timer Control Register)
mov r1h, @icmr_0:8 ; IIC_0 I²C Bus Mode Register
clr i
mov r0h, @iccr_1:8 ; IIC_1 I²C Bus Control Register
set i
b set iccr_1.ice ; I²C Bus Interface Enable (IIC_1 I²C Bus Control Register)
mov @icmr_1:8, r1h ; IIC_1 I²C Bus Mode Register
and #0xc7, r1h
or #0x38, r1h
b set stcr.iicx1 ; I²C Transfer Rate Select 1 (Serial Timer Control Register)
mov r1h, @icmr_1:8 ; IIC_1 I²C Bus Mode Register
clr i
mov #-1, r0h
mov r0h, @i2c_0+6:16 ; i2c_0 state
mov r0h, @i2c_1+6:16 ; i2c_1 state
mov #0, er0
mov r0h, @i2c_0+2:16 ; i2c_0 state2
mov r0h, @i2c_1+2:16 ; i2c_1 state2
mov er0, @i2c_0+14:16 ; i2c_0 cmd buf
mov er0, @i2c_1+14:16 ; i2c_1 cmd buf
mov #do_i2c_0o, r0h
mov r0h, @i2c_0+4 ; i2c_0
mov #do_i2c_1o, r0h
mov r0h, @i2c_1+4 ; i2c_1
b clr iccr_0.ice ; I²C Bus Interface Enable (IIC_0 I²C Bus Control Register)
b clr iccr_1.ice ; I²C Bus Interface Enable (IIC_1 I²C Bus Control Register)
rts
rts_0ed70: rts
do_i2c_0: mov #i2c_0, er3
mov #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
mov #icsr_0 & M24, er5 ; IIC_0 I²C Bus Status Register
bra do_i2c_loop
do_i2c_1: mov #i2c_1, er3
mov #iccr_1 & M24, er4 ; IIC_1 I²C Bus Control Register
mov #icsr_1 & M24, er5 ; IIC_1 I²C Bus Status Register
do_i2c_loop: mov @(2,er3), r0h ; i2c state2
mov #off_0edb6, er1
jsr switch_er1_r0h
bcs do_i2c_loop
mov @(2,er3), r0h ; i2c state2
bne 1f
clr c
bra rts_0edb4
1: set c
rts_0edb4: rts
off_0edb6: case 0 i2c_case0 i2c_case1 i2c_case2 i2c_case3
case 4 i2c_case4 i2c_case5 i2c_case6 i2c_case7
case 8 i2c_case8 i2c_case9 i2c_case10 i2c_case11
case 12 i2c_case12 i2c_case13_14 i2c_case13_14 i2c_case15
case 16 i2c_case16
i2c_case0: mov @(0x0e,er3), er0 ; cmd buf pointer
beq loc_0ede8
bsr incrState2:16
set c
bra rts_0edfe
loc_0ede8:
cmp #i2c_0, er3
bne 1f
0: b set p47dr ; Pin P47/PWX1 (Port 4 Data Register)
1:
mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
jsr schedFrontTask
clr c
rts_0edfe: rts
i2c_case1: mov @(0x0e,er3), er0 ; cmd buf pointer
mov @er0, r0h
and #3, r0h
mov @(3,er3), r0l
cmp r0h, r0l
beq loc_0ee38
mov r0h, @(3,er3)
push er3
push er4
push er5
jsr sub_02006
pop er5
pop er4
pop er3
bsr incrState2:16
bra loc_0ee3e
loc_0ee38: mov #4, r0h ; state2 = 4
mov r0h, @(2,er3)
loc_0ee3e:
cmp #i2c_0, er3
bne 1f
0: b clr p47dr ; Pin P47/PWX1 (Port 4 Data Register)
1:
set c
rts
i2c_case4: mov #8, r0h
mov r0h, @(1,er3)
bsr incrState2:16
set c
rts
i2c_case9: mov @(0x0e,er3), er2 ; cmd buf pointer
mov @(i2c20o:16,er2), r1l
extu r1
bra loc_0ee74
i2c_case5: mov #50, r1
bra loc_0ee74
i2c_case2: mov #20, r1
loc_0ee74: mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
push er3
stm er4-er5, @-sp
jsr schedBackTaskDelayed
ldm @sp+, er4-er5
pop er3
bsr incrState2:16
set c
rts
i2c_case3: mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
push er3
stm er4-er5, @-sp
jsr checkSchedTask
ldm @sp+, er4-er5
pop er3
bcc loc_0eeb6
bsr incrState2:16
set c
bra rts_0eec0
loc_0eeb6: mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
jsr schedFrontTask
clr c
rts_0eec0: rts
i2c_case6: bset #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
btst #2, @er4 ; iccr.bbsy (I²C Bus Control Register: Bus Busy)
beq notBusy
mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
push er3
stm er4-er5, @-sp
jsr checkSchedTask
ldm @sp+, er4-er5
pop er3
bcc loc_0ef0a
cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: b tst p97dr ; Pin P97/SDA0 (Port 9 Data Register)
bra loc_0eef8
1: b tst p42dr ; Pin P42/TMRI0/SCK2/SDA1 (Port 4 Data Register)
loc_0eef8: bne loc_0ef04
mov #12, r0h
mov r0h, @(2,er3) ; state2 = 12
clr c
bra loc_0ef08
loc_0ef04: bsr incrState2:16
loc_0ef08: bra loc_0ef0c
loc_0ef0a: clr c
loc_0ef0c: bra rts_0ef14
notBusy: bsr incrState2:16
set c
rts_0ef14: rts
i2c_case7: mov @(0x0e,er3), er2 ; cmd buf pointer
zero er0
mov @(3,er2), r0l
mov @(1,er2), r1l
btst #7, r1l
beq loc_0ef34
mov #stateTab2, er1
bra loc_0ef3a
loc_0ef34: mov #stateTab1, er1
loc_0ef3a: and #0x0f, r0l
add er0, er1
mov @er1, r0h
bmi loc_0efb4
mov r0h, @(6,er3)
mov #0, r0h
mov r0h, @er3
bld #4, @er2
bst #6, @er3
bld #3, @er2
bst #5, @er3
btst #5, @er3
bne loc_0ef78
btst #6, @er3
beq loc_0ef78
mov @(0x0e,er3), er0 ; cmd buf pointer
mov @(i2c02o:16,er0), r1h
bsr sub_0f30e:16
mov r0h, @(8,er3)
loc_0ef78: mov @(0x0e,er3), er2 ; cmd buf pointer
mov #0, r0h
mov r0h, @(5,er3)
mov r0h, @(9,er3)
mov @(0x0e,er3), er2 ; cmd buf pointer
mov @(i2c05o:16,er2), r0h
mov @(i2c02o:16,er2), r0h
mov r0h, @(7,er3)
mov #0, r0h
mov r0h, @(i2c04o:16,er2)
mov @(i2c08o:16,er2), er1
mov er1, @(0x0a,er3)
bsr incrState2:16
set c
bra rts_0efc2
loc_0efb4: mov #0x19, r0h
bsr sub_0f0c2:16
mov #0, r0h
mov r0h, @(2,er3) ; state2 = 0
clr c
rts_0efc2: rts
stateTab1: .byte -1 ; 0
.byte -1 ; 1
.byte 29 ; 2
.byte 31 ; 3
.byte 23 ; 4
.byte 26 ; 5
.byte 13 ; 6
.byte 17 ; 7
.byte 13 ; 8
.byte 17 ; 9
.byte 0 ; 10
.byte 5 ; 11
.byte -1 ; 12
.byte -1 ; 13
.byte 13 ; 14
.byte 17 ; 15
stateTab2: .byte -1 ; 0
.byte -1 ; 1
.byte -1 ; 2
.byte -1 ; 3
.byte -1 ; 4
.byte -1 ; 5
.byte -1 ; 6
.byte -1 ; 7
.byte -1 ; 8
.byte 33 ; 9
.byte -1 ; 10
.byte -1 ; 11
.byte -1 ; 12
.byte -1 ; 13
.byte -1 ; 14
.byte -1 ; 15
; setup master transmit mode, enable interrupts
i2c_case8: mov er4, er0
add #7, er0 ; icmr (I²C Bus Mode Register)
bclr #6, @er0 ; icmr.wait (I²C Bus Mode Register: Wait Insertion Bit)
bset #3, @er4 ; iccr.acke (I²C Bus Control Register: Acknowledge Bit Decision and Selection)
set i
mov @er4, r0h ; iccr (I²C Bus Control Register)
bset #5, r0h ; iccr.mst Set Master Mode
bset #4, r0h ; iccr.trs Set Transmit Mode
mov r0h, @er4 ; iccr (I²C Bus Control Register)
clr i
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
bset #4, @er3
mov @er4, r0h ; iccr (I²C Bus Control Register)
bset #2, r0h ; iccr.bbsy (Bus Busy)
bclr #0, r0h ; iccr.scp (Start/Stop Condition Prohibit): Issue Start & Restart Condition
mov r0h, @er4 ; iccr (I²C Bus Control Register)
clr i
bsr incrState2:16
set c
rts
i2c_case10: mov @(6,er3), r0h
bpl loc_0f090
btst #7, @er3
bne loc_0f084
btst #6, @er3
beq loc_0f07a
btst #5, @er3
beq loc_0f07a
mov @(0x0e,er3), er0 ; cmd buf pointer
mov @(7,er3), r1h
bsr sub_0f30e:16
mov @(8,er3), r0l
cmp r0h, r0l
beq loc_0f070
mov @(1,er3), r0h
bne loc_0f05e
mov #0x1f, r0h
bsr sub_0f0c2
bsr incrState2:16
bra loc_0f06e
loc_0f05e: dec r0h
mov r0h, @(1,er3)
bsr i2c_case11:16 ; reset I²C bus
mov #5, r0h
mov r0h, @(2,er3) ; state2 = 5
loc_0f06e: bra loc_0f078
loc_0f070: mov #0, r0h
bsr sub_0f0c2
bsr incrState2:16
loc_0f078: bra loc_0f082
loc_0f07a: mov #0, r0h
bsr sub_0f0c2
bsr incrState2:16
loc_0f082: bra loc_0f08e
loc_0f084: mov @(9,er3), r0h
bsr sub_0f0c2
bsr incrState2:16
loc_0f08e: bra loc_0f0be
loc_0f090: mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
push er3
stm er4-er5, @-sp
jsr checkSchedTask
ldm @sp+, er4-er5
pop er3
bcc loc_0f0b6
mov #0x18, r0h
bsr sub_0f0c2
mov #16, r0h
mov r0h, @(2,er3) ; state2 = 16
bra loc_0f0be
loc_0f0b6: mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
jsr schedFrontTask
loc_0f0be: clr c
rts
sub_0f0c2: bsr sub_0f4de:16
mov @(0x0e,er3), er2 ; cmd buf pointer
mov r0h, @(i2c04o:16,er2)
cmp #0, r0h
bne loc_0f0e4
mov @(i2c03o:16,er2), r0l
cmp #0x0b, r0l
bne loc_0f0e4
mov @(7,er3), r0l
mov r0l, @(i2c02o:16,er2)
loc_0f0e4: mov @(i2c16o:16,er2), er6
mov er6, @(0x0e,er3) ; cmd buf pointer
zero er6
mov er6, @(i2c16o:16,er2)
bclr #7, @er2
bset #6, @er2
mov @(i2c12o:16,er2), er6
beq rts_0f12c
mov @(i2c02o:16,er2), r0l
mov @(i2c04o:16,er2), r0h
beq loc_0f118
set c
bra loc_0f11a
loc_0f118: clr c
loc_0f11a: stm er2-er3, @-sp
stm er4-er5, @-sp
jsr @er6
ldm @sp+, er4-er5
ldm @sp+, er2-er3
rts_0f12c: rts
; Reset I²C Bus
i2c_case11: bclr #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
bsr waitClkLowMax50:16
set i
mov @er4, r0h ; iccr (I²C Bus Control Register)
and #~0b00000101, r0h ; clear Start/Stop Condition Prohibit & Bus Busy
or # 0b00110000, r0h ; set Master Transmit Mode
mov r0h, @er4 ; iccr (I²C Bus Control Register)
clr i
mov #0, r0h
mov r0h, @er5 ; icsr (I²C Bus Status Register)
mov r0h, @(2,er3) ; state2 = 0
rts
incrState2: mov @(2,er3), r0h ; state2
inc r0h
mov r0h, @(2,er3) ; state2
rts
; SMBus Slave/I²C Receive?
i2c_case12: bclr #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
push er3
stm er4-er5, @-sp
cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: setInH 5 2 ; Pin P52/SCK0/SCL0
bra loc_0f192
1: setInH 8 6 ; Pin P86/-IRQ5/SCK1/SCL1
loc_0f192: ldm @sp+, er4-er5
pop er3
mov #0x1c, r0h
mov r0h, @(5,er3)
bsr incrState2
set c
rts
; setClockIO
i2c_case13_14: cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: b ild p52dr ; Pin P52/SCK0/SCL0 (Port 5 Data Register)
bcs clockLow_0
push er0
stc ccr, r0l
set i
b clr p52dr ; Pin P52/SCK0/SCL0 (Port 5 Data Register)
mov @P5DDRcopy, r0h
bset #2, r0h ; p52ddr = 1
mov r0h, @P5DDRcopy
mov r0h, @p5ddr:8 ; Port 5 Data Direction Register
ldc r0l, ccr
pop er0
bra loc_0f1f6
clockLow_0: push er0
stc ccr, r0l
set i
mov @P5DDRcopy, r0h
bclr #2, r0h ; p52ddr = 0
mov r0h, @P5DDRcopy
mov r0h, @p5ddr:8 ; Port 5 Data Direction Register
ldc r0l, ccr
pop er0
loc_0f1f6: bra loc_0f240
1: b ild p86dr ; Pin P86/-IRQ5/SCK1/SCL1 (Port 8 Data Register)
bcs clockLow_1
push er0
stc ccr, r0l
set i
b clr p86dr ; Pin P86/-IRQ5/SCK1/SCL1 (Port 8 Data Register)
mov @P8DDRcopy, r0h
bset #6, r0h ; p86ddr = 1
mov r0h, @P8DDRcopy
mov r0h, @p8ddr:8 ; Port 8 Data Direction Register
ldc r0l, ccr
pop er0
bra loc_0f240
clockLow_1: push er0
stc ccr, r0l
set i
mov @P8DDRcopy, r0h
bclr #6, r0h ; p86ddr = 0
mov r0h, @P8DDRcopy
mov r0h, @p8ddr:8 ; Port 8 Data Direction Register
ldc r0l, ccr
pop er0
loc_0f240: bsr incrState2:16
clr c
rts
i2c_case15: cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: b tst p97dr ; Pin P97/SDA0 (Port 9 Data Register)
bra loc_0f25a
1:
b tst p97dr ; Pin P97/SDA0 (Port 9 Data Register)
loc_0f25a: beq dataLow
mov #4, r0h
mov r0h, @(2,er3) ; state2 = 4
bsr setClockIn
clr c
bra rts_0f29a
dataLow: mov @(5,er3), r0h
dec r0h
mov r0h, @(5,er3)
bne loc_0f292
bsr setClockIn
mov @(0x0e,er3), er1 ; cmd buf pointer
mov @(i2c08o:16,er1), er1
mov #0x13, r0h
bsr sub_0f0c2:16
mov #0, r0h
mov r0h, @(2,er3) ; state2 = 0
clr c
bra rts_0f29a
loc_0f292: mov #13, r0h
mov r0h, @(2,er3) ; state2 = 13
set c
rts_0f29a: rts
setClockIn: push er3
push er4
push er5
cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: setInH 5 2 ; Pin P52/SCK0/SCL0
bra loc_0f2d6
1: setInH 8 6 ; Pin P86/-IRQ5/SCK1/SCL1
loc_0f2d6: pop er5
pop er4
pop er3
rts
; Hard Reset I²C Bus
i2c_case16: bclr #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
bset #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
bsr i2c_case11:16 ; reset I²C bus
push er3
stm er4-er5, @-sp
jsr delay50
ldm @sp+, er4-er5
pop er3
bclr #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
bset #7, @er4 ; iccr.ice (I²C Bus Control Register: I²C Bus Interface Enable)
rts
sub_0f30e: mov er0, er2
mov #0, r0h
mov @(i2c03o:16,er2), r0l
cmp #11, r0l
beq loc_0f31e
mov @(i2c02o:16,er2), r1h
loc_0f31e: push er1
mov @(i2c03o:16,er2), r0l
cmp #7, r0l
beq loc_0f346
cmp #6, r0l
beq loc_0f346
cmp #9, r0l
beq loc_0f346
cmp #8, r0l
beq loc_0f346
cmp #15, r0l
beq loc_0f346
cmp #14, r0l
beq loc_0f346
cmp #10, r0l
beq loc_0f346
cmp #11, r0l
bne loc_0f364
loc_0f346: mov @(i2c05o:16,er2), r0l
bclr #0, r0l
bsr sub_0f3a4
mov @(i2c06o:16,er2), r0l
bsr sub_0f3a4
btst #3, @er2
beq loc_0f362
mov @(i2c05o:16,er2), r0l
bset #0, r0l
bsr sub_0f3a4
loc_0f362: bra loc_0f370
loc_0f364: mov @(i2c05o:16,er2), r0l
bld #3, @er2
bst #0, r0l
bsr sub_0f3a4
loc_0f370: mov @(i2c03o:16,er2), r0l
cmp #10, r0l
beq loc_0f37c
cmp #11, r0l
bne loc_0f384
loc_0f37c: mov @sp, er1 ; pop+push er1
mov r1h, r0l
bsr sub_0f3a4
loc_0f384: mov @(i2c08o:16,er2), er1
mov @sp, er2 ; pop+push er2
loc_0f38e: cmp #0, r2h
beq loc_0f39a
mov @er1+, r0l
bsr sub_0f3a4
dec r2h
bra loc_0f38e
loc_0f39a: mov #0, r0l
bsr sub_0f3a4
pop er1
rts
sub_0f3a4: push er2
mov #byte_0f3c0, er2
add r0h, r2l
addx #0, r2h
bcc loc_0f3b6
inc #1, e2
loc_0f3b6: mov @er2, r0h
xor r0l, r0h
pop er2
rts
byte_0f3c0: .byte 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15
.byte 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d
.byte 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65
.byte 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d
.byte 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5
.byte 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd
.byte 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85
.byte 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd
.byte 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2
.byte 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea
.byte 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2
.byte 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a
.byte 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32
.byte 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a
.byte 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42
.byte 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a
.byte 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c
.byte 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4
.byte 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec
.byte 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4
.byte 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c
.byte 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44
.byte 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c
.byte 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34
.byte 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b
.byte 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63
.byte 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b
.byte 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13
.byte 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb
.byte 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83
.byte 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb
.byte 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3
sub_0f4c0: mov #byte_0f3c0, er2
mov er0, er3
mov r1h, r4h
mov #0, r0h
loc_0f4cc: mov @er3+, r0l
jsr sub_0f3a4
dec r4h
bne loc_0f4cc
mov #0, r0l
jsr sub_0f3a4
rts
sub_0f4de: zero er1
mov r0h, r1l
and #0x1f, r1l
mov @(byte_0f500,er1), r1l
bmi rts_0f4fe
add er3, er1
mov @(0x12,er1), r2h
inc r2h
beq rts_0f4fe
mov r2h, @(0x12,er1)
rts_0f4fe: rts
byte_0f500: .byte -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1
.byte 1, 2, 3, 4, -1, -1, -1, 5, 6, 7, 8, -1, -1, -1, -1, 9
; IIC_0 Transmission/Reception Completion
iici0: b clr iccr_0.ieic ; I²C Bus Interface Interrupt Enable (IIC_0 I²C Bus Control Register)
clr i
stm er0-er3, @-sp
stm er4-er6, @-sp
mov #i2c_0, er3
mov #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
mov #icsr_0 & M24, er5 ; IIC_0 I²C Bus Status Register
mov #icxr_0 & M24, er6 ; IIC_0 I²C Bus Extended Control Register
bra loc_0f56e
; IIC_1 Transmission/Reception Completion
iici1: b clr iccr_1.ieic ; I²C Bus Interface Interrupt Enable (IIC_1 I²C Bus Control Register)
clr i
stm er0-er3, @-sp
stm er4-er6, @-sp
mov #i2c_1, er3
mov #iccr_1 & M24, er4 ; IIC_1 I²C Bus Control Register
mov #icsr_1 & M24, er5 ; IIC_1 I²C Bus Status Register
mov #icxr_1 & M24, er6 ; IIC_1 I²C Bus Extended Control Register
loc_0f56e: mov @er5, r0h ; icsr (I²C Bus Status Register)
btst #3, r0h ; al (I²C Bus Status Register: Arbitration Lost Flag)
beq loc_0f584
mov #0x1a, r0h
mov r0h, @(9,er3)
bset #7, @er3
bsr i2c_handler4:16 ; state 4 - 16 - 25 30 32 - error
bra loc_0f5b4
loc_0f584: bld #0, r0h ; ackb (I²C Bus Status Register: Acknowledge Bit)
band #4, @er4 ; iccr.trs (I²C Bus Control Register: Transmit/Receive Select)
bcc loc_0f5a2
btst #4, @er3
bne loc_0f5a2
mov #0x10, r0h
mov r0h, @(9,er3)
bset #7, @er3
bsr i2c_handler4:16 ; state 4 - 16 - 25 30 32 - error
bra loc_0f5b4
loc_0f5a2: bclr #4, @er3
mov @(6,er3), r0h ; i2c state
mov #off_0f5be, er1
jsr switch_er1_r0h
loc_0f5b4:
ldm @sp+, er4-er6
ldm @sp+, er0-er3
rte
; er3[6]
; state 0 5 13 17 23 29 - 33 transmit er3[0xe][5] & ~1 (write)
; state 1 6 14 18 - - - 34 transmit er3[0xe][6]
; state 2 - - - - - - - transmit er3[7]
; state 3 - 15 - 24 - - - transmit er3[0xa][er3[5]++] if er3[5] < er3[7], else er3[8] if er3[0] & 1<<6
; state 4 - 16 - 25 30 32 - --> state -1 error
; state - 7 - 19 - - - 35 wait for clock low
; state - 8 - 20 26 31 - 36 transmit er3[0xe][5] | 1 (read)
; state - 9 - - - - - - receive er3[0xa][0]
; state - 10 - - - - - - er3[7] = er3[0xa][0] if er3[0xa][0] > er3[7]
; state - 11 - 21 27 - - - receive er3[0xa][er3[5]++] if er3[5] < er3[7]
; state - 12 - 22 28 - - -
; state - - - - - - - 37 receive er3[0xa][er3[5]++]
off_0f5be: case 0 i2c_handler0 i2c_handler1 i2c_handler2 i2c_handler3
case 4 i2c_handler4 i2c_handler0 i2c_handler1 i2c_handler7
case 8 i2c_handler8 i2c_handler9 i2c_handler10 i2c_handler11
case 12 i2c_handler12 i2c_handler0 i2c_handler1 i2c_handler3
case 16 i2c_handler4 i2c_handler0 i2c_handler1 i2c_handler7
case 20 i2c_handler8 i2c_handler11 i2c_handler12 i2c_handler0
case 24 i2c_handler3 i2c_handler4 i2c_handler8 i2c_handler11
case 28 i2c_handler12 i2c_handler0 i2c_handler4 i2c_handler8
case 32 i2c_handler4
case 33 i2c_handler0 i2c_handler1 i2c_handler7 i2c_handler8
case 37 i2c_handler37
; state 0 5 13 17 23 29 - 33 transmit er3[0xe][5] & ~1 (write)
i2c_handler0: clr c
loc_0f60c: mov @(0x0e,er3), er0
mov @(i2c05o:16,er0), r0h
bst #0, r0h
push er0
bsr incrState:16
pop er0
transmitByte: set i
mov r0h, @(6,er4) ; icdr (I²C Bus Data Register)
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
rts
; state - 8 - 20 26 31 - 36 transmit er3[0xe][5] | 1 (read)
i2c_handler8: set c
bra loc_0f60c
; state 1 6 14 18 - - - 34 transmit er3[0xe][6]
i2c_handler1: bsr incrState:16
mov @(0x0e,er3), er0
mov @(i2c06o:16,er0), r0h
bra transmitByte
; state 2 - - - - - - - transmit er3[7]
i2c_handler2: bsr incrState:16
mov @(7,er3), r0h
bra transmitByte
; state 3 - 15 - 24 - - - transmit er3[0xa][er3[5]++] if er3[5] < er3[7], else er3[8] if er3[0] & 1<<6, else handler4
i2c_handler3: zero er0
mov @(5,er3), r0l
mov @(7,er3), r1h
cmp r0l, r1h
bhi loc_0f678
btst #6, @er3
beq loc_0f674
bsr incrState:16
mov @(8,er3), r0h
bsr transmitByte
bra loc_0f676
loc_0f674: bsr i2c_handler4 ; state 4 - 16 - 25 30 32 - error
loc_0f676: bra rts_0f68a
loc_0f678: mov @(0x0a,er3), er1
add er0, er1
mov @er1, r0h
inc r0l
mov r0l, @(5,er3)
bsr transmitByte
rts_0f68a: rts
; state 4 - 16 - 25 30 32 - error
i2c_handler4: mov #-1, r0h
mov r0h, @(6,er3)
mov @(4,er3), r0h ; do_i2c_0o/do_i2c_1o
jsr schedBackTask
rts
; state - 9 - - - - - - receive er3[0xa][0]
i2c_handler9: mov @(7,er3), r0l
inc r0l
btst #6, @er3
beq loc_0f6aa
inc r0l
loc_0f6aa: mov #0, r0h
bsr maybeRead_r0h
bcs rts_0f6ca
bsr incrState:16
mov @(0x0a,er3), er1
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
mov @(6,er4), r0h ; icdr (I²C Bus Data Register)
mov r0h, @er1
rts_0f6ca: rts
maybeRead_r0h: btst #2, @er3
bne loc_0f6d8
btst #4, @er4 ; iccr.trs (Transmit/Receive Select)
bne read
loc_0f6d8: inc r0h
cmp r0h, r0l
bhi loc_0f6fe
btst #3, @er3
bne loc_0f6f2
bset #2, @er3
bset #0, @er5 ; icsr.ackb (I²C Bus Status Register: Acknowledge Bit)
bset #4, @er4 ; iccr.trs (Transmit/Receive Select: Transmit)
bra loc_0f6fe
loc_0f6f2: mov er4, er2
add #7, er2 ; icmr (I²C Bus Mode Register)
bclr #6, @er2 ; icmr.wait (I²C Bus Mode Register: Wait Insertion Bit)
loc_0f6fe: bild #3, @er3
bst #3, @er3
bcc loc_0f712
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
loc_0f712: bra rts_0f744
read: mov er4, er2
add #7, er2 ; icmr (I²C Bus Mode Register)
bset #6, @er2 ; icmr.wait (I²C Bus Mode Register: Wait Insertion Bit)
bclr #3, @er3
bclr #2, @er3
bclr #0, @er5 ; icsr.ackb (I²C Bus Status Register: Acknowledge Bit)
bclr #4, @er4 ; iccr.trs (Transmit/Receive Select: Receive)
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
bclr #4, @er4 ; iccr.trs (Transmit/Receive Select: Receive)
mov @(6,er4), r0h ; icdr (I²C Bus Data Register)
set c
rts_0f744: rts
; state - 10 - - - - - - er3[7] = er3[0xa][0] if er3[0xa][0] > er3[7]
i2c_handler10: bsr incrState:16
mov @(0x0a,er3), er1
mov @er1, r0h
mov @(7,er3), r0l
cmp r0h, r0l
bls loc_0f75e
mov r0h, @(7,er3)
loc_0f75e: bra i2c_handler11
; state - 11 - 21 27 - - - receive er3[0xa][er3[5]++] if er3[5] < er3[7]
i2c_handler11: mov @(5,er3), r0h
mov @(7,er3), r0l
push er0
btst #6, @er3
beq loc_0f774
inc r0l
loc_0f774: push er0
bsr maybeRead_r0h:16
pop er0
pop er1
bcs rts_0f7c4
inc r0h
mov r0h, @(5,er3)
push er1
cmp r0h, r0l
bhi loc_0f79a
bsr i2c_handler4:16 ; state 4 - 16 - 25 30 32 - error
bra loc_0f7a2
loc_0f79a: cmp r0h, r1l
bhi loc_0f7a2
bsr incrState:16
loc_0f7a2: pop er1
zero er0
mov r1h, r0l
mov @(0x0a,er3), er1
add er0, er1
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
mov @(6,er4), r0h ; icdr (I²C Bus Data Register)
mov r0h, @er1
rts_0f7c4: rts
; state - - - - - - - 37 receive er3[0xa][er3[5]++]
i2c_handler37: btst #4, @er4 ; iccr.trs (Transmit/Receive Select)
beq receive
mov er4, er2
add #7, er2 ; icmr (I²C Bus Mode Register)
bclr #6, @er2 ; icmr.wait (I²C Bus Mode Register: Wait Insertion Bit)
bclr #4, @er4 ; iccr.trs (Transmit/Receive Select: Receive)
bclr #0, @er5 ; icsr.ackb (I²C Bus Status Register: Acknowledge Bit)
bset #6, @er6 ; icxr.hnds (I²C Bus Extended Control Register: Handshake Receive Operation Select: Disable Continuous Receive Operation)
set i
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
mov @(6,er4), r0h ; icdr (I²C Bus Data Register)
bra rts_0f82e
receive: mov @(5,er3), r0l
cmp #1, r0l
bhs notFirstByte ; iccr.trs (Transmit/Receive Select: Transmit)
bset #0, @er5 ; icsr.ackb (I²C Bus Status Register: Acknowledge Bit)
bsr nextStore
set i
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
mov @(6,er4), r0l ; icdr (I²C Bus Data Register)
mov r0l, @er1
bra rts_0f82e
notFirstByte: bset #4, @er4 ; iccr.trs (Transmit/Receive Select: Transmit)
bclr #6, @er6 ; icxr.hnds (I²C Bus Extended Control Register: Handshake Receive Operation Select: Enable Continuous Receive Operation)
bsr i2c_handler4:16 ; state 4 - 16 - 25 30 32 - error
bsr nextStore
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
mov @(6,er4), r0l ; icdr (I²C Bus Data Register)
mov r0l, @er1
rts_0f82e: rts
; er1 = er3[0xa][er3[5]++]
nextStore: mov @(0x0a,er3), er1
mov @(5,er3), r0l
extu r0
extu er0
add er0, er1
inc r0l
mov r0l, @(5,er3)
rts
; state - 12 - 22 28 - - -
i2c_handler12: mov #1, r0
bsr maybeRead_r0h:16
bcs rts_0f864
bsr i2c_handler4:16 ; state 4 - 16 - 25 30 32 - error
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
mov @(6,er4), r0h ; icdr (I²C Bus Data Register)
mov r0h, @(8,er3)
rts_0f864: rts
incrState: mov @(6,er3), r0h
inc r0h
mov r0h, @(6,er3)
rts
; state - 7 - 19 - - - 35 wait for clock low
i2c_handler7: bsr incrState
bset #4, @er3
bsr waitClkLowMax50
set i
bclr #1, @er4 ; iccr.iric (I²C Bus Interface Interrupt Request Flag)
bset #6, @er4 ; iccr.ieic (I²C Bus Interface Interrupt Enable)
mov @er4, r0h ; iicr (I²C Bus Control Register)
bset #2, r0h ; iicr.bbsy (Bus Busy)
bclr #0, r0h ; iicr.scp (Start/Stop Condition Prohibit: Issue Start And Restart Condition)
mov r0h, @er4 ; iicr (I²C Bus Control Register)
rts
waitClkLowMax50:mov #50, r0h
poll: cmp #iccr_0 & M24, er4 ; IIC_0 I²C Bus Control Register
bne 1f
0: b tst p52dr ; Pin P52/SCK0/SCL0 (Port 5 Data Register)
bra loc_0f8a2
1: b tst p86dr ; Pin P86/-IRQ5/SCK1/SCL1 (Port 8 Data Register)
loc_0f8a2: beq rts_0f8a8
dec r0h
bne poll
rts_0f8a8: rts
enqueueI2Ccmd: mov @(i2c03o:16,er0), r3h
cmp #0x10, r3h
bhs loc_0f962:16
mov #byte_0f97c, er5
zero er6
mov r3h, r6l
add er6, er5
mov @er5, r4l
btst #7, r4l
beq loc_0f962:16
btst #2, @er0
beq 0f
1: mov #i2c_1, er5
bclr #2, @er0
bclr #1, @er0
bclr #0, @er0
bra loc_0f8ea
0: mov #i2c_0, er5
loc_0f8ea: btst #7, @er0
bne found
mov er5, er1
add #-2 & (level >= 0x01000062), er1
next: mov @(i2c16o:16,er1), er2
beq notFound
mov er2, er1
cmp er0, er1
bne next
notFound: cmp er0, er1
beq found
bset #7, @er0
bclr #6, @er0
mov @(i2c02o:16,er0), r2l
bld #6, r4l
bst #3, @er0
btst #5, r4l
beq loc_0f924
mov r2l, r4l
bra loc_0f926
loc_0f924: and #0x0f, r4l
loc_0f926: cmp r4l, r2l
blo loc_0f956
mov r4l, @(i2c02o:16,er0)
mov @(i2c05o:16,er0), r3l
bclr #0, r3l
mov r3l, @(i2c05o:16,er0)
mov er0, @(i2c16o:16,er1)
zero er6
mov er6, @(i2c16o:16,er0)
mov @(4,er5), r0h
jsr schedBackTask
mov #0, r0h
clr c
bra loc_0f95a
loc_0f956: mov #0x19, r3h
bsr sub_0f968
loc_0f95a: bra loc_0f960
found: mov #0x1a, r3h
bsr sub_0f968
loc_0f960: bra rts_0f966
loc_0f962: mov #0x19, r3h
bsr sub_0f968
rts_0f966: rts
sub_0f968: btst #7, @er0
beq loc_0f976
mov r3h, @(i2c04o:16,er0)
bset #6, @er0
loc_0f976: mov r3h, r0h
set c
rts
byte_0f97c: .byte 0x00, 0x00, 0x80, 0xc0
.byte 0x81, 0xc1, 0x81, 0xc1
.byte 0x82, 0xc2, 0xa0, 0xe0
.byte 0x00, 0x00, 0xa0, 0xe0
sub_0f98c: mov #1000, r0
mov r0, @word_ffed5c
mov #15, r0
mov r0, @word_ffed58
mov #100, r0
mov r0, @word_ffed5a
mov #5000, r0
mov r0, @word_ffed5e
mov #1, r0h
mov r0h, @byte_ffe55d
b clr iscrl.irq2sca ; IRQ2 Sense Control A (IRQ Sense Control Register L)
b set iscrl.irq2scb ; IRQ2 Sense Control B (IRQ Sense Control Register L)
rts_0f9c8: rts
sub_0f9ca: mov #0, r0h
mov r0h, @byte_ffe55c
rts
task37: mov @byte_ffe55c, r0h
shll #2, r0h
mov #off_0f9f0, er1
add r0h, r1l
addx #0, r1h
bcc loc_0f9ea
inc #1, e1
loc_0f9ea: mov @er1, er0
jmp @er0
off_0f9f0: .long sub_0fa98 ; 0
.long sub_0fa20 ; 1
.long sub_0fa32 ; 2
.long sub_0fa44 ; 3
.long sub_0fa58 ; 4
.long sub_0fa64 ; 5
.long sub_0fabe ; 6
.long sub_0fa92 ; 7
.long sub_0fa20 ; 8
.long sub_0fb2e ; 9
.long sub_0fb3a ; 10
.long sub_0fb4e ; 11
sub_0fa20: mov @word_ffed56, r0
jsr cmpTick
bcs sub_0faac:16
bra loc_0faba:16
sub_0fa32: mov #0, r0h
mov r0h, @byte_ffe55e
bclr #7, @byte_ffff2f:8
b set ier.irq2e ; IRQ2 Enable (Interrupt Enable Register)
bra sub_0faac
sub_0fa44: btst #7, @byte_ffff2f:8
beq loc_0fa50
bsr sub_0faac
set c
bra rts_0fa56
loc_0fa50: mov #task37o, r0h
jsr schedFrontTask
rts_0fa56: rts
sub_0fa58: mov @word_ffed5e, r1
bsr sub_0fa9e
set c
rts
sub_0fa64: b tst p90dr ; Pin P90/-IRQ2/-ADTRG/-ECS2 (Port 9 Data Register)
beq loc_0fa80
mov @word_ffed56, r0
jsr cmpTick
bcc loc_0fa7e
mov #2, r0h
mov r0h, @byte_ffe55c
loc_0fa7e: bra loc_0fa8e
loc_0fa80: bsr sub_0faac
mov @tick, r0
mov r0, @word_ffed56
loc_0fa8e: set c
rts
sub_0fa92: mov #2000, r1
bra sub_0fa9e
sub_0fa98: mov @word_ffed5c, r1
sub_0fa9e: mov @tick, r0
add r1, r0
mov r0, @word_ffed56
sub_0faac: mov @byte_ffe55c, r0h
inc r0h
mov r0h, @byte_ffe55c
loc_0faba: clr c
rts
sub_0fabe: b tst p90dr ; Pin P90/-IRQ2/-ADTRG/-ECS2 (Port 9 Data Register)
beq loc_0fb0e
mov @word_ffed56, r0
jsr cmpTick
mov @word_ffed58, r1
cmp r1, r0
blo loc_0fb04
mov @byte_ffe55e, r0h
inc r0h
mov r0h, @byte_ffe55e
mov @byte_ffe55d, r0l
cmp r0l, r0h
blo loc_0fafa
mov #0x3c, r0h
jsr sub_10cc0
bsr sub_0faac
bra loc_0fb02
loc_0fafa: mov #4, r0h
mov r0h, @byte_ffe55c
loc_0fb02: bra loc_0fb0c
loc_0fb04: mov #0x0a, r0h
mov r0h, @byte_ffe55c
loc_0fb0c: bra loc_0fb2a
loc_0fb0e: mov @word_ffed56, r0
jsr cmpTick
mov @word_ffed5a, r1
cmp r1, r0
blo loc_0fb2a
mov #0x3c, r0h
jsr sub_10cc0
bsr sub_0faac
loc_0fb2a: set c
rts
sub_0fb2e: mov #2, r0h
mov r0h, @byte_ffe55c
set c
rts
sub_0fb3a: bclr #7, @byte_ffff2f:8
b set ier.irq2e ; IRQ2 Enable (Interrupt Enable Register)
mov #1000, r1
jsr sub_0fa9e
set c
rts
sub_0fb4e: btst #7, @byte_ffff2f:8
beq loc_0fb5e
mov #4, r0h
mov r0h, @byte_ffe55c
bra loc_0fb72
loc_0fb5e: mov @word_ffed56, r0
jsr cmpTick
bcc loc_0fb72
mov #2, r0h
mov r0h, @byte_ffe55c
loc_0fb72: set c
rts
; External Interrupt Request 2
irq2: b clr ier.irq2e ; IRQ2 Enable (Interrupt Enable Register)
clr i
bsr sub_0fb80
rte
sub_0fb80: bset #7, @byte_ffff2f:8
stm er0-er3, @-sp
mov #task37o, r0h
jsr schedBackTask
ldm @sp+, er0-er3
rts
init_dac: b clr mstpcrh.mstp10 ; D/A (Module Stop Control Register H)
mov @dacTabsPtr, er0
mov er0, @curDacTabsPtr
mov #dacVals, er2
mov #2, r3h
loc_0fbb0: mov #0, r0h
mov r0h, @(1,er2)
mov #-1, r0h
mov r0h, @(0,er2)
add #2, er2
dec r3h
bne loc_0fbb0
mov #0, r0h
mov r0h, @dadr0:8 ; D/A Data Register 0
b set dacr.daoe0 ; D/A Output Enable 0 (D/A Control Register)
rts
sub_0fbd0: mov #0, r0h
mov r0h, @dadr1:8 ; D/A Data Register 1
b set dacr.daoe1 ; D/A Output Enable 1 (D/A Control Register)
mov #brightnessTab1, er0
bsr sub_0fd64:16
rts
sub_0fbe4: mov #dacVals, er2
mov #2, r3h
loc_0fbec: mov @(0,er2), r0h
cmp #-1, r0h
beq loc_0fbfa
mov #0xfe, r0h
mov r0h, @(0,er2)
loc_0fbfa: add #2, er2
dec r3h
bne loc_0fbec
rts
sub_0fc06: b clr dacr.daoe0 ; D/A Output Enable 0 (D/A Control Register)
b clr dacr.daoe1 ; D/A Output Enable 1 (D/A Control Register)
rts
task38: mov #0, r0h
mov #0, r0l
loc_0fc14: push er0
bsr get8x_AB_
bcs loc_0fc38
mov @(0,er0), r3h
cmp #-1, r3h
beq loc_0fc38
mov @(1,er0), r3l
cmp r3h, r3l
beq loc_0fc38
pop er4
mov #-1, r4l
push er4
jsr @er2
loc_0fc38: pop er0
inc r0h
cmp #2, r0h
blo loc_0fc14
cmp #0, r0l
bne loc_0fc4c
mov #task38o, r0h
jsr schedFrontTask
loc_0fc4c: clr c
rts
get8x_AB_: cmp #2, r0h
bhs tooLarge ; >= 2
mov #2, r1l
mulxu r0h, r1
mov #0, e1
mov #dacVals, er2
add er1, er2
push er2
zero er2
mov r0h, r2l
shll #2, r2l
shll r2l
mov @curDacTabsPtr, er1
add er2, er1
stm er0-er1, @-sp
jsr sub_074d0
ldm @sp+, er0-er1
bcc loc_0fc92
btst r0h, @byte_ffff30:8
bne loc_0fc92
adds #4, er1
loc_0fc92: mov @er1, er1
beq loc_0fcb0
mov #off_0fcbc, er3
shlr er2
add er3, er2
mov @er2, er2
beq loc_0fcac
clr c
bra loc_0fcae
loc_0fcac: set c
loc_0fcae: bra loc_0fcb2
loc_0fcb0: set c
loc_0fcb2: pop er0
bra rts_0fcba
tooLarge: set c
rts_0fcba: rts
off_0fcbc: .long sub_0fccc, sub_0fd42, NULL, NULL
sub_0fccc: push er0
bsr sub_0fd1c
pop er1
bcs rts_0fd1a
btst #7, @byte_ffff30:8
beq loc_0fce0
mov #0, r0h
loc_0fce0: mov r0h, @dadr0:8 ; D/A Data Register 0
b set dacr.daoe0 ; D/A Output Enable 0 (D/A Control Register)
push er1
cmp #0, r0h
bne loc_0fcf4
jsr sub_0676e
bra loc_0fcf8
loc_0fcf4: jsr sub_06792
loc_0fcf8: btst #6, @byte_ffff30:8
beq loc_0fd08
bclr #6, @byte_ffff30:8
mov #0x0b, r0h
jsr sub_063a0
loc_0fd08: pop er1
mov @(0,er1), r0h
bld #7, @byte_ffff30:8
bst #6, r0h
jsr sub_10f26
rts_0fd1a: rts
sub_0fd1c: mov @(1,er0), r2l
mov @er1+, r2h
beq loc_0fd3e
dec r2h
cmp r2h, r2l
bls loc_0fd2c
mov r2h, r2l
loc_0fd2c: mov r2l, @(0,er0)
mov #0, r2h
mov #0, e2
add er2, er1
mov @er1, r0h
clr c
bra rts_0fd40
loc_0fd3e: set c
rts_0fd40: rts
sub_0fd42: push er0
bsr sub_0fd1c
pop er1
bcs rts_0fd62
mov r0h, @dadr1:8 ; D/A Data Register 1
b set dacr.daoe1 ; D/A Output Enable 1 (D/A Control Register)
mov @(0,er1), r0h
bld #1, @byte_ffff30:8
bst #5, r0h
jsr sub_10f3a
rts_0fd62: rts
sub_0fd64: mov #curBrightnessTab, er1
mov #0, r2h
loc_0fd6c: mov @er0, r2l
mov r2l, @er1
inc #1, er0
inc #1, er1
inc r2h
cmp #9 * 2, r2h
blo loc_0fd6c
rts
dacUp: mov #1, r0l
bra loc_0fd82
dacDown: mov #-1, r0l
loc_0fd82: push er0
bsr get8x_AB_:16
pop er2
bcs rts_0fdd2
mov @(1,er0), r3l
cmp #-1, r2l
bne loc_0fda0
cmp #0, r3l
beq loc_0fd9e
dec r3l
loc_0fd9e: bra loc_0fdaa
loc_0fda0: inc r3l
mov @er1, r3h
cmp r3l, r3h
bhi loc_0fdaa
dec r3l
loc_0fdaa: cmp #dacVals, er0
bne loc_0fdc2
bset #6, @byte_ffff30:8
btst #7, @byte_ffff30:8
beq loc_0fdc2
bclr #7, @byte_ffff30:8
bra loc_0fdc6
loc_0fdc2: mov r3l, @(1,er0)
loc_0fdc6: mov #0xfe, r2l
mov r2l, @(0,er0)
mov #task38o, r0h
jsr schedBackTask
rts_0fdd2: rts
loc_0fdd4: and #0x1f, r0h
push er0
jsr get8x_AB_
pop er2
bcs rts_0fe26
mov r2l, r3l
and #0x1f, r3l
mov r3l, @(1,er0)
cmp #0, r2h
bne loc_0fdfa
bld #6, r2l
bst #7, @byte_ffff30:8
bclr #6, @byte_ffff30:8
loc_0fdfa: mov #0xfe, r3h
mov r3h, @(0,er0)
btst r2h, @byte_ffff30:8
beq loc_0fe14
btst #5, r2l
bne loc_0fe12
bclr r2h, @byte_ffff30:8
jsr sub_0fe38
loc_0fe12: bra loc_0fe20
loc_0fe14: btst #5, r2l
beq loc_0fe20
bset r2h, @byte_ffff30:8
jsr sub_0fe38
loc_0fe20: mov #task38o, r0h
jsr schedBackTask
rts_0fe26: rts
bsr get8x_AB_:16
bcs loc_0fe32
mov @(0,er0), r0h
loc_0fe32:
btst #7, @byte_ffff30:8
rts
sub_0fe38: mov #0, r0h
loc_0fe3a: push er0
bsr get8x_AB_:16
bcs loc_0fe4a
mov #0xfe, r2l
mov r2l, @(0,er0)
loc_0fe4a: pop er0
inc r0h
cmp #2, r0h
blo loc_0fe3a
mov #task38o, r0h
jsr schedBackTask
rts
sub_0fe5c: jsr sub_0126e
bcc rts_0fe66
b set dacr.daoe0 ; D/A Output Enable 0 (D/A Control Register)
rts_0fe66: rts
sub_0fe68: jsr sub_01272
bcs rts_0fe72
b clr dacr.daoe0 ; D/A Output Enable 0 (D/A Control Register)
rts_0fe72: rts
volumeMute: btst #7, @byte_ffff30:8
bne rts_0fe8c
bset #7, @byte_ffff30:8
mov #0xfe, r0h
mov r0h, @dacVals
mov #task38o, r0h
jsr schedBackTask
rts_0fe8c: rts
sub_0fe8e: mov @dacVals, r0h
cmp #-1, r0h
bne rts_0fe9c
mov #0x80, r0h
mov r0h, @dadr0:8 ; D/A Data Register 0
rts_0fe9c: rts
get8x_ab: bsr get8x_AB_:16
mov @er1, r0h
dec r0h
rts
sub_0fea8: mov r0h, r3h
and #0x3f, r3h
cmp #2, r3h
bhs rts_0ff64:16
stm er0-er1, @-sp
mov @curDacTabsPtr, er2
cmp #RAM & M24, er2
bhs noalloc
mov #4 * 4, r0
jsr malloc
bcs noalloc
mov @curDacTabsPtr, er1
mov er0, @curDacTabsPtr
mov #4, r2h
loc_0fee2: mov @er1+, er3
mov er3, @er0
adds #4, er0
dec r2h
bne loc_0fee2
clr c
noalloc: ldm @sp+, er0-er1
bcs rts_0ff64
zero er3
mov r0h, r3l
and #0x1f, r3l
shll #2, r3
shll r3
btst #6, r0h
beq loc_0ff0a
adds #4, er3
loc_0ff0a: mov @curDacTabsPtr, er4
add er4, er3
mov @er3, er2
cmp #RAM & M24, er2
blo loc_0ff26
mov @er2, r4h
cmp r0l, r4h
bhs loc_0ff42
loc_0ff26: push er3
stm er0-er1, @-sp
mov #0, r0h
inc r0l
jsr malloc
mov er0, er2
ldm @sp+, er0-er1
pop er3
bra loc_0ff44
loc_0ff42: clr c
loc_0ff44: bcs rts_0ff64
push er2
mov r0l, @er2
adds #1, er2
loc_0ff4e: mov @er1+, r0h
mov r0h, @er2
adds #1, er2
dec r0l
bne loc_0ff4e
pop er2
mov er2, @er3
bsr sub_0fe38:16
rts_0ff64: rts
sub_0ff66: mov r0h, r2l
shlr #2, r2l
shlr #2, r2l
shlr #2, r2l
and #0x3f, r0h
cmp #5, r0h
bhs rts_0ff88
mov r0h, r0l
shll #2, r0l
extu r0
extu er0
mov @(off_0ff8a,er0), er1
jsr @er1
rts_0ff88: rts
off_0ff8a: .long rts_0ffdc ; 0
.long sub_0ff9e ; 1
.long rts_0ffdc ; 2
.long rts_0ffdc ; 3
.long rts_0ffdc ; 4
sub_0ff9e: cmp #num_brightnessTabs, r2l
bhs rts_0ffca
shll #2, r2l
extu r2
extu er2
mov @(brightnessTabs,er2), er0
bsr sub_0fd64:16
mov #1, r0h
bsr get8x_AB_:16
bcs rts_0ffca
mov #0xfe, r1h
mov r1h, @(0,er0)
mov #task38o, r0h
jsr schedBackTask
rts_0ffca: rts
brightnessTabs: .long brightnessTab1, brightnessTab2, brightnessTab3, brightnessTab1
rts_0ffdc: rts
enableLPC2: b clr mstpcrl.mstp0 ; LPC, WUEMRB (Module Stop Control Register L)
b set hicr_0.lpc2e ; LPC Channel 2 Enable (0x62/0x66) (LPC Host Interface Control Register 0)
mov #0, r0h
mov r0h, @ibfi2Flags:8
mov r0h, @byte_ffe63f
mov r0h, @byte_ffe640
mov r0h, @byte_ffe641
mov #0, r0h
mov r0h, @str2 ; LPC Status Register 2 (0x66)
b set hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
mov #0x55, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
jsr sub_072be
mov r0h, @byte_ffe59b ; 0x3c
jsr sub_127cc
mov r0h, @byte_ffe5e5 ; 0x86
mov r0l, @byte_ffe5e6 ; 0x87
rts
task40: set i
btst #2, @ibfi2Flags:8
beq loc_1005e
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
bclr #2, @ibfi2Flags:8
b set str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
mov #0x90, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
clr i
jsr lowPulsePB1
mov @word_ffe9bc, r0
add #0x0b, r0
mov r0, @word_ffed74
loc_1005e: clr i
btst #5, @ibfi2Flags:8 ; 5 cmd recvd
beq loc_100c6
btst #7, @execFlags:8
beq loc_10082
bclr #7, @execFlags:8
mov #off_10c02, er0
mov er0, @long_ffed6c
bset #5, @execFlags:8
loc_10082: btst #6, @execFlags:8
beq loc_1009e
bclr #6, @execFlags:8
mov #off_10c3a, er0
mov er0, @long_ffed6c
bclr #5, @execFlags:8
loc_1009e: mov @long_ffed6c, er0
beq loc_100c6
jsr sub_10b86
bcs loc_100c6
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
mov #0, er0
mov er0, @long_ffed6c
b set hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
loc_100c6: b tst str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
beq loc_100f4
mov @word_ffed74, r0
jsr sub_016dc
bcc loc_100f2
set i
b tst str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
beq loc_100f0
b clr str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
clr i
jsr lowPulsePB1
loc_100f0: clr i
loc_100f2: bra loc_10100
loc_100f4: btst #5, @ibfi2Flags:8 ; 5 cmd recvd
bne loc_10100
mov #task40o, r0h
jsr schedFrontTask
loc_10100: mov #0, r0h
mov r0h, @cntr20
btst #0, @execFlags:8
beq loc_1011c
set i
bclr #0, @execFlags:8
b set hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
clr i
loc_1011c: clr c
rts
task41: btst #4, @execFlags:8
beq loc_1013c
btst #2, @execFlags:8
beq loc_1013a
mov #0x2f, r0h
jsr sub_10cc0
jsr sub_101f4
jsr sub_10222
loc_1013a: bra loc_10158
loc_1013c: mov @word_ffed72, r0
beq loc_10158
mov @word_ffed70, r0
jsr sub_016e4
bcc loc_10158
mov #0x2e, r0h
jsr sub_10cc0
bsr sub_101ce
loc_10158: bclr #2, @execFlags:8
btst #4, @execFlags:8
bne loc_1016c
mov #task41o, r0h
mov #1000, r1
jsr schedBackTaskDelayed
loc_1016c: mov #task41o, r0h
jsr schedFrontTask
clr c
rts
task39_1: btst #5, @ibfi2Flags:8 ; 5 cmd recvd
bne loc_101a6
b tst str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
bne loc_101a6
mov @byte_ffe641, r0h
bne loc_101a6
jsr sub_10db8
bcs loc_101a6
set i
mov r0h, @byte_ffe641
b set str2.sci_evt ; SCI Event Pending (LPC Status Register 2 (0x66))
clr i
jsr lowPulsePB1
loc_101a6: jsr sub_102ee
mov @byte_ffe63f, r0h
mov @byte_ffe640, r0l
cmp r0h, r0l
bne loc_101ca
mov #task39o, r0h
mov #10, r1
jsr schedBackTaskDelayed
mov #task39o, r0h
jsr schedFrontTask
loc_101ca: clr c
rts
sub_101ce: btst #4, @execFlags:8
bne rts_101f2
mov @byte_ffe560, r0h ; 0x01
btst #3, r0h
beq loc_101e6
jsr sub_04720
jsr sub_07e32
loc_101e6: bset #4, @execFlags:8
bset #3, @byte_ffe593 ; 0x34
rts_101f2: rts
sub_101f4: btst #4, @execFlags:8
beq rts_10220
jsr sub_0472a
jsr sub_07e38
jsr sub_10222
bclr #4, @execFlags:8
btst #3, @execFlags:8
beq loc_10218
jsr sub_04b70
bclr #3, @execFlags:8
loc_10218: bclr #3, @byte_ffe593 ; 0x34
rts_10220: rts
sub_10222: mov @word_ffed72, r0
mov @word_ffe9be, r1
add r1, r0
mov r0, @word_ffed70
rts
sub_10238: mov #byte_ffe591, er1 ; 0x32
mov @long_ffed7a, er2
mov @er2+, r3h
loc_10248: mov @er1, r4l
beq loc_10284
mov #0, r3l
loc_1024e: btst r3l, r4l
beq loc_10276
mov @er2, r4h
cmp r4h, r0h
bne loc_10276
set i
mov @(byte_ffe5ad - byte_ffe591:16,er1), r4h
bset r3l, r4h
mov r4h, @(byte_ffe5ad - byte_ffe591:16,er1)
mov r4h, @(byte_ffe595 - byte_ffe591:16,er1)
clr i
mov r4h, @(byte_ffe112 - byte_ffe591,er1)
bsr sub_10296
bra rts_10294
loc_10276: adds #1, er2
dec r3h
beq loc_10282
inc r3l
cmp #7, r3l
bls loc_1024e
loc_10282: bra loc_1028c
loc_10284: add #0xf8, r3h
add #8, er2
loc_1028c: adds #1, er1
mov r3h, r3l
beq rts_10294
bpl loc_10248
rts_10294: rts
sub_10296: set i
mov @byte_ffe5ad, r0h ; 0x4e
bne loc_102a8
mov @byte_ffe5ae, r0h ; 0x4f
beq loc_102cc
loc_102a8: push er0
stc ccr, r0l
set i
b clr pb0odr ; Pin PB0/-WUE0/HIRQ3/-LSMI (Port B Output Data Register)
mov @PBDDRcopy, r0h
bset #0, r0h
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
bra loc_102ea
loc_102cc: push er0
stc ccr, r0l
set i
mov @PBDDRcopy, r0h
bclr #0, r0h
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
loc_102ea: clr i
rts
sub_102ee:
jsr sub_10296
rts
ckFlashStatus: set i
b set stcr.flshe ; Flash Memory Control Register Enable (Serial Timer Control Register)
mov @flmcr1:8, r0h ; Flash Memory Control Register 1
mov @flmcr2:8, r0l ; Flash Memory Control Register 2
b clr stcr.flshe ; Flash Memory Control Register Enable (Serial Timer Control Register)
clr i
mov r0, r1
bclr #7, r1h ; clear Flash Write Enable
mov r1, r2
bne flashActivity
btst #7, r0h ; Flash Write Enable
beq noFlashActivity
mov #3, r0h
bra writeEnabledNotActive
noFlashActivity:mov #4, r0h
writeEnabledNotActive:
bra rts_1031a
flashActivity: mov #0, r0h
rts_1031a: rts
sub_1031c: b set hicr_0.lpc2e ; LPC Channel 2 Enable (0x62/0x66) (LPC Host Interface Control Register 0)
b set hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
jsr sub_10dec
mov #0, r0h
mov r0h, @byte_ffe641
jsr sub_11012
jsr sub_10222
rts
task39_2: jsr sub_10db8
cmp #0, r0h
beq loc_10358
mov r0h, @byte_ffe59b ; 0x3c
cmp #0x22, r0h
bne loc_10354
jsr sub_0773a
loc_10354: jsr sub_077fc
loc_10358: jsr sub_102ee
clr c
rts
sub_10360: b clr hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
mov #0, r0h
mov r0h, @byte_ffe59b ; 0x3c
jsr sub_10dec
setInH b 1 ; Pin PB1/-WUE1/HIRQ4/LSCI
setInH b 0 ; Pin PB0/-WUE0/HIRQ3/-LSMI
b clr hicr_0.lpc2e ; LPC Channel 2 Enable (0x62/0x66) (LPC Host Interface Control Register 0)
rts
sub_1039e: bsr sub_10360
mov #0, r0h
set i
mov r0h, @byte_ffe112
mov r0h, @byte_ffe113
mov r0h, @byte_ffe5ad ; 0x4e
mov r0h, @byte_ffe5ae ; 0x4f
mov r0h, @byte_ffe595 ; 0x36
mov r0h, @byte_ffe596 ; 0x37
clr i
mov @byte_ffe110, r0h
mov r0h, @byte_ffe591 ; 0x32
mov @byte_ffe111, r0h
mov r0h, @byte_ffe592 ; 0x33
rts
getFlashStatus: mov @off_00470, er0
mov er0, @long_ffed7a
mov @byte_ffe112, r0h
mov @byte_ffe113, r0l
set i
mov r0h, @byte_ffe5ad ; 0x4e
mov r0h, @byte_ffe595 ; 0x36
mov r0l, @byte_ffe5ae ; 0x4f
mov r0l, @byte_ffe596 ; 0x37
mov @byte_ffe110, r0h
mov r0h, @byte_ffe591 ; 0x32
mov @byte_ffe111, r0h
mov r0h, @byte_ffe592 ; 0x33
clr i
bsr ckFlashStatus:16
mov r0h, @byte0xD0 ; flash status
rts
; 0x06 r; w sets bit #1 of 0x34
; 0x0C r; w special
; 0x2F r/w fan ctrl/status
; 0x30 r/w volume
; 0x31 r/w LCD brightness
; 0x3B r 7 !P74PIN, 6 PD5PIN, 5 PD6PIN, 4 PD2PIN, 3 ?, 2 PC4PIN, 1 P13DR, 0 !PC5PIN
; 0x51 r; w can only clear bit #6
; 0x54 r/w year LSB
; 0x55 r/w year MSB
; 0x56 r/w month
; 0x57 r/w day
; 0x58 r/w hour
; 0x59 r/w minute
; 0x5A r/w second
; 0x78 r/w CPU temperature
; 0x79 r/w APS temperature
; 0x7A r/w CardBus temperature
; 0x7B r/w GPU temperature
; 0x7C r/w BAT temperature
; 0x7D r/w ? temperature
; 0x7E r/w BAT temperature
; 0x7F r/w ? temperature
; 0x84 r special (cache MSB)/w fan speed LSB
; 0x85 r special cached/w fan speed MSB
; 0x8C r; w special
; 0x92 w I/O register address MSB
; 0x93 w I/O register address LSB
; 0x94 r/? I/O register data (PIN register)
; 0x95 r/? I/O register data (copy of DDR)
; 0xBx r/w own (RAM)
; 0xC0 r/w BUS temperature
; 0xC1 r/w PCI temperature
; 0xC2 r/w PWR temperature
; 0xC3 r/w ? temperature
; 0xC4 r/w ? temperature
; 0xC5 r/w ? temperature
; 0xC6 r/w ? temperature
; 0xC7 r/w ? temperature
; 0xC8 r/w tab sel 0x[012]x, 0xF[01]
; 0xD0 r (RAM)
; 0xDx r (ROM)
; 0xE8 r version major << 4 (0x10)
; 0xE9 r version minor << 4 (0x40)
; 0xEA r machine type (0x4A)
; 0xEE r (RAM)
; 0xEx r (ROM)
; 0xF0-0xF7 r build id (e.g. "1YHT28WW")
; 0xF8-0xFB r build timestamp #1 (seconds since somewhere in 1999?)
; 0xFC-0xFF r build timestamp #2 (seconds since somewhere in 1999?)
; LPC IDR2 Reception Completion (0x62/0x66)
ibfi2: b clr hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
clr i
stm er0-er3, @-sp
b tst str2.c_d2 ; Command/-Data (0x66/0x62) (LPC Status Register 2 (0x66))
beq getData
bclr #2, @ibfi2Flags:8
mov @idr2, r0h ; LPC Input Data Register 2 (0x62/0x66)
mov r0h, r0l
shlr r0l
shlr r0l
and #0x3c, r0l
mov #cmdTab, er1 ; r0l: read byte, r0h: byte #
add r0l, r1l
addx #0, r1h
bcc loc_10472
inc #1, e1
loc_10472: mov @er1, er1
beq invalidCmd
mov r0h, r0l
shll r0l
shll r0l
and #0x3c, r0l
add r0l, r1l
addx #0, r1h
bcc loc_10488
inc #1, e1
loc_10488: mov @er1, er1
beq invalidCmd
mov #0, r0h
mov r0h, @dataCtr
mov er1, @cmdPtr
bset #5, @ibfi2Flags:8 ; 5 cmd recvd
jsr @er1
bra loc_104aa
invalidCmd: mov #0, r0h
clr c
loc_104aa: bra done1
getData: btst #5, @ibfi2Flags:8 ; 5 cmd recvd
beq invalidData
mov @dataCtr, r0h
inc r0h
mov r0h, @dataCtr
mov @cmdPtr, er1
mov @idr2, r0l ; LPC Input Data Register 2 (0x62/0x66)
jsr @er1
bra done1
invalidData: mov @idr2, r0l ; LPC Input Data Register 2 (0x62/0x66)
clr c
mov #0, r0h ; re-enable interrupt
done1: bcs noErr1
push er0
bsr lowPulsePB1
pop er0
noErr1: btst #5, @ibfi2Flags:8 ; 5 cmd recvd
bne loc_1050a
b tst str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
bne loc_1050a
mov @cntr20, r0l
inc r0l
mov r0l, @cntr20
cmp #0x20, r0l
blo loc_1050a
mov #1, r0h
bset #0, @execFlags:8
loc_1050a: push er0
mov #task40o, r0h
jsr schedBackTask
pop er0
cmp #0, r0h
bne loc_1052a
ldm @sp+, er0-er3
set i
b set hicr_2.ibfie2 ; IDR2 Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
bra rts_1052e
loc_1052a: ldm @sp+, er0-er3
rts_1052e: rte
lowPulsePB1: btst #6, @ibfi2Flags:8
bne rts_10584
set i
push er0
stc ccr, r0l
set i
b clr pb1odr ; Pin PB1/-WUE1/HIRQ4/LSCI (Port B Output Data Register)
mov @PBDDRcopy, r0h
bset #1, r0h
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
mov #16, r1h ; 16 * 5 states @ 10 MHz = 8 µs
lowDelay: nop
nop
dec r1h
bne lowDelay
push er0
stc ccr, r0l
set i
mov @PBDDRcopy, r0h
bclr #1, r0h
mov r0h, @PBDDRcopy
mov r0h, @pbddr:8 ; Port B Data Direction Register
ldc r0l, ccr
pop er0
clr i
rts_10584: rts
cmdTab: .long NULL ; 0 ; r0l: read byte, r0h: byte #
.long NULL ; 1
.long NULL ; 2
.long NULL ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long cmd8x ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long cmdCx ; 12
.long cmdDx ; 13
.long NULL ; 14
.long NULL ; 15
cmd8x: .long cmd80read ; 0 ; ACPI commands
.long cmd81write ; 1
.long cmd82burstEnable ; 2
.long cmd83burstDisable ; 3
.long cmd84query ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long NULL ; 14
.long NULL ; 15
cmdCx: .long NULL ; 0
.long NULL ; 1
.long NULL ; 2
.long NULL ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long NULL ; 14
.long cmdCFexec ; 15
cmdDx: .long cmdD0 ; 0
.long cmdD1 ; 1
.long cmdD2 ; 2
.long cmdD3 ; 3
.long cmdD4 ; 4
.long cmdD5 ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long NULL ; 14
.long NULL ; 15
cmdD5: mov @byte_ffe644, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
clr c
mov #0, r0h
rts
cmdD4: cmp #0, r0h
beq cmd
mov #0, r0h
push er0
bsr readByte
mov r0h, @byte_ffe644
pop er0
adds #1, er0
mov #1, r0h
cmd: bra cmd80read
cmd80read: cmp #0, r0h
beq cmdByte
mov #0, r0h
bsr readByte
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
cmdByte: clr c
mov #0, r0h
rts
; r0: 0x00xx offset
readByte: zero er1
mov r0, r1
shlr #2, r1
shlr r1
and #~1, r1l
add #readTab, er1
mov @er1, r2
exts er2
add er2, er1
jmp @er1
readTab: case 0 retDefault retDefault retDefault retDefault
case 4 retDefault retDefault retDefault retDefault
case 8 ret8x_4ab retDefault retAx retBDEFx
case 12 retDefault
case 13 retBDEFx retBDEFx retBDEFx
retDefault: mov #0x0a, r1
cmp r1, r0
bne loc_10714
jsr ret0A
bra rts_10778
loc_10714: mov #0, e0
cmp #0x4e, r0
beq ret4x_ef
cmp #0x4f, r0
bne loc_10754
ret4x_ef: mov @(dataTab,er0), r1h
mov #0, r1l
mov r1l, @(dataTab,er0)
mov r1l, @(byte_ffe595 - 0x4e,er0)
mov r1l, @(byte_ffe112 - 0x4e,er0)
push er1
jsr sub_102ee
pop er0
bra rts_10778
loc_10754:
mov #0x24, r1
cmp r1, r0
bne loc_10762
jsr ret24
bra rts_10778
loc_10762: mov #0x25, r1
cmp r1, r0
bne loc_10770
jsr ret25
bra rts_10778
loc_10770: mov @(dataTab,er0), r0h
rts_10778: rts
ret8x_4ab: cmp #0x84, r0 ; fan speed LSB
bne loc_10790
mov #0, r0h
jsr getFanSpeed
mov r0h, @byte_ffe5e4 ; 0x85 fan speed MSB
mov r0l, r0h
bra rts_107ac
loc_10790: cmp #0x8a, r0
bne loc_1079a
mov #0, r0h
bra loc_107a2
loc_1079a: cmp #0x8b, r0
bne loc_107a8
mov #1, r0h
loc_107a2: jsr get8x_ab
bra rts_107ac
loc_107a8: bra retDefault:16
rts_107ac: rts
retAx: mov @byte_ffe5e0, r1h ; 0x81
mov @byte_ffe644, r1l
mov @long_ffed76, er2
bsr sub_10878:16
mov r1l, @byte_ffe644
mov er2, @long_ffed76
rts
sub_107d6: push er0
mov r1h, r0h
and #0x0f, r0h
jsr sub_137aa
pop er1
bcs loc_107f4
and #0x0f, r1
exts er1
add er1, er0
mov @er0, r0h
bra rts_107f6
loc_107f4: mov #0, r0h
rts_107f6: rts
sub_107f8: and #0x0f, r0
extu er0
cmp #0x30, r1h
bne loc_1080e
mov #long_ffe801, er2
add er0, er2
mov @er2, r0h
bra rts_10830
loc_1080e: cmp #0x31, r1h
bne loc_1081e
mov #long_ffe7f1, er2
add er0, er2
mov @er2, r0h
bra rts_10830
loc_1081e: cmp #0x32, r1h
bne loc_1082e
mov #long_ffe823, er2
add er0, er2
mov @er2, r0h
bra rts_10830
loc_1082e: mov #0, r0h
rts_10830: rts
sub_10832: cmp #0x40, r1h
bne loc_10860
and #0x0f, r0
cmp #4, r0l
bhs loc_10860
push r0
and #0x0e, r0
extu er0
shll er0
mov @(off_10864,er0), er2
jsr @er2
pop r0
mov r1l, r0h
btst #0, r0l
bne rts_10862
mov r1h, r0h
bra rts_10862
loc_10860: mov #0, r0h
rts_10862: rts
off_10864: .long sub_1086c, sub_10872
sub_1086c: mov #0, r1
rts
sub_10872: mov #1, r1
rts
sub_10878: stm er4-er5, @-sp
mov r1h, r5h
and #0xf0 - 0x10 & type1R, r5h
cmp #0x20, r5h
bne loc_1089c
push er1
push er2
bsr sub_107d6:16
pop er1
pop er2
bra loc_1096c:16
loc_1089c:
cmp #0x30, r5h
bne loc_108b8
push er1
push er2
bsr sub_107f8:16
pop er1
pop er2
bra loc_1096c:16
loc_108b8: cmp #0x40, r5h
bne loc_108d4
push er1
push er2
bsr sub_10832:16
pop er1
pop er2
bra loc_1096c:16
loc_108d4: btst #4, r1h
bne loc_108e0
mov #byte_ffeaac, er5
bra loc_108e6
loc_108e0: mov #byte_ffeb46, er5
loc_108e6: btst #4, @er5
beq loc_10964:16
zero e0
zero er3
mov r1h, r3l
and #0x0f, r3l
cmp #8, r3l
bhs loc_10960
shll r3l
add #word_10972, er3
mov @er3, r4
cmp #-1, r4
beq loc_10960
btst #7, r4h
beq loc_1092a
bclr #7, r4h
and #0x0f, r0
cmp r4h, r0l
blo loc_1091e
mov #0, r0h
bra loc_10928
loc_1091e: mov #0, r4h
exts er4
add er0, er4
add er5, er4
mov @er4, r0h
loc_10928: bra loc_1095e
loc_1092a: exts er4
add er4, er3
mov er0, er4
and #0x0e, r4
add er4, er3
mov @er3, r4
cmp #-1, r4
beq loc_1095c
exts er4
add er5, er4
btst #0, r0l
beq loc_10952
cmp er4, er2
bne loc_1094e
mov r1l, r0h
bra loc_10950
loc_1094e: mov @er4, r0
loc_10950: bra loc_1095a
loc_10952: mov @er4, r0
mov r0h, r1l
mov r0l, r0h
mov er4, er2
loc_1095a: bra loc_1095e
loc_1095c: mov #0, r0h
loc_1095e: bra loc_10962
loc_10960: mov #0, r0h
loc_10962: bra loc_1096c
loc_10964: mov #0, r0h
mov #-1, er2
loc_1096c: ldm @sp+, er4-er5
rts
word_10972: .word 0x0010 ; 0
.word 0x001e ; 1
.word 0x002c ; 2
.word -1 ; 3
.word 0x845c ; 4
.word 0x903c ; 5
.word 0x904c ; 6
.word 0x9070 - 0x10 & -(type1R && level < 0x01030069) ; 7
.word 0x0020 ; 8
.word 0x0022 ; 9
.word 0x0098 - 0x20 & -(type1R && level < 0x01030069) ; 10
.word 0x001e ; 11
.word 0x001a ; 12
.word 0x0016 ; 13
.word 0x0028 ; 14
.word 0x002e ; 15
.word 0x0010 ; 16
.word 0x000a ; 17
.word 0x0030 ; 18
.word 0x0018 ; 19
.word 0x0014 ; 20
.word 0x0024 ; 21
.word -1 ; 22
.word -1 ; 23
.word 0x0032 ; 24
.word 0x0034 ; 25
.word 0x0090 - 0x20 & -(type1R && level < 0x01030069) ; 26
.word 0x0036 ; 27
.word 0x0038 ; 28
.word 0x003a ; 29
.word 0x001c ; 30
.word -1 ; 31
.word 0
retBDEFx: mov #off_109d6, er1
cmp #0xd0, r0
blo loc_109c4
sub #0x10, r0
loc_109c4: sub #0xb0, r0
shll #2, r0
zero e0
add er0, er1
mov @er1, er0
mov @er0, r0h
rts
off_109d6: .long byte0xB0+ 0, byte0xB0+ 1, byte0xB0+ 2, byte0xB0+ 3
.long byte0xB0+ 4, byte0xB0+ 5, byte0xB0+ 6, byte0xB0+ 7
.long byte0xB0+ 8, byte0xB0+ 9, byte0xB0+10, byte0xB0+11
.long byte0xB0+12, byte0xB0+13, byte0xB0+14, byte0xB0+15
.long byte0xD0
.long byteZero, byteZero, byteZero
.long byteZero, byteZero, byteZero, byteZero
.long byteZero, byteZero, byteZero, byteZero
.long byteZero, byteZero, byteZero, byteZero
.long byteZero
.long byteZero, byteZero, byteZero
.long byteZero, byteZero, byteZero, byteZero
.long byte0xE8 ; version major
.long byte0xE8+1 ; version minor
.long byte0xE8+2 ; machine id
.long byte0xEB
.long byte0xEC
.long byte0xEC+1
.long byte0xEE
.long byte0xEF
.long byte0xF0 ; build id (e.g. .ascii "1YHT28WW")
.long byte0xF0+1 ; build id
.long byte0xF0+2 ; build id
.long byte0xF0+3 ; build id
.long byte0xF0+4 ; build id
.long byte0xF0+5 ; build id
.long byte0xF0+6 ; build id
.long byte0xF0+7 ; build id
.long byte0xF8 ; build timestamp #1
.long byte0xF8+1 ; build timestamp #1
.long byte0xF8+2 ; build timestamp #1
.long byte0xF8+3 ; build timestamp #1
.long byte0xFC ; build timestamp #2
.long byte0xFC+1 ; build timestamp #2
.long byte0xFC+2 ; build timestamp #2
.long byte0xFC+3 ; build timestamp #2
byteZero: .byte 0x00
.fill 3
byte0xEC:
.byte 0xa4, 0x2e
; write
cmd81write: cmp #1, r0h
bne loc_10ae8
mov r0l, @writeOffset
bra loc_10af8
loc_10ae8: cmp #2, r0h
bne loc_10af8
mov @writeOffset, r1l
bsr jWriteByte
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
loc_10af8: clr c
mov #0, r0h
rts
jWriteByte: jsr writeByte
rts
cmd82burstEnable:
bset #2, @ibfi2Flags:8
set c
mov #0, r0h
rts
cmd83burstDisable:
b clr str2.burst ; Burst Mode For Polled Command Processing (LPC Status Register 2 (0x66))
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
clr c
mov #0, r0h
rts
cmd84query: mov @byte_ffe641, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
mov #0, r0h
mov r0h, @byte_ffe641
b clr str2.sci_evt ; SCI Event Pending (LPC Status Register 2 (0x66))
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
clr c
mov #0, r0h
rts
cmdD0: bset #7, @execFlags:8
set c
mov #1, r0h
rts
cmdD1: bset #6, @execFlags:8
clr c
mov #1, r0h
rts
cmdD2: bset #6, @ibfi2Flags:8
bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
clr c
mov #0, r0h
rts
cmdD3: bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
bld #6, @ibfi2Flags:8
bclr #6, @ibfi2Flags:8
mov #0, r0h
rts
cmdCFexec: jsr sub_12826
bcs loc_10b7c
jmp sub_11092
loc_10b7c: bclr #5, @ibfi2Flags:8 ; 5 cmd recvd
clr c
mov #0, r0h
rts
sub_10b86: mov @tick, r1
add #10, r1l
addx #0, r1h
loc_10b90: mov @str2, r0h ; LPC Status Register 2 (0x66)
btst #1, r0h
beq loc_10ba0
btst #3, r0h
beq loc_10ba0
clr c
bra loc_10bdc
loc_10ba0: push er1
btst #5, @execFlags:8
beq loc_10bbe
btst #0, r0h
bne loc_10bba
bsr sub_10bf0
bcc loc_10bb8
jsr lowPulsePB1
set c
loc_10bb8: bra loc_10bbc
loc_10bba: set c
loc_10bbc: bra loc_10bd8
loc_10bbe: btst #1, r0h
beq loc_10bd6
mov @idr2, r0h ; LPC Input Data Register 2 (0x62/0x66)
push er0
jsr lowPulsePB1
pop er0
bsr sub_10c1a
bra loc_10bd8
loc_10bd6: set c
loc_10bd8: pop er1
loc_10bdc: bcc rts_10bee
push er1
mov r1, r0
jsr cmpTick
pop er1
bcc loc_10b90
rts_10bee: rts
sub_10bf0: jsr sub_10c68
bcs loc_10bfe
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
set c
bra rts_10c00
loc_10bfe: clr c
rts_10c00: rts
off_10c02: .long sub_10c9e ; 0
.long sub_03abe ; 1
.long sub_03ac8 ; 2
.long sub_045f2 ; 3
.long sub_04608 ; 4
.long NULL ; 5
sub_10c1a: bsr sub_10c52
bcs loc_10c22
set c
bra rts_10c38
loc_10c22: jsr sub_01818
jsr sub_04cb6
jsr sub_03924
bld #1, r0h
bst #0, r0h
jsr sub_02128
clr c
rts_10c38: rts
off_10c3a: .long sub_10cbc ; 0
.long sub_03acc ; 1
.long sub_03ad6 ; 2
.long sub_0460c ; 3
.long sub_04616 ; 4
.long NULL ; 5
sub_10c52: bsr sub_10c68
bcs rts_10c66
mov @long_ffed6c, er2
mov @er2, er3
bne rts_10c66
set c
rts_10c66: rts
sub_10c68: mov @long_ffed6c, er2
beq loc_10c9a
mov @er2, er3
beq loc_10c9a
push er1
jsr @er3
pop er1
bcc loc_10c96
mov @long_ffed6c, er2
adds #4, er2
mov er2, @long_ffed6c
loc_10c96: clr c
bra rts_10c9c
loc_10c9a: set c
rts_10c9c: rts
sub_10c9e: push er1
jsr sub_03ab4
mov r0h, r2h
push er2
jsr sub_045e8
pop er2
add r0h, r2h
mov r2, r0
pop er1
sub_10cbc: set c
rts
sub_10cc0: cmp #0x7f, r0h
bhi loc_10d56:16
cmp #0, r0h
beq loc_10d56:16
push er0
jsr sub_0126e
pop er0
bcs loc_10ce0
jsr sub_10238
bra loc_10d56
loc_10ce0: jsr sub_10d88
mov @dataTab, r0l
btst #1, r0l
beq loc_10d3e
mov @byte_ffe594, r0l ; 0x35
btst #3, r0l
bne loc_10d3e
push er0
jsr sub_10238
pop er0
bsr sub_10d5e
bcs loc_10d3e
mov @byte_ffe63f, r1h
mov @byte_ffe640, r1l
mov #byte_ffe62f, er2
add r1h, r2l
addx #0, r2h
bcc loc_10d22
inc #1, e2
loc_10d22: mov r0h, @er2
inc r1h
and #0x0f, r1h
cmp r1h, r1l
bne loc_10d30
inc r1l
and #0x0f, r1l
loc_10d30: mov r1h, @byte_ffe63f
mov r1l, @byte_ffe640
bra loc_10d56
loc_10d3e: mov @dataTab, r0l
btst #1, r0l
bne loc_10d56
cmp #0x28, r0h
bne loc_10d56
jsr sub_01276
bcs loc_10d56
jsr sub_017a0
loc_10d56: mov #task39o, r0h
jsr schedBackTask
rts
sub_10d5e: bclr #7, r0h
mov r0h, r0l
mov r0h, r1l
and #7, r0l
shlr r1l
shlr r1l
shlr r1l
mov #byte_ffe56f, er2 ; 0x10
add r1l, r2l
addx #0, r2h
bcc loc_10d7a
inc #1, e2
loc_10d7a: btst r0l, @er2
beq loc_10d84
clr c
bra rts_10d86
loc_10d84: set c
rts_10d86: rts
sub_10d88: cmp #0x33, r0h
beq loc_10da4
cmp #0x39, r0h
beq loc_10da4
cmp #0x30, r0h
beq loc_10da4
cmp #0x10, r0h
blo rts_10db6
cmp #0x1f, r0h
bls loc_10da4
cmp #0x60, r0h
blo rts_10db6
cmp #0x6f, r0h
bhi rts_10db6
loc_10da4: push er0
mov #task41o, r0h
jsr schedBackTask
pop er0
bset #2, @execFlags:8
rts_10db6: rts
sub_10db8: mov @byte_ffe63f, r1h
mov @byte_ffe640, r1l
cmp r1h, r1l
beq loc_10de6
mov #byte_ffe62f, er2
add r1l, r2l
addx #0, r2h
bcc loc_10dd6
inc #1, e2
loc_10dd6: mov @er2, r0h
inc r1l
and #0x0f, r1l
mov r1l, @byte_ffe640
clr c
bra rts_10dea
loc_10de6: set c
mov #0, r0h
rts_10dea: rts
sub_10dec: mov @byte_ffe63f, r0h
mov r0h, @byte_ffe640
rts
sub_10dfa: mov r0l, @byte_ffe5a5 ; 0x46
mov r0h, @byte_ffe5a6 ; 0x47
mov e0, r0
mov r0l, @byte_ffe5a7 ; 0x48
mov r0h, @byte_ffe5a8 ; 0x49
rts
sub_10e16: mov @byte_ffe57f, r0l ; 0x20
cmp r0h, r0l
beq rts_10e2c
mov r0h, @byte_ffe57f ; 0x20
mov #0x40, r0h
jsr sub_10cc0
rts_10e2c: rts
sub_10e2e: cmp #0, r0h
bne loc_10e3c
mov #byte_ffe597, er1 ; 0x38
mov #0x4a, r0h
bra loc_10e44
loc_10e3c: mov #byte_ffe598, er1 ; 0x39
mov #0x4c, r0h
loc_10e44: mov @er1, r2h
xor r0l, r2h
beq rts_10e56
mov r0l, @er1
btst #7, r2h
bne loc_10e52
inc r0h
loc_10e52: jsr sub_10cc0
rts_10e56: rts
sub_10e58: jmp sub_10222
rts_10e5c: rts
sub_10e5e: set c
bra loc_10e64
loc_10e62: clr c
loc_10e64: bst #0, @byte_ffe593 ; 0x34
rts
sub_10e6e: set c
bra loc_10e74
sub_10e72: clr c
loc_10e74: bst #1, @byte_ffe593 ; 0x34
rts
sub_10e7e: set c
loc_10e80: stc ccr, r1h
cmp #2, r0h
bhs rts_10ea0
mov #4, r0l
add r0l, r0h
ldc r1h, ccr
bcs loc_10e98
bclr r0h, @byte_ffe593 ; 0x34
bra rts_10ea0
loc_10e98: bset r0h, @byte_ffe593 ; 0x34
rts_10ea0: rts
clr c
bra loc_10e80
sub_10ea6: cmp #2, r0h
bhs rts_10eb6
mov #4, r0l
add r0l, r0h
bset r0h, @byte_ffe594 ; 0x35
rts_10eb6: rts
getFanCtrl: mov @fanCtrl, r0h ; 0x2f fan ctrl/status
rts
setFanCtrl: cmp #0, r0h
bne rts_10eca
mov r0l, @fanCtrl ; 0x2f fan ctrl/status
rts_10eca: rts
sub_10ecc: bset #2, @byte_ffe594 ; 0x35
rts
rts_10ed6: rts
sub_10ed8: mov r0h, @byte_ffe568 ; 0x09
rts
sub_10ee0: cmp #0x10, r0h
bhi loc_10ee8
add #0x0f, r0h
bra loc_10eea
loc_10ee8: add #0x4f, r0h
loc_10eea: jmp sub_10cc0
rts_10eee: rts
sub_10ef0: bset #0, @byte_ffe594 ; 0x35
bclr #1, @byte_ffe594 ; 0x35
rts
sub_10f02: bclr #0, @byte_ffe594 ; 0x35
bset #1, @byte_ffe594 ; 0x35
rts
sub_10f14: bclr #0, @byte_ffe594 ; 0x35
bclr #1, @byte_ffe594 ; 0x35
rts
sub_10f26: mov #byte_ffe58f, er1 ; 0x30 volume
loc_10f2c: set i
btst #7, @er1
bne loc_10f36
mov r0h, @er1
loc_10f36: clr i
rts
sub_10f3a: mov #byte_ffe590, er1 ; 0x31 LCD brightness
bra loc_10f2c
sub_10f42: mov r0h, @byte0xEE
rts
sub_10f4a: mov #byte_ffe593, er0 ; 0x34
bcc loc_10f58
bset #7, @er0
bra rts_10f5c
loc_10f58: bclr #7, @er0
rts_10f5c: rts
; r0h: 0..f r0l: temperature
storeTemperat:
stm er0-er2, @-sp
cmp #0x0f, r0h
bhi loc_10f84
cmp #7, r0h
bhi loc_10f72
mov #byte_ffe5d7, er2 ; 0x78 temperature
bra loc_10f7a
loc_10f72:
mov #byte_ffe61f, er2 ; 0xc0 temperature
and #~8, r0h ; &= 7
loc_10f7a: zero er1
mov r0h, r1l
add er2, er1
mov r0l, @er1
loc_10f84: ldm @sp+, er0-er2
rts
setPINcopy: stc ccr, r0l
cmp #8, r0h
bhs rts_10fa4
mov #byte_ffe59a, er1 ; 0x3b 7 !p74pin, 6 pd5pin, 5 pd6pin, 4 pd2pin, 3 ?, 2 pc4pin, 1 p13dr, 0 !pc5pin
ldc r0l, ccr
bcc loc_10fa0
bset r0h, @er1
bra rts_10fa4
loc_10fa0: bclr r0h, @er1
rts_10fa4: rts
getPINcopy: cmp #8, r0h
bhs loc_10fbc
btst r0h, @byte_ffe59a ; 0x3b 7 !p74pin, 6 pd5pin, 5 pd6pin, 4 pd2pin, 3 ?, 2 pc4pin, 1 p13dr, 0 !pc5pin
beq loc_10fb8
set c
bra loc_10fba
loc_10fb8: clr c
loc_10fba: bra rts_10fbe
loc_10fbc: clr c
rts_10fbe: rts
sub_10fc0: mov #byte_ffe5b0, er2 ; 0x51
bld #6, @er2
bcs rts_10fea
mov r0h, @byte_ffe5d4 ; 0x75
mov r1h, @byte_ffe5d5 ; 0x76
mov r1l, @byte_ffe5d6 ; 0x77
bset #6, @er2
mov #0x35, r0h
jsr sub_10cc0
clr c
rts_10fea: rts
sub_10fec: bst #6, @byte_ffe593 ; 0x34
rts
sub_10ff6: mov r0, @word_ffed72
jsr sub_10222
rts
sub_11002: mov r0h, @byte_ffe110
rts
sub_1100a: mov r0h, @byte_ffe111
rts
sub_11012: bclr #3, @execFlags:8
bsr sub_11020
jmp sub_04bb8
sub_1101c: jmp sub_101ce
sub_11020: jmp sub_101f4
sub_11024: jmp sub_04b70
sub_11028: jsr sub_04bb8
bset #3, @execFlags:8
bra sub_1101c
sub_11032: cmp #0x0f, r1h
bls loc_11038
mov #0x0f, r1h
loc_11038: mov @long_ffed7a, er2
cmp #RAM & M24, er2
blo loc_11050
mov @er2, r1l
dec r1l
cmp r1l, r1h
bls loc_11066
loc_11050: stm er0-er1, @-sp
mov r1h, r0l
mov #0, r0h
inc #1, r0
jsr malloc
mov er0, er2
ldm @sp+, er0-er1
bra loc_11068
loc_11066: clr c
loc_11068: bcs rts_11090
push er2
inc r1h
mov r1h, @er2
adds #1, er2
mov #0, r3h
loc_11076: mov r3h, @er2
dec r1h
beq loc_11082
adds #1, er2
mov @er0+, r3h
bra loc_11076
loc_11082: pop er2
mov er2, @long_ffed7a
clr c
rts_11090: rts
sub_11092: set i
loc_11094: b tst str2.obf2 ; Output Buffer Full (LPC Status Register 2 (0x66))
bne loc_11094
mov #0x88, r0h
mov r0h, @odr2 ; LPC Output Data Register 2 (0x62)
loc_110a2: b tst str2.obf2 ; Output Buffer Full (LPC Status Register 2 (0x66))
bne loc_110a2
loc_110aa: bsr sub_110cc
cmp #0x55, r0h
bne loc_110aa
bsr sub_110cc
mov r0h, r3h
bsr sub_110cc
mov r0h, r3l
mov #exec, er2
loc_110be: bsr sub_110cc
mov r0h, @er2
adds #1, er2
dec #1, r3
bne loc_110be
jmp exec
sub_110cc: b tst str2.ibf2 ; Input Buffer Full (LPC Status Register 2 (0x66))
beq sub_110cc
mov @idr2, r0h ; LPC Input Data Register 2 (0x62/0x66)
rts
sub_110da: jsr sub_06762
mov r0h, @byte_ffe567 ; 0x08
rts
sub_110e6: bset #4, @byte_ffe56d ; 0x0e
rts
sub_110f0: bclr #4, @byte_ffe56d ; 0x0e
rts
sub_110fa: bset #3, @byte_ffe56d ; 0x0e
rts
sub_11104: bclr #3, @byte_ffe56d ; 0x0e
rts
sub_1110e: bset #2, @byte_ffe56e ; 0x0f
rts
sub_11118: bclr #2, @byte_ffe56e ; 0x0f
rts
sub_11122: bset #3, @byte_ffe56e ; 0x0f
rts
sub_1112c: bclr #3, @byte_ffe56e ; 0x0f
rts
sub_11136: bset #0, @byte_ffe56e ; 0x0f
rts
sub_11140: bclr #0, @byte_ffe56e ; 0x0f
rts
sub_1114a: bset #1, @byte_ffe56e ; 0x0f
rts
sub_11154: bclr #1, @byte_ffe56e ; 0x0f
rts
shll #2, r0l
shll #2, r0l
mov @byte_ffe56e, r0h ; 0x0f
mov #0x70, r1l
not r1l
and r1l, r0h
or r0l, r0h
mov r0h, @byte_ffe56e ; 0x0f
rts
enableLPC3: b clr mstpcrl.mstp0 ; LPC, WUEMRB (Module Stop Control Register L)
mov #0x1600, r0
mov r0h, @ladr3h ; LPC Channel 3 Address Register H
mov r0l, @ladr3l ; LPC Channel 3 Address Register L
mov #-1, r0h
mov r0h, @byte_ffe64a
rts
sub_11192: bsr sub_111cc
rts
sub_11196: btst #7, @byte_ffff45:8
beq rts_1119e
bsr sub_111a0
rts_1119e: rts
sub_111a0: b set hicr_0.lpc3e ; LPC Channel 3 Enable (LADR3) (LPC Host Interface Control Register 0)
mov #0, r0h
mov r0h, @str3 ; LPC Status Register 3
mov #-1, r0h
mov r0h, @byte_ffe64a
bclr #6, @byte_ffff45:8
b set hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
b set ladr3l.twre ; Bidirectional Data Register Enable (LPC Channel 3 Address Register L)
bset #2, @ladr3l ; LPC Channel 3 Address Register L
rts
sub_111cc: b clr hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
bclr #2, @ladr3l ; LPC Channel 3 Address Register L
b clr ladr3l.twre ; Bidirectional Data Register Enable (LPC Channel 3 Address Register L)
b clr hicr_0.lpc3e ; LPC Channel 3 Enable (LADR3) (LPC Host Interface Control Register 0)
rts
task42: btst #7, @byte_ffff45:8
beq loc_11208
mov #-1, r0h
mov r0h, @byte_ffe64a
btst #6, @byte_ffff45:8
beq loc_11208
set i
bclr #6, @byte_ffff45:8
b set hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
clr i
loc_11208: mov #task42o, r0h
jsr schedFrontTask
clr c
rts
; LPC IDR3 Reception Completion
ibfi3: b clr hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
clr i
stm er0-er3, @-sp
b tst str3.ibf3a ; Input Buffer Full (LPC Status Register 3)
beq loc_1122a
bsr sub_1124e
bra loc_11236
loc_1122a: b tst str3.ibf3b ; Bidirectional Data Register Input Buffer Full (LPC Status Register 3)
beq loc_11236
bsr sub_11366:16
loc_11236: cmp #0, r0h
bne loc_11248
ldm @sp+, er0-er3
set i
b set hicr_2.ibfie3 ; IDR3 & TWR Receive Completion Interrupt Enable (LPC Host Interface Control Register 2)
bra rts_1124c
loc_11248: ldm @sp+, er0-er3
rts_1124c: rte
sub_1124e: b tst str3.c_d3 ; Command/-Data (LPC Status Register 3)
beq loc_1128c
mov @idr3, r0h ; LPC Input Data Register 3
mov #sub_112e8, er1
cmp #0x80, r0h
beq loc_1126e
mov #sub_1133a, er1
cmp #0x81, r0h
bne loc_11286
loc_1126e: mov #0, r0h
mov r0h, @byte_ffe649
mov er1, @long_ffed7e
bset #4, @byte_ffff45:8
jsr @er1
bra loc_1128a
loc_11286: bclr #4, @byte_ffff45:8
loc_1128a: bra loc_112ae
loc_1128c: btst #4, @byte_ffff45:8
beq loc_112ae
mov @byte_ffe649, r0h
inc r0h
mov r0h, @byte_ffe649
mov @long_ffed7e, er1
mov @idr3, r0l ; LPC Input Data Register 3
jsr @er1
loc_112ae: mov #0, r0h
btst #4, @byte_ffff45:8
bne loc_112ba
bsr sub_112be
bra rts_112bc
loc_112ba: mov #0, r0h
rts_112bc: rts
sub_112be: mov @byte_ffe64a, r0l
inc r0l
mov r0l, @byte_ffe64a
bne loc_112d8
mov #task42o, r0h
jsr schedBackTask
mov #0, r0h
bra rts_112e6
loc_112d8: cmp #0x20, r0l
blo loc_112e4
bset #6, @byte_ffff45:8
mov #1, r0h
bra rts_112e6
loc_112e4: mov #0, r0h
rts_112e6: rts
sub_112e8: cmp #0, r0h
beq loc_11336
mov #0, r0h
cmp #0x81, r0l
bne loc_112fa
mov @byte_ffe64b, r0h
bra loc_1132e
loc_112fa: mov r0l, r1h
and #0xf0, r1h
cmp #0xa0, r1h
bne loc_1132a
mov @byte_ffe64b, r1h
mov @byte_ffe64c, r1l
mov @long_ffed82, er2
jsr sub_10878
mov r1l, @byte_ffe64c
mov er2, @long_ffed82
bra loc_1132e
loc_1132a: jsr readByte
loc_1132e: mov r0h, @odr3 ; LPC Output Data Register 3
bclr #4, @byte_ffff45:8
loc_11336: mov #0, r0h
rts
sub_1133a: cmp #1, r0h
bne loc_11346
mov r0l, @byte_ffe648
bra rts_11364
loc_11346: cmp #2, r0h
bne rts_11364
mov @byte_ffe648, r1l
cmp #0x81, r1l
bne loc_1135c
mov r0l, @byte_ffe64b
bra loc_11360
loc_1135c: jsr writeByte
loc_11360: bclr #4, @byte_ffff45:8
rts_11364: rts
sub_11366: zero er1
mov @twr0mw, r1l ; LPC Bidirectional Data Register 0MW
cmp #0x20, r1l
bhs loc_11384
cmp #0x10, r1l
blo loc_11398
jsr sub_0e610
bcc loc_11384
jsr sub_1167a
bra rts_11444:16
loc_11384: mov @twr15, r0l ; LPC Bidirectional Data Register 15
loc_11388: b tst str3.mwmf ; Master Write Mode Flag (LPC Status Register 3)
bne loc_11388
mov r1l, @twr0sw ; LPC Bidirectional Data Register 0SW
bra loc_11434:16
loc_11398: jsr sub_074d0
mov #0, r2h
bist #7, r2h
bld #7, @byte_ffe597 ; 0x38
bst #6, r2h
bld #7, @byte_ffe598 ; 0x39
bst #5, r2h
mov @twr15, r0h ; LPC Bidirectional Data Register 15
mov r2h, @twr0sw ; LPC Bidirectional Data Register 0SW
b tst str3.swmf ; Slave Write Mode Flag (LPC Status Register 3)
beq loc_11440
shll r1l
add #off_11446, er1
mov @er1, r2
beq loc_11434
exts er2
add er2, er1
cmp #1, r0h
bne loc_113e6
mov #byte_ffeb46, er3
mov @byte_ffe598, r0l ; 0x39
bra loc_113f2
loc_113e6: mov #byte_ffeaac, er3
mov @byte_ffe597, r0l ; 0x38
loc_113f2: mov #0, r0h
bld #5, r0l
bst #5, r0h
bld #6, r0l
bst #4, r0h
bld #4, r0l
bst #1, r0h
bild #7, r0l
bst #7, r0l
and #0x8f, r0l
bne loc_1140a
bset #3, r0h
loc_1140a: push er1
mov @twr15, r1h ; LPC Bidirectional Data Register 15
cmp #1, r1h
bne loc_1141c
jsr sub_0abb6
bst #0, r0h
loc_1141c: pop er1
push er1
mov @(0x10,er3), r1h
bild #7, r1h
bst #2, r0h
pop er1
jsr @er1
bra loc_11440
loc_11434: mov #0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov #0x80, r0h
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
loc_11440: bsr sub_112be:16
rts_11444: rts
off_11446: case 0
case 0 sub_114c0
case 1 sub_114ee sub_11532 sub_1153a
case 4 sub_11552 sub_11596 sub_115a0
case 7 sub_115aa sub_11542 sub_1154a
case 10 sub_115b4 sub_115f4
case 16 sub_1163e sub_11644 sub_1164a sub_11650
case 20 sub_11656 sub_1165c sub_11662 sub_11668
case 24 sub_11674
case 32
rts
word_11488: .word 0x10, 0x14, 0x16, 0x18, 0x1a, 0x1e, 0x20, 0
word_11498: .word 0x22, 0x24, 0x98 - 0x20 & -(type1R && level < 0x01030069), 0x28, 0x2e, 0x30, 0
word_114a6: .word 0x32, 0x34, 0x36, 0x38, 0x3a, 0
word_114b2: .word 0x90 - 0x20 & -(type1R && level < 0x01030069), 0
word_114b6: .word 0x0a, 0x1c, 0x2a, 0x2c, 0
sub_114c0: mov #0x80, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov #1, r0h
mov r0h, @twr2 ; LPC Bidirectional Data Register 2
mov #0, r0h
mov r0h, @twr3 ; LPC Bidirectional Data Register 3
mov #0, r0h
bset #7, r0h
mov r0h, @twr4 ; LPC Bidirectional Data Register 4
mov #0, r0h
mov #0x0b, r0l
mov #twr5 & M24, er1 ; LPC Bidirectional Data Register 5
loc_114e4: mov r0h, @er1
inc #1, er1
dec r0l
bne loc_114e4
rts
sub_114ee: mov #word_11488, er1
loc_114f4: btst #4, @er3
beq loc_11528
or #0xc0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov #twr2 & M24, er2 ; LPC Bidirectional Data Register 2
loc_11506: mov @er1+, r0
beq loc_1151a
zero e0
add er3, er0
mov @er0, r0
mov r0l, @er2
adds #1, er2
mov r0h, @er2
adds #1, er2
bra loc_11506
loc_1151a: cmp #twr15 & M24, er2 ; LPC Bidirectional Data Register 15
bhi loc_11526
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
loc_11526: bra rts_11530
loc_11528: mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts_11530: rts
sub_11532: mov #word_11498, er1
bra loc_114f4
sub_1153a: mov #word_114a6, er1
bra loc_114f4
sub_11542: mov #word_114b2, er1
bra loc_114f4
sub_1154a: mov #word_114b6, er1
bra loc_114f4
sub_11552: mov #0x3c, r1
mov #0x10, e0
loc_1155a: btst #4, @er3
beq loc_1158c
or #0xc0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
zero e1
add er3, er1
mov #twr2 & M24, er2 ; LPC Bidirectional Data Register 2
mov #0x0e, r0h
loc_11572: mov @er1, r0l
beq loc_11578
adds #1, er1
loc_11578: cmp #0, e0
bhi loc_11580
mov #0, r0l
loc_11580: mov r0l, @er2
adds #1, er2
dec #1, e0
dec r0h
bne loc_11572
bra rts_11594
loc_1158c: mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts_11594: rts
sub_11596: mov #0x4c, r1
mov #0x10, e0
bra loc_1155a
sub_115a0: mov #0x5c, r1
mov #4, e0
bra loc_1155a
sub_115aa: mov #0x70 - 0x10 & -(type1R && level < 0x01030069), r1
mov #0x10, e0
bra loc_1155a
sub_115b4: mov #0x60, r1
mov #0x10, e0
loc_115bc: btst #4, @er3
beq loc_115ea
or #0xc0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
zero e1
add er3, er1
mov #twr2 & M24, er2 ; LPC Bidirectional Data Register 2
mov #0x0e, r0h
loc_115d4: mov @er1+, r0l
cmp #0, e0
bhi loc_115de
mov #0, r0l
loc_115de: mov r0l, @er2
adds #1, er2
dec #1, e0
dec r0h
bne loc_115d4
bra rts_115f2
loc_115ea: mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts_115f2: rts
sub_115f4:
mov @twr15, r0h ; LPC Bidirectional Data Register 15
jsr sub_0bb6c
beq loc_11434:16
mov #0x80, r1
mov #0x10, e0
bra loc_115bc
or #0xc0, r0h
mov r0h, @twr1 ; LPC Bidirectional Data Register 1
mov #0, r0h
mov #twr2 & M24, er1 ; LPC Bidirectional Data Register 2
loc_11618: push er0
push er1
jsr sub_13780
pop er1
mov r0h, @er1
adds #1, er1
pop er0
inc r0h
cmp #8, r0h
bne loc_11618
mov #0, r0h
mov r0h, @twr15 ; LPC Bidirectional Data Register 15
rts
sub_1163e: jsr sub_0e26c
rts
sub_11644: jsr sub_0e346
rts
sub_1164a: jsr sub_0ea62
rts
sub_11650: jsr sub_0e46e
rts
sub_11656: jsr sub_0e49c
rts
sub_1165c: jsr sub_0e4be
rts
sub_11662: jsr sub_0e51c
rts
sub_11668: jsr sub_0e574
rts
jsr sub_0e60a
rts
sub_11674: jsr sub_0eab0
rts
sub_1167a: mov @twr15, r0l ; LPC Bidirectional Data Register 15
loc_1167e: b tst str3.mwmf ; Master Write Mode Flag (LPC Status Register 3)
bne loc_1167e
mov r1l, @twr0sw ; LPC Bidirectional Data Register 0SW
shll r1l
add #off_11446, er1
mov @er1, r2
beq loc_11434:16
exts er2
add er2, er1
jsr @er1
mov #0, r0h
rts
sub_116a2: btst #7, @byte_ffff45:8
bne rts_116b0
bset #7, @byte_ffff45:8
bsr sub_111a0:16
rts_116b0: rts
sub_116b2: btst #7, @byte_ffff45:8
beq rts_116c0
bclr #7, @byte_ffff45:8
bsr sub_111cc:16
rts_116c0: rts
sub_116c2: mov #0, r0h
mov r0h, @byte_ffff46:8
mov r0h, @byte_ffe67a
rts
task43: btst #3, @byte_ffff46:8
beq loc_11736
bclr #3, @byte_ffff46:8
mov #num_ffe64d, r0h
mov #byte_ffe64d, er1
mov #off_1179c, er2
mov #dataTab, er4
loc_116ec: mov @er1, r0l
beq loc_11724
mov #0, r3h
loc_116f2: btst r3h, @er1
beq loc_11718
bclr r3h, @er1
mov @er2, r5
beq loc_11718
stm er0-er3, @-sp
push er4
exts er5
add er2, er5
mov @er4, r0h
jsr @er5
pop er4
ldm @sp+, er0-er3
loc_11718: adds #2, er2
adds #1, er4
inc r3h
cmp #7, r3h
bls loc_116f2
bra loc_11730
loc_11724: add #0x10, er2
add #8, er4
loc_11730: adds #1, er1
dec r0h
bne loc_116ec
loc_11736: mov #task43o, r0h
jsr schedFrontTask
clr c
rts
task44: btst #0, @byte_ffff46:8
beq loc_11792
mov @word_ffed86, r0
mov @byte_ffe5ab, r1h ; 0x4c
bmi loc_1175a
jsr cmpTick
bra loc_1175e
loc_1175a: jsr sub_016e4
loc_1175e: bcc loc_1176c
mov #0x34, r0h
jsr sub_10cc0
bclr #0, @byte_ffff46:8
bra loc_11792
loc_1176c: mov #-1, r2
sub r0, r2
mov @byte_ffe5ab, r1h ; 0x4c
bpl loc_1178a
cmp #20, r2
bls loc_11784
mov #20, r2
loc_11784: mov #1000, r0
mulxu r0, er2
loc_1178a: mov r2, r1
mov #task44o, r0h
jsr schedBackTaskDelayed
loc_11792: mov #task44o, r0h
jsr schedFrontTask
clr c
rts
off_1179c: case 0 sub_119bc sub_11a42 sub_11a8c
case 3 sub_11ad6
case 4 sub_11bb4 sub_11bb4 sub_11c4c
case 8 sub_11bc4 sub_1199c sub_119a0 sub_119b4
case 12 sub_11db6 sub_119b8
case 34 sub_12160 sub_12172
case 36 sub_12186 sub_12194
case 40 sub_11e20 sub_11e5e sub_11e12 sub_11e3a
case 44 . sub_11e46 . sub_11e54
case 48 sub_11ea2 sub_11eac sub_119ac sub_119b0
case 58 sub_11b20 sub_11b6a . sub_11bce
case 74 sub_12046 . sub_11c6a
case 80 sub_11cac
case 128 sub_11ec2 . sub_119a8 sub_119a4
case 136 sub_11f06
case 144 sub_12502
case 200 sub_121a2
case 256
sub_1199c: jmp sub_0335a
sub_119a0: jmp sub_048c4
sub_119a4: jmp sub_0346a
sub_119a8: jmp sub_07e3e
sub_119ac: jmp sub_11002
sub_119b0: jmp sub_1100a
sub_119b4: jmp sub_090de
sub_119b8: jmp sub_0ff66
sub_119bc: mov #off_119f0, er1
loc_119c2: mov #0, r0l
loc_119c4: btst r0l, r0h
beq loc_119ce
mov @er1, er2
bra loc_119d4
loc_119ce: mov @(4,er1), er2
loc_119d4: mov er2, er3
beq loc_119e2
stm er0-er1, @-sp
jsr @er2
ldm @sp+, er0-er1
loc_119e2: add #8, er1
inc r0l
cmp #8, r0l
blo loc_119c4
rts
off_119f0: .long sub_147da ; 0
.long sub_147d4 ; 1
.long NULL ; 2
.long NULL ; 3
.long sub_07a30 ; 4
.long sub_07a36 ; 5
.long sub_07cd8 ; 6
.long sub_07ce8 ; 7
.long sub_11a30 ; 8
.long sub_11a38 ; 9
.long sub_116a2 ; 10
.long sub_116b2 ; 11
.long NULL ; 12
.long NULL ; 13
.long sub_13734 ; 14
.long sub_13758 ; 15
sub_11a30: mov #2, r0h
jsr sub_02a00
rts
sub_11a38: jsr sub_033ba
jsr sub_0335a
rts
sub_11a42: mov #off_11a4c, er1
bra loc_119c2:16
off_11a4c: .long sub_02078 ; 0
.long sub_0207e ; 1
.long sub_0203c ; 2
.long sub_02036 ; 3
.long sub_0729a ; 4
.long sub_072a0 ; 5
.long NULL ; 6
.long NULL ; 7
.long sub_07268 ; 8
.long sub_07262 ; 9
.long sub_147e0 ; 10
.long sub_147e6 ; 11
.long sub_02048 ; 12
.long sub_02042 ; 13
.long sub_07dd6 ; 14
.long sub_07ddc ; 15
sub_11a8c: mov #off_11a96, er1
bra loc_119c2:16
off_11a96: .long NULL ; 0
.long NULL ; 1
.long NULL ; 2
.long NULL ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long sub_02af6 ; 10
.long sub_02b00 ; 11
.long sub_02b0a ; 12
.long sub_02b14 ; 13
.long sub_034d8 ; 14
.long sub_034dc ; 15
sub_11ad6: mov #off_11ae0, er1
bra loc_119c2:16
off_11ae0: .long sub_14f64 ; 0
.long sub_14f7c ; 1
.long sub_14f86 ; 2
.long sub_14f9a ; 3
.long NULL ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long NULL ; 14
.long NULL ; 15
sub_11b20: mov #off_11b2a, er1
bra loc_119c2:16
off_11b2a: .long sub_06774 ; 0
.long sub_06798 ; 1
.long NULL ; 2
.long NULL ; 3
.long sub_017a0 ; 4
.long NULL ; 5
.long NULL ; 6
.long NULL ; 7
.long NULL ; 8
.long NULL ; 9
.long NULL ; 10
.long NULL ; 11
.long NULL ; 12
.long NULL ; 13
.long sub_0b510 ; 14
.long sub_0b50c ; 15
sub_11b6a: mov #off_11b74, er1
jmp loc_119c2
off_11b74: .long sub_01f22 ; 0
.long sub_01f2a ; 1
.long lightOn ; 2
.long lightOff ; 3
.long sub_01f60 ; 4
.long sub_01f68 ; 5
.long rts_01f70 ; 6
.long rts_01f70 ; 7
.long sub_01f38 ; 8
.long sub_01f46 ; 9
.long sub_01f72 ; 10
.long sub_01f7a ; 11
.long sub_01f82 ; 12
.long sub_01fa4 ; 13
.long sub_01fba ; 14
.long sub_01fc2 ; 15
sub_11bb4: mov @byte_ffe563, r0h ; 0x04
mov @byte_ffe564, r0l ; 0x05
jmp loc_0673e
sub_11bc4: mov @byte_ffe567, r0h ; 0x08
jmp loc_06756
sub_11bce: mov #byte_ffe59d, er1 ; 0x3e
mov @byte_ffe59c, r0h ; 0x3d
mov r0h, r0l
and #0x0f, r0h
and #0x70, r0l
cmp #0, r0l
bne loc_11bea
jsr sub_12786
bra loc_11c28
loc_11bea: cmp #0x40, r0l
bne loc_11c06
jsr sub_126fc
bsr sub_11c38
jsr sub_127cc
mov r0h, @byte_ffe5e5 ; 0x86
mov r0l, @byte_ffe5e6 ; 0x87
bra loc_11c28
loc_11c06: cmp #0x50, r0l
bne loc_11c28
cmp #0, r0h
bne loc_11c14
jsr sub_127ba
bra loc_11c26
loc_11c14: cmp #1, r0h
bne loc_11c1e
jsr sub_1280a
bra loc_11c26
loc_11c1e: cmp #0x0f, r0h
bne loc_11c26
jsr sub_12814
loc_11c26: bsr sub_11c38
loc_11c28: mov #0x36, r0h
jsr sub_10cc0
bclr #7, @byte_ffe59c ; 0x3d
rts
sub_11c38: mov #byte_ffe59d, er1 ; 0x3e
mov #0, r0h
mov #8, r0l
loc_11c42: mov r0h, @er1
adds #1, er1
dec r0l
bne loc_11c42
rts
sub_11c4c: cmp #0, r0h
bne loc_11c56
jsr sub_06578
bra loc_11c60
loc_11c56: mov @byte_ffe566, r0l ; 0x07
jsr sub_0654a
loc_11c60: mov #0, r0h
mov r0h, @byte_ffe565 ; 0x06
rts
sub_11c6a: mov @byte_ffe5ab, r0h ; 0x4c
mov @byte_ffe5ac, r0l ; 0x4d
mov r0, r1
beq loc_11ca6
bclr #7, r1h
mov r1, r2
beq loc_11ca6
btst #7, r0h
beq loc_11c8c
mov @word_ffe9be, r0
bra loc_11c92
loc_11c8c: mov @tick, r0
loc_11c92: add r1, r0
mov r0, @word_ffed86
bset #0, @byte_ffff46:8
mov #task44o, r0h
jsr schedBackTask
bra rts_11caa
loc_11ca6: bclr #0, @byte_ffff46:8
rts_11caa: rts
sub_11cac: mov @byte_ffe5b1, r1h ; 0x52
cmp #2, r1h
bne loc_11cee
mov @byte_ffe5b2, r0l ; 0x53
mov @byte_ffe5d3, r1h ; 0x74
mov #yearL, er2 ; 0x54
jsr sub_121b6
loc_11ccc:
mov r0l, @byte_ffe5d3 ; 0x74
cmp #0, r0h
bne loc_11cd6
loc_11cd6: bset #7, r0h
jsr sub_12028
mov #0, r0h
mov r0h, @byte_ffe5af ; 0x50
mov #0x35, r0h
jsr sub_10cc0
bra rts_11db4:16
loc_11cee: mov @byte_ffe5b1, r0l ; 0x52
cmp #0x12, r0l
beq loc_11d00
cmp #0x14, r0l
beq loc_11d00
cmp #0x16, r0l
bne loc_11d22
loc_11d00: mov r0l, r0h
mov @byte_ffe5af, r0l ; 0x50
mov @byte_ffe5b2, r1h ; 0x53
mov @byte_ffe5d3, r1l ; 0x74
mov #yearL, er2 ; 0x54
jsr sub_0ccb6
bra loc_11ccc:16
loc_11d22: mov @byte_ffe5d3, r2l ; 0x74
mov @byte_ffe5af, r3h ; 0x50
cmp #0x0a, r3h
beq loc_11d34
mov #0x20, r2l
loc_11d34: mov #0, r2h
btst #1, @byte_ffe599 ; 0x3a
beq loc_11d42
mov #4, r2h
loc_11d42: mov #byte_ffed88, er6
btst #7, @er6 ; i2c00o
bne loc_11da6
mov @byte_ffe5af, r5h ; 0x50
mov r5h, @(i2c03o:16,er6)
mov @byte_ffe5b1, r5h ; 0x52
mov r5h, @(i2c05o:16,er6)
mov @byte_ffe5b2, r5h ; 0x53
mov r5h, @(i2c06o:16,er6)
mov #yearL, er5 ; 0x54
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_11ccc, er5
mov er5, @(i2c12o:16,er6)
mov #200, r5h
mov r5h, @(i2c20o:16,er6)
mov r2h, @(i2c00o:16,er6)
mov #0, r2h
mov r2h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_11daa
loc_11da6: mov #0x1a, r0h
set c
loc_11daa: bcs loc_11ccc:16
mov #0, r0h
jsr sub_12028
rts_11db4: rts
sub_11db6: bsr sub_1211a:16
bcs rts_11dc0
bsr sub_11dc2
bra sub_11db6
rts_11dc0: rts
sub_11dc2: zero er1
mov r0h, r1l
and #0x0f, r1l
mov @(byte_11e02,er1), r0l
cmp #-1, r0l
beq rts_11df0
zero er1
mov r0h, r1l
shlr #2, r1l
shlr #2, r1l
and #0x0c, r1l
mov @(off_11df2,er1), er1
mov r0l, r0h
jsr @er1
rts_11df0: rts
off_11df2: .long sub_068e6, sub_068e6, sub_068e2, sub_0693c
byte_11e02: .byte 0, 4, 5, -1, 3, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1
sub_11e12: jsr sub_10cc0
mov #0, r0h
mov r0h, @byte_ffe589 ; 0x2a
rts
sub_11e20: jsr delay50
jsr delay25
mov @byte_ffe587, r0h ; 0x28
jsr sub_07278
mov r0h, @byte_ffe587 ; 0x28
rts
sub_11e3a: mov @byte_ffe58b, r0l ; 0x2c
mov r0, r1
mov #0, r0h
bra loc_11e50
sub_11e46: mov @byte_ffe58d, r0l ; 0x2e
mov r0, r1
mov #1, r0h
loc_11e50: jmp loc_0c784
sub_11e54: mov r0h, r0l
mov #0, r0h
jsr confSpeedMode
rts
sub_11e5e: cmp #0x10, r0h
bhs loc_11e78
mov #off_11e82, er1
shll #2, r0h
add r0h, r1l
addx #0, r1h
bcc loc_11e72
inc #1, e1
loc_11e72: mov @er1, er0
jsr @er0
loc_11e78: mov #0, r0h
mov r0h, @byte_ffe588 ; 0x29
rts
off_11e82: .long rts_11edc ; 0
.long sub_11012 ; 1
.long sub_1101c ; 2
.long sub_11020 ; 3
.long sub_11024 ; 4
.long sub_11028 ; 5
.long sub_04b9a ; 6
.long sub_04bb8 ; 7
sub_11ea2: mov #0, r0h
mov #byte_ffe58f, er1 ; 0x30 volume
bra loc_11eb4
sub_11eac: mov #1, r0h
mov #byte_ffe590, er1 ; 0x31 LCD brightness
loc_11eb4: set i
mov @er1, r0l
bclr #7, @er1
clr i
jmp loc_0fdd4
sub_11ec2: cmp #3, r0h
bhs rts_11edc
mov #off_11ede, er1
shll #2, r0h
add r0h, r1l
addx #0, r1h
bcc loc_11ed6
inc #1, e1
loc_11ed6: mov @er1, er0
jsr @er0
rts_11edc: rts
off_11ede: .long rts_11edc, sub_11eea, sub_11eee
sub_11eea: clr c
bra loc_11ef0
sub_11eee: set c
loc_11ef0: bst #3, @byte_ffe594 ; 0x35
jsr sub_10dec
mov #0, r0h
mov r0h, @byte_ffe5df ; 0x80
rts
sub_11f06: mov #0, r0l
mov r0l, @byte_ffe668
mov r0l, @byte_ffe669
sub_11f14: mov @byte_ffe5e7, r0h ; 0x88
btst #4, r0h
beq loc_11f22
mov #0x0e, r2h
bra loc_11f24
loc_11f22: mov #0x0f, r2h
loc_11f24: mov r0h, r2l
and #0x0f, r2l
beq loc_11f8c
mov #byte_ffed9e, er6
btst #7, @er6 ; i2c00o
bne loc_11f86
mov r2h, @(i2c03o:16,er6)
mov #0xa2, r5h
mov r5h, @(i2c05o:16,er6)
mov @byte_ffe5e8, r5h ; 0x89
mov r5h, @(i2c06o:16,er6)
mov #byte0xB0, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_11f90, er5
mov er5, @(i2c12o:16,er6)
mov #200, r5h
mov r5h, @(i2c20o:16,er6)
mov #0, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_11f8a
loc_11f86: mov #0x1a, r0h
set c
loc_11f8a: bra rts_11f8e
loc_11f8c: bsr sub_1200a
rts_11f8e: rts
loc_11f90: cmp #0, r0h
bne loc_11fea
mov @byte_ffe5e7, r1h ; 0x88
btst #4, r1h
bne loc_11fe6
mov #byte0xB0, er0
and #0x0f, r1h
jsr sub_0f4c0
mov @byte_ffe668, r0l
bne loc_11fbc
mov r0h, @byte_ffe667
inc r0l
bra loc_11fd2
loc_11fbc: mov @byte_ffe667, r1h
cmp r0h, r1h
bne loc_11fca
inc r0l
bra loc_11fd2
loc_11fca: mov r0h, @byte_ffe667
mov #1, r0l
loc_11fd2: mov r0l, @byte_ffe668
cmp #3, r0l
bls loc_11fe0
bsr sub_12006
bra loc_11fe4
loc_11fe0: bsr sub_11f14:16
loc_11fe4: bra loc_11fe8
loc_11fe6: bsr sub_12006
loc_11fe8: bra rts_12004
loc_11fea: mov @byte_ffe669, r0h
cmp #8, r0h
blo loc_11ff8
bsr sub_1200a
bra rts_12004
loc_11ff8: inc r0h
mov r0h, @byte_ffe669
bsr sub_11f14:16
rts_12004: rts
sub_12006: mov #0x80, r0h
bra loc_12012
sub_1200a: mov r0h, @byte0xB0
mov #0xc0, r0h
loc_12012: set i
mov @byte_ffe5e7, r0l ; 0x88
and #0xc0, r0l
or r0h, r0l
mov r0l, @byte_ffe5e7 ; 0x88
clr i
rts
sub_12028: push er0
set i
mov @byte_ffe5b0, r0l ; 0x51
bld #6, r0l
bst #6, r0h
mov r0h, @byte_ffe5b0 ; 0x51
clr i
pop er0
rts
sub_12046: mov @byte_ffe5a9, r0h ; 0x4a
mov @byte_ffe5aa, r0l ; 0x4b
bclr #7, r0h
jsr sub_10ff6
rts
writeByte: cmp #0x51, r1l
bne loc_1206c
bld #6, r0l
bcs loc_1206a
bclr #6, @byte_ffe5b0 ; 0x51
loc_1206a: bra rts_120de
loc_1206c:
cmp #0xb0, r1l
blo loc_12086
cmp #0xc0, r1l
bhs loc_12086
zero er2
mov r1l, r2l
and #0x0f, r2l
mov r0l, @(byte0xB0,er2)
bra rts_120de
loc_12086: cmp #0xd0, r1l
bhs rts_120de
cmp #0x0c, r1l
bne loc_1209c
push er1
mov r0l, r0h
bsr sto0C
pop er1
bra loc_120c0
loc_1209c: cmp #6, r1l
bne loc_120a8
bset #1, @byte_ffe593 ; 0x34
loc_120a8:
cmp #0x8c, r1l
bne 1f
jsr sto8C
bra rts_120de
1:
zero er2
mov r1l, r2l
mov r0l, @(dataTab,er2)
loc_120c0: mov r1l, r1h
shlr #2, r1l
shlr r1l
and #7, r1h
mov r1l, r2l
add #byte_ffe64d, er2
bset r1h, @er2
bset #3, @byte_ffff46:8
mov #task43o, r0h
jsr schedBackTask
rts_120de: rts
sto0C: stc ccr, r3h
set i
mov @byte_ffe67a, r0l
mov r0l, r1h
mov r0l, r1l
and #3, r1h
shlr #2, r1l
and #3, r1l
btst #7, r0l
beq loc_120fc
cmp r1h, r1l
beq loc_12116
loc_120fc: add #4, r0l
and #0x0f, r0l
bset #7, r0l
mov r0l, @byte_ffe67a
zero er2
mov r1l, r2l
mov r0h, @(byte_ffe67b,er2)
loc_12116: ldc r3h, ccr
rts
sub_1211a: stc ccr, r3h
set i
mov @byte_ffe67a, r0l
btst #7, r0l
beq loc_1215a
mov r0l, r1h
mov r0l, r1l
and #3, r1h
shlr #2, r1l
and #3, r1l
zero er2
mov r1h, r2l
mov @(byte_ffe67b,er2), r0h
inc r1h
and #3, r1h
cmp r1h, r1l
bne loc_1214a
bclr #7, r0l
loc_1214a: and #0xfc, r0l
or r1h, r0l
mov r0l, @byte_ffe67a
ldc r3h, ccr
clr c
bra rts_1215e
loc_1215a: ldc r3h, ccr
set c
rts_1215e: rts
sub_12160: mov @byte_ffe580, r0l ; 0x21
mov @byte_ffe581, r0h ; 0x22
jsr sub_0b734
rts
sub_12172: mov @byte_ffe582, r0l ; 0x23
jsr sub_0b356
mov #0, r0l
mov r0l, @byte_ffe582 ; 0x23
rts
sub_12186: mov @byte_ffe583, r0l ; 0x24
mov #0, r0h
jsr sub_0b61c
rts
sub_12194: mov @byte_ffe584, r0l ; 0x25
mov #1, r0h
jsr sub_0b61c
rts
sub_121a2: mov @tabSel, r0l ; 0xc8 0x, 1x, 2x, F0..F1
jsr setFanSpeedProfile
mov #0, r0l
mov r0l, @tabSel ; 0xc8 0x, 1x, 2x, F0..F1
rts
sub_121b6: cmp #0x24 - 3 & type1R, r0l
bhs loc_121d4
zero er3
shll r0l
mov r0l, r3l
add #off_121d8, er3
mov @er3, r4
beq loc_121d4
exts er4
add er4, er3
jsr @er3
bra rts_121d6
loc_121d4: mov #0, r0h
rts_121d6: rts
off_121d8: case 0 . sub_12220 sub_1224c
case 9 sub_12264 sub_12280
case 12 sub_122a6 sub_122be sub_122d6
case 18 sub_122f4 . sub_123cc
case 25 sub_1240e
case 30 sub_124ca sub_12492 sub_12690
case 33 sub_14fb8 sub_15008 sub_1507e
sub_12220: cmp #0x0a, r0h
bne loc_12248
cmp #1, r1h
bls loc_12248
mov r1h, r0l
dec r0l
mov @yearL, r0h ; 0x54
mov #yearH, er1 ; 0x55
jsr sub_07e9a
bcs loc_12244
mov #0, r0h
mov #0, r0l
bra loc_12246
loc_12244: mov #0x12, r0h
loc_12246: bra rts_1224a
loc_12248: mov #0x12, r0h
rts_1224a: rts
sub_1224c: cmp #0x0a, r0h
bne loc_12260
mov #yearL, er0 ; 0x54
jsr sub_137cc
mov #0, r0h
mov #0, r0l
bra rts_12262
loc_12260: mov #0x12, r0h
rts_12262: rts
sub_12264: cmp #0x0a, r0h
bne loc_1227c
cmp #0x10, r1h
blo loc_1227c
mov #yearL, er0 ; 0x54
jsr sub_14768
mov #0, r0h
mov #0, r0l
bra rts_1227e
loc_1227c: mov #0x12, r0h
rts_1227e: rts
sub_12280: cmp #0x0a, r0h
bne loc_122a2
cmp #1, r1h
blo loc_122a2
mov @yearL, r0h ; 0x54
mov r1h, r0l
dec r0l
mov #yearH, er1 ; 0x55
jsr sub_0fea8
mov #0, r0h
mov #0, r0l
bra rts_122a4
loc_122a2: mov #0x12, r0h
rts_122a4: rts
sub_122a6: cmp #0x0b, r0h
bne loc_122ba
mov #yearL, er0 ; 0x54
jsr sub_14050
mov r0h, r0l
mov #0, r0h
bra rts_122bc
loc_122ba: mov #0x12, r0h
rts_122bc: rts
sub_122be: cmp #0x0a, r0h
bne loc_122d2
mov #yearL, er0 ; 0x54
jsr sub_140a0
mov #0, r0h
mov #0, r0l
bra rts_122d4
loc_122d2: mov #0x12, r0h
rts_122d4: rts
sub_122d6: cmp #0x0a, r0h
bne loc_122f0
mov #yearL, er0 ; 0x54
jsr sub_11032
bcs loc_122ec
mov #0, r0h
mov #0, r0l
bra loc_122ee
loc_122ec: mov #0x12, r0h
loc_122ee: bra rts_122f2
loc_122f0: mov #0x12, r0h
rts_122f2: rts
sub_122f4: cmp #0x0a, r0h
bne loc_12306
mov #off_12380, er2
mov #off_123a8, er3
bra loc_12318
loc_12306: cmp #0x0b, r0h
bne loc_1237c
mov #off_12384, er2
mov #off_123b4, er3
mov #0x0a, r1h
loc_12318: mov #yearL, er4 ; 0x54
mov #0, r1l
loc_12320: cmp #0x0a, r1l
bhs loc_1236e
cmp r1l, r1h
bls loc_1236e
mov @er2, er5
beq loc_12358
mov @er3, er0
jsr @er0
push er1
push er2
push er3
push er4
jsr @er5
pop er4
pop er3
pop er2
pop er1
bra loc_1235a
loc_12358: mov #-1, r0h
loc_1235a: mov @(4,er3), er5
jsr @er5
adds #1, er4
add #8, er2
inc r1l
bra loc_12320
loc_1236e: mov #0, r0l
mov @(8,er3), er5
jsr @er5
mov #0, r0h
bra rts_1237e
loc_1237c: mov #0x12, r0h
rts_1237e: rts
off_12380: .long rts_072ae
off_12384: .long sub_072b0
.long NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
off_123a8: .long sub_123c0, rts_123ca, rts_123ca
off_123b4: .long rts_123ca, sub_123c4, sub_123c8
sub_123c0: mov @er4, r0h
rts
sub_123c4: mov r0h, @er4
rts
sub_123c8: mov r1h, r0l
rts_123ca: rts
sub_123cc: cmp #0x0a, r0h
bne loc_1240a
cmp #1, r1h
blo loc_123ee
mov @yearL, r0h ; 0x54
cmp #90, r0h
bne loc_123ee
mov r1h, r0h
dec r0h
mov #yearH, er1 ; 0x55
jsr sub_12842
bra clear0x54_73
loc_123ee: jsr sub_12838
clear0x54_73: mov #0, r0h
mov #0x20, r0l
mov #yearL, er1 ; 0x54
loc_123fc: mov r0h, @er1
adds #1, er1
dec r0l
bne loc_123fc
mov #0, r0h
mov #0, r0l
bra rts_1240c
loc_1240a: mov #0x12, r0h
rts_1240c: rts
sub_1240e: cmp #0x0a, r0h
bne loc_1244a
cmp #7, r1h
bne loc_1244a
mov @yearL, r0l ; 0x54
mov @yearH, r0h ; 0x55
mov @month, r1h ; 0x56
mov @day, r1l ; 0x57
mov @hour, r2h ; 0x58
mov @minute, r2l ; 0x59
mov @second, r3h ; 0x5a
jsr setDate
mov #0, r0h
mov #0, r0l
bra rts_12490
loc_1244a: cmp #0x0b, r0h
bne loc_1248e
jsr sub_06cc6
bcc loc_1245e
mov #0, r0
mov r0, r1
mov r0, r2
mov r0, r3
loc_1245e: mov r0l, @yearL ; 0x54
mov r0h, @yearH ; 0x55
mov r1h, @month ; 0x56
mov r1l, @day ; 0x57
mov r2h, @hour ; 0x58
mov r2l, @minute ; 0x59
mov r3h, @second ; 0x5a
mov #0, r0h
mov #7, r0l
bra rts_12490
loc_1248e: mov #0x12, r0h
rts_12490: rts
sub_12492: cmp #10, r0h
bne loc_124be
cmp #8, r1h
bne loc_124be
mov #yearL, er2 ; 0x54
mov #byte_124c2, er3
loc_124a6: mov @er2+, r4h
mov @er3+, r4l
cmp r4h, r4l
bne loc_124be
dec r1h
bne loc_124a6
mov #0, r0h
jsr sub_0c818
mov #1, r0h
jsr sub_0c818
loc_124be: mov #18, r0h
rts
byte_124c2: .byte 0x54, 0x36, 0x38, 0x2d, 0x73, 0xfc, 0x02, 0xd8
sub_124ca: cmp #8, r0h
bne loc_124e4
mov @yearL, r0l ; 0x54
mov @yearH, r0h ; 0x55
jsr sub_0c6b4
mov #0, r0h
mov #0, r0l
bra rts_12500
loc_124e4: cmp #9, r0h
bne loc_124fe
jsr sub_0c6ac
mov r0l, @yearL ; 0x54
mov r0h, @yearH ; 0x55
mov #0, r0h
mov #0, r0l
bra rts_12500
loc_124fe: mov #18, r0h
rts_12500: rts
sub_12502: bclr #7, r0h
cmp #8, r0h
bhs loc_12516
push er0
jsr sub_127f8
pop er0
bcs loc_1254e
loc_12516: cmp #11, r0h
bhs loc_1254e
shll r0h
mov #off_12558, er1
add r0h, r1l
addx #0, r1h
bcc loc_1252a
inc #1, e1
loc_1252a: mov @er1, r0
exts er0
add er1, er0
mov #M24 >> 16, e1 ; I/O Register Address Upper Word
mov @byte_ffe5f1, r1h ; 0x92 I/O register address MSB
mov @byte_ffe5f2, r1l ; 0x93 I/O register address LSB
mov @byte_ffe5f3, r2h ; 0x94 I/O register data (PIN register)
mov @byte_ffe5f4, r2l ; 0x95 I/O register data (copy of DDR)
jsr @er0
loc_1254e: bclr #7, @byte_ffe5ef ; 0x90
rts_12556: rts
off_12558: case 0 rts_12556 sub_1256e sub_1258a sub_1259e
case 4 sub_125b2 sub_125d0 sub_125ee sub_125f2
case 8 getPIN_DDRcopy getPIN_DDRcopy sub_1266c
sub_1256e: bsr sub_12578
mov r0h, @byte_ffe5f3 ; 0x94 I/O register data (PIN register)
rts
sub_12578: mov #RAM & M24, er0
cmp er0, er1
blo loc_12586
mov @er1, r0h
bra rts_12588
loc_12586: mov #0, r0h
rts_12588: rts
sub_1258a: bsr sub_12578
mov r0h, @byte_ffe5f3 ; 0x94 I/O register data (PIN register)
adds #1, er1
bsr sub_12578
mov r0h, @byte_ffe5f4 ; 0x95 I/O register data (copy of DDR)
rts
sub_1259e: mov @byte_ffe5f3, r0h ; 0x94 I/O register data (PIN register)
sub_125a4: mov #RAM & M24, er2
cmp er2, er1
blo rts_125b0
mov r0h, @er1
rts_125b0: rts
sub_125b2: btst #0, r1l
beq loc_125c2
bsr sub_1259e
adds #1, er1
mov @0x95, r0h
bsr sub_125a4
bra rts_125ce
loc_125c2: mov #RAM & M24, er0
cmp er0, er1
blo rts_125ce
mov r2, @er1
rts_125ce: rts
sub_125d0: mov #byte_ffe5f3, er2 ; 0x94 I/O register data (PIN register)
mov #8, r3h
loc_125d8: stm er2-er3, @-sp
bsr sub_12578
ldm @sp+, er2-er3
mov r0h, @er2
adds #1, er1
adds #1, er2
dec r3h
bne loc_125d8
rts
sub_125ee: mov #1, r0h
bra loc_125f4
sub_125f2: mov #0, r0h
loc_125f4: mov #RAM & M24, er3
cmp er3, er1
blo rts_1260c
cmp #0, r0h
bne loc_12608
bclr r2h, @er1
bra rts_1260c
loc_12608: bset r2h, @er1
rts_1260c: rts
getPIN_DDRcopy: cmp #0x0f, r1h
bhs loc_1263c
mov #P1DDRcopy, er2
add r1h, r2l
addx #0, r2h
bcc loc_12620
inc #1, e2
loc_12620: mov #off_1264e, er3
shll r1h
add r1h, r3l
addx #0, r3h
bcc loc_12630
inc #1, e3
loc_12630: mov @er3, r4
mov #M24 >> 16, e4 ; I/O Register Address Upper Word
mov @er4, r0h
mov @er2, r0l
bra loc_12640
loc_1263c: mov #-1, r0
loc_12640: mov r0h, @byte_ffe5f3 ; 0x94 I/O register data (PIN register)
mov r0l, @byte_ffe5f4 ; 0x95 I/O register data (copy of DDR)
rts
off_1264e: .word p1dr ; Port 1 Data Register
.word p2dr ; Port 2 Data Register
.word p3dr ; Port 3 Data Register
.word p4dr ; Port 4 Data Register
.word p5dr ; Port 5 Data Register
.word p6dr ; Port 6 Data Register
.word p7pin ; Port 7 Input Data Register
.word p8dr ; Port 8 Data Register
.word p9dr ; Port 9 Data Register
.word papin ; Port A Input Data Register
.word pbpin ; Port B Input Data Register
.word pcpin ; Port C Input Data Register
.word pdpin ; Port D Input Data Register
.word pepin ; Port E Input Data Register
.word pfpin ; Port F Input Data Register
sub_1266c: cmp #0x400, r1
blo loc_12680
cmp #0x1000, r1
bhs loc_12680
bclr #0, r1l
zero e1
mov @er1, r0
bra loc_12682
loc_12680: zero r0
loc_12682: mov r0h, @byte_ffe5f3 ; 0x94 I/O register data (PIN register)
mov r0l, @byte_ffe5f4 ; 0x95 I/O register data (copy of DDR)
rts
sub_12690: mov @yearL, r0l ; 0x54
mov @yearH, r0h ; 0x55
jsr sub_0c9f2
mov #0, r0h
mov #0, r0l
rts
mov #0x80, r0h
mov #0, r0l
mov #byte_ffe114, er1
loc_126b0: mov r0l, @er1
adds #1, er1
dec r0h
bne loc_126b0
rts
; check for debug build id and timestamp
sub_126ba: mov #0, r0l
mov r0l, @byte_ffff47
mov #byte0xF8, er1 ; build timestamp #1
mov @byte0xF8+2, r1h ; build timestamp #1
mov @byte0xF8+3, r1l ; build timestamp #1
mov #byte_ffe11c, er2
mov #8, r0h
loc_126dc: mov @er1+, r0l
beq loc_126dc
mov r0l, @er2
adds #1, er2
dec r0h
bne loc_126dc
mov @byte0xF0+4, r0h ; build id (e.g. .ascii "1YHT28WW")
cmp #'?, r0h
bne rts_126fa
bset #6, @byte_ffff47 ; # of build id starts with "?"
rts_126fa: rts
sub_126fc: cmp #0, r0h
bne loc_1271c
mov @byte_ffe114, r2h
beq loc_1271c
mov #byte_ffe114, er0
bsr cmpBuildId
bcs loc_1271a
bclr #7, @byte_ffff47
loc_1271a: bra rts_12762
loc_1271c: btst #7, @byte_ffff47
bne rts_12762
cmp #0x10, r0h
bhs rts_12762
cmp #1, r0h
bne loc_12742
mov #byte_ffe11c, er0
bsr cmpBuildId
bcs loc_12740
bset #6, @byte_ffff47 ; 6 build id contains "?"
loc_12740: bra rts_12762
loc_12742: shll r0h
shll r0h
shll r0h
mov #byte_ffe114, er2
add r0h, r2l
addx #0, r2h
bcc loc_12756
inc #1, e2
loc_12756: mov #8, r0h
loc_12758: mov @er1+, r0l
mov r0l, @er2
adds #1, er2
dec r0h
bne loc_12758
rts_12762: rts
cmpBuildId: mov #8, r2h
loc_12766: mov @er0+, r2l
mov @er1+, r3h
cmp r2l, r3h
bne loc_1277a
cmp #0, r3h
bne loc_12776
mov #0, r2h
bra loc_1277a
loc_12776: dec r2h
bne loc_12766
loc_1277a: cmp #0, r2h
bne loc_12782
clr c
bra rts_12784
loc_12782: set c
rts_12784: rts
sub_12786: btst #7, @byte_ffff47
bne rts_127b8
cmp #1, r0h
bls rts_127b8
cmp #0x10, r0h
bhs rts_127b8
shll r0h
shll r0h
shll r0h
mov #byte_ffe114, er2
add r0h, r2l
addx #0, r2h
bcc loc_127ac
inc #1, e2
loc_127ac: mov #8, r0h
loc_127ae: mov @er2+, r0l
mov r0l, @er1
adds #1, er1
dec r0h
bne loc_127ae
rts_127b8: rts
sub_127ba: mov @byte_ffe114, r0h
beq rts_127ca
bset #7, @byte_ffff47
rts_127ca: rts
sub_127cc: mov #byte_ffe18c, er1
zero r0
loc_127d4: mov @er1, r2h
beq loc_127dc
set c
bra loc_127de
loc_127dc: clr c
loc_127de: rotxl r0
cmp #byte_ffe114, er1
beq loc_127f0
sub #8, er1
bra loc_127d4
loc_127f0: mov r0h, r2h
mov r0l, r0h
mov r2h, r0l
rts
sub_127f8: bild #6, @byte_ffff47 ; 6 build id contains "?"
bor #5, @byte_ffff47
rts
sub_1280a: bset #5, @byte_ffff47
rts
sub_12814: bclr #4, @byte_ffff47
bset #3, @byte_ffff47
rts
sub_12826: bild #4, @byte_ffff47
bor #5, @byte_ffff47
rts
sub_12838: bclr #4, @byte_ffff47
rts
sub_12842: btst #3, @byte_ffff47
bne rts_1287c
cmp #4, r0h
bne loc_1286c
mov #off_1287e, er2
loc_12856: mov @er1+, r3h
mov @er2+, r3l
cmp r3h, r3l
bne loc_1286c
dec r0h
bne loc_12856
bset #4, @byte_ffff47
bra rts_1287c
loc_1286c: bclr #4, @byte_ffff47
bset #3, @byte_ffff47
rts_1287c: rts
off_1287e: .byte 0x84, 0x65, 0x60, 0x47
sub_12882: mov #0, r0h
mov r0h, @byte_ffe67f
mov r0h, @byte_ffe680
rts
sub_12892: push er0
jsr sub_0459e
pop er1
mov r1l, r0l
btst #1, r0l
bne loc_128ba
push er0
jsr sub_0539e
pop er0
bcc loc_128ba
mov #1, r0l
jsr sub_02a5e
bra loc_128bc
loc_128ba: mov #0, r0l
loc_128bc: mov r0l, r3h
cmp #0, r0h
beq loc_1293e
cmp #0x80, r0h
bhs loc_1293e
cmp #0x2a, r0h
beq loc_1293e
cmp #0x36, r0h
beq loc_1293e
cmp #0x1d, r0h
beq loc_1293e
cmp #0x38, r0h
beq loc_1293e
push er0
push er3
mov @byte_ffe67f, r0l
jsr sub_1298e
mov #0x10, r1h
mov #long_ffe681, er2
bsr sub_12942
mov r0l, @byte_ffe67f
mov r0h, r1h
pop er3
pop er0
push er1
mov @byte_ffe680, r0l
jsr sub_1299a
mov #0x10, r1h
mov #long_ffe681, er2
bsr sub_12942
mov r0l, @byte_ffe680
pop er1
cmp #0, r0h
beq loc_1292c
cmp #0, r1h
bne loc_12930
loc_1292c: mov #0, r0h
bra loc_1293a
loc_12930: cmp #1, r0h
bne loc_12938
cmp #1, r1h
beq loc_1293a
loc_12938: mov #-1, r0h
loc_1293a: clr c
bra rts_12940
loc_1293e: set c
rts_12940: rts
sub_12942: add r0l, r2l
addx #0, r2h
bcc loc_1294a
inc #1, e2
loc_1294a: cmp #0x1c, r0h
bne loc_1296c
cmp #-1, r0l
beq loc_12962
cmp #0, r0l
beq loc_12962
cmp r1h, r0l
beq loc_12966
mov @er2, r1l
beq loc_12966
cmp #0x1c, r1l
beq loc_12966
loc_12962: mov #1, r0h
bra loc_12968
loc_12966: mov #0, r0h
loc_12968: mov #0, r0l
bra rts_1298c
loc_1296c: cmp #-1, r0l
beq loc_1298a
cmp r1h, r0l
bhs loc_12988
mov @er2, r1l
beq loc_12988
cmp r1l, r0h
beq loc_12984
cmp #0, r3h
beq loc_12988
cmp r3h, r1l
bne loc_12988
loc_12984: inc r0l
bra loc_1298a
loc_12988: mov #-1, r0l
loc_1298a: mov #-1, r0h
rts_1298c: rts
sub_1298e: stm er0-er2, @-sp
mov #long_ffe124, er0
bra loc_129a4
sub_1299a: stm er0-er2, @-sp
mov #long_ffe12c, er0
loc_129a4: mov #long_ffe681, er2
bsr sub_129c0
add #0x28, er0
mov #long_ffe689, er2
bsr sub_129c0
ldm @sp+, er0-er2
rts
sub_129c0: mov #0, r1h
loc_129c2: mov @er0, r1l
mov r1l, @er2
add #1, er0
add #1, er2
inc r1h
cmp #8, r1h
blo loc_129c2
rts
cmp #0x0f, r0l
bhi loc_12a2c
cmp #1, r0h
bhi loc_12a2c
push er1
push er2
mov #long_ffe124, er2
mov #0, er1
cmp #0, r0h
beq loc_12a00
mov #8, er1
loc_12a00: add er1, er2
mov #0, er1
cmp #7, r0l
bls loc_12a12
mov #0x30, er1
loc_12a12: add er1, er2
mov r0l, r1l
and #7, r1l
extu r1
extu er1
add er1, er2
mov @er2, r0h
pop er2
pop er1
clr c
bra rts_12a2e
loc_12a2c: set c
rts_12a2e: rts
sub_12a30:
mov #0, r0l
mov r0l, @byte_ffe7ed
sub_12a38: bsr sub_137f8:16
bsr sub_138b2:16
sub_12a40: mov #0, r0h
mov #0x10 - 8 & type1R, r0l
mov #byte_ffe69c, er1
loc_12a4a: mov r0h, @(2,er1)
add #4, er1
dec r0l
bne loc_12a4a
mov r0h, @byte_ffe691
mov r0h, @temperState
mov r0h, @temperActive7x ; temperature sensor 0x78..0x7f enabled
mov r0h, @temperActiveCx ; temperature sensor 0xc0..0xc7 enabled
jsr sub_10e16
bset #6, @byte_ffff48:8
rts
sub_12a7a: bsr sub_12a40
mov #0, r0h
mov r0h, @temperState
rts
.c = 0
task46: mov @temperState, r0h
cmp #11-.c, r0h
blo loc_12a9a
btst #7, @byte_ffff48
beq loc_12aa6
loc_12a9a: mov #off_12ade, er1
jsr switch_er1_r0h
bra rts_12adc
loc_12aa6:
btst #1, @byte_ffff48:8
beq loc_12ad4
bclr #1, @byte_ffff48:8
btst #0, @byte_ffff48:8
beq loc_12abe
bset #7, @byte_ffff48
loc_12abe: mov @byte_ffe5eb, r0h ; 0x8c
mov r0h, @byte_ffe7ed
mov #4, r0h
mov r0h, @temperState
bra loc_12a9a
loc_12ad4:
mov #task46o, r0h
jsr schedFrontTask
clr c
rts_12adc: rts
off_12ade: case 0 sub_12b14 sub_12b40 sub_12b54 sub_12b78
case 4 sub_12b92 sub_12c2e sub_12c8a sub_12d04
case 8-.c sub_12d68 sub_12d7e sub_12e72 sub_12b60
case 12-.c sub_12b78 sub_13416 sub_13486 sub_12ee2
case 16-.c sub_12b4e sub_12fc0 sub_13108 sub_136ca
case 20-.c sub_132fa sub_13342 sub_12b66 sub_12b78
case 24-.c sub_13358 sub_12b4e sub_133c8
sub_12b14:
mov #0, r0
mov r0h, @temperIdx
mov r0h, @byte_ffe6dc
mov r0h, @byte_ffedb4
mov r0h, @byte_ffedb5
bclr #7, @byte_ffe594 ; 0x35
bsr incTstate:16
set c
rts
sub_12b40: b tst pb3pin ; Pin PB3/-WUE3/-CS4 (Port B Input Data Register)
beq loc_12b4a
bsr incTstate:16
loc_12b4a: set c
rts
sub_12b4e: mov #4000, r1
bra loc_12b6a
sub_12b54: mov #1000, r1
bra loc_12b6a
mov #251, r1
bra loc_12b6a
sub_12b60: mov #126 + 125 & type1R, r1
bra loc_12b6a
sub_12b66: mov #62 + 64 & type1R, r1
loc_12b6a: mov #task46o, r0h
jsr schedBackTaskDelayed
bsr incTstate:16
set c
rts
sub_12b78: mov #task46o, r0h
jsr checkSchedTask
bcc loc_12b88
bsr incTstate:16
set c
bra rts_12b90
loc_12b88: mov #task46o, r0h
jsr schedFrontTask
clr c
rts_12b90: rts
sub_12b92: mov #0, r0h
bsr sub_12f7e:16
mov @(2,er0), r2l
mov @(0,er0), r3l
mov #6, r3h
mov #0x15, r4h
mov #0x6e, r0h
mov @byte_ffe7ed, r4l
bpl loc_12bb6
neg r4l
shlr r4l
sub r4l, r0h
bra loc_12bba
loc_12bb6: shlr r4l
add r4l, r0h
loc_12bba: mov r0h, @byte_ffe69a
mov r0h, @byte_ffe7ee
mov #byte_ffedb8, er6
btst #7, @er6 ; i2c00o
bne loc_12c1a
mov r3h, @(i2c03o:16,er6)
mov r3l, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffe69a, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_12c26, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #4, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_12c1e
loc_12c1a: mov #0x1a, r0h
set c
loc_12c1e: bsr incTstate:16
set c
rts
loc_12c26: mov #task46o, r0h
jsr schedBackTask
rts
sub_12c2e: btst #6, @byte_ffedb8
beq loc_12c86
mov @byte_ffedbc, r0h
cmp #0, r0h
bne loc_12c50
mov #0, r0h
mov r0h, @byte_ffe69a
bsr incTstate:16
bra loc_12c86
loc_12c50: mov @byte_ffe6dc, r0h
inc r0h
cmp #7, r0h
bls loc_12c78
bset #0, @byte_ffedb4
mov #0, r1l
mov #3, r0l
mov #byte_ffe1c2, er2
jsr sub_1350e
bsr incTstate:16
bra loc_12c86
loc_12c78: mov r0h, @byte_ffe6dc
mov #4, r0h
mov r0h, @temperState
loc_12c86: set c
rts
sub_12c8a: mov #0, r0h
bsr sub_12f7e:16
mov @(2,er0), r2l
mov @(0,er0), r3l
mov #7, r3h
mov #0x0a, r4h
mov #byte_ffedb8, er6
btst #7, @er6 ; i2c00o
bne loc_12cf0
mov r3h, @(i2c03o:16,er6)
mov r3l, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffe69a, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_12cfc, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #4, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_12cf4
loc_12cf0: mov #0x1a, r0h
set c
loc_12cf4: bsr incTstate:16
set c
rts
loc_12cfc: mov #task46o, r0h
jsr schedBackTask
rts
sub_12d04: btst #6, @byte_ffedb8
beq loc_12d64
mov @byte_ffedbc, r0h
cmp #0, r0h
bne loc_12d2e
mov @byte_ffe69a, r0h
mov @byte_ffe7ee, r0l
cmp r0l, r0h
bne loc_12d2e
bsr incTstate:16
bra loc_12d64
loc_12d2e: mov @byte_ffe6dc, r0h
inc r0h
cmp #7, r0h
bls loc_12d56
bset #0, @byte_ffedb4
mov #0, r1l
mov #3, r0l
mov #byte_ffe1c2, er2
jsr sub_1350e
bsr incTstate:16
bra loc_12d64
loc_12d56: mov r0h, @byte_ffe6dc
mov #4, r0h
mov r0h, @temperState
loc_12d64: set c
rts
sub_12d68: mov #0, r0h
mov r0h, @temperIdx
mov r0h, @byte_ffe6dc
bsr incTstate:16
set c
rts
sub_12d7e: mov @temperIdx, r0h
cmp #15 - 8 & type1R, r0h
bhi loc_12e46:16
cmp #7, r0h
bhi loc_12d98
btst r0h, @byte_ffedb4
bra loc_12da0
loc_12d98: btst r0h, @byte_ffedb5
loc_12da0: bne loc_12e2e:16
bsr sub_12f7e:16
mov @(2,er0), r2l
cmp #2, r2l
blo loc_12db6
mov #9, r3h
mov #1, r4l
bra loc_12dba
loc_12db6: mov #7, r3h
mov #0, r4l
loc_12dba: mov @(0,er0), r3l
beq loc_12e2e:16
cmp #0x80, r3l
beq loc_12e2e
loc_12dc6: mov @(1,er0), r4h
loc_12dca: mov #byte_ffedb8, er6
btst #7, @er6 ; i2c00o
bne loc_12e24
mov r3h, @(i2c03o:16,er6)
mov r3l, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffe69a, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_12e6a, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #4, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
cmp #0, r4l
beq loc_12e12
bset #7, r5h
loc_12e12: mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_12e28
loc_12e24: mov #0x1a, r0h
set c
loc_12e28: bsr incTstate:16
bra loc_12e66
loc_12e2e: mov @temperIdx, r0h
inc r0h
mov r0h, @temperIdx
mov #0, r0h
mov r0h, @byte_ffe6dc
bra loc_12e66
loc_12e46: mov #11-.c, r0h
mov r0h, @temperState
mov #0, r0h
mov r0h, @temperIdx
mov @byte_ffedb4, r0
beq loc_12e66
1: bset #7, @byte_ffe594 ; 0x35
loc_12e66: set c
rts
loc_12e6a: mov #task46o, r0h
jsr schedBackTask
rts
sub_12e72: btst #6, @byte_ffedb8
beq loc_12ede
mov @byte_ffedbc, r0h
cmp #0, r0h
beq loc_12ec0
mov @byte_ffe6dc, r0h
inc r0h
cmp #7, r0h
bls loc_12ed0
mov @temperIdx, r0h
cmp #7, r0h
bhi loc_12ea6
bset r0h, @byte_ffedb4
bra loc_12eae
loc_12ea6: bset r0h, @byte_ffedb5
loc_12eae: mov @temperIdx, r1l
mov #3, r0l
mov #byte_ffe1c2, er2
jsr sub_1350e
loc_12ec0: mov @temperIdx, r0h
inc r0h
mov r0h, @temperIdx
mov #0, r0h
loc_12ed0: mov r0h, @byte_ffe6dc
mov #9-.c, r0h
mov r0h, @temperState
loc_12ede: set c
rts
sub_12ee2: mov @temperIdx, r0h
bsr sub_12f7e:16
mov @(2,er0), r2l
cmp #2, r2l
blo loc_12efa
mov #9, r3h
mov #1, r4l
bra loc_12efe
loc_12efa: mov #7, r3h
mov #0, r4l
loc_12efe: mov @(0,er0), r3l
beq loc_12f6a
mov @(1,er0), r4h
mov #byte_ffedb8, er6
btst #7, @er6 ; i2c00o
bne loc_12f62
mov r3h, @(i2c03o:16,er6)
mov r3l, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffe69a, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_12f76, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #4, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
cmp #0, r4l
beq loc_12f50
bset #7, r5h
loc_12f50: mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_12f66
loc_12f62: mov #0x1a, r0h
set c
loc_12f66: bsr incTstate
bra loc_12f72
loc_12f6a: mov #19-.c, r0h
mov r0h, @temperState
loc_12f72: set c
rts
loc_12f76: mov #task46o, r0h
jsr schedBackTask
rts
sub_12f7e: push er0
mov #0x11, r1l
mulxu r0h, r1
mov #0, e1
mov #long_ffe6dd, er0
add er0, er1
pop er0
push er1
mov #4, r1l
mulxu r0h, r1
mov #0, e1
mov #byte_ffe69c, er0
add er0, er1
pop er0
rts
incTstate: mov @temperState, r0h
inc r0h
mov r0h, @temperState
rts
sub_12fc0: mov #task46o, r0h
jsr checkSchedTask
bcs loc_13082:16
btst #6, @byte_ffedb8
beq loc_130c4:16
mov @byte_ffedbc, r0h
cmp #0, r0h
bne loc_13082:16
mov @temperIdx, r0h
cmp #7, r0h
bhi loc_12ff6
bclr r0h, @byte_ffedb4
bra loc_12ffe
loc_12ff6: bclr r0h, @byte_ffedb5
loc_12ffe: set c
bsr sub_130ce:16
bsr sub_12f7e:16
mov @byte_ffe69a, r3h
mov @(2,er0), r2h
cmp #2, r2h
blo loc_1301e
mov @byte_ffe69b, r3l
bra loc_13020
loc_1301e: mov #0, r3l
loc_13020: mov @temperIdx, r2h
beq loc_13036
mov r3h, @(0,er1)
mov r3l, @(1,er1)
bsr incTstate:16
bra loc_13080
loc_13036:
mov @byte_ffe7ed, r4l
bpl loc_13046
neg r4l
shlr r4l
add r4l, r3h
bra loc_1304a
loc_13046: shlr r4l
sub r4l, r3h
loc_1304a:
push er1
push er3
mov r3, r1
jsr sub_135c8
pop er3
pop er2
bcs loc_13070
mov r1h, @(0,er2)
mov r1l, @(1,er2)
bsr incTstate:16
bra loc_13080
loc_13070: mov r3h, @(0,er2)
mov r3l, @(1,er2)
mov #19-.c, r0h
mov r0h, @temperState
loc_13080: bra loc_130c2
loc_13082: mov @temperIdx, r0h
cmp #7, r0h
bhi loc_13096
bset r0h, @byte_ffedb4
bra loc_1309e
loc_13096: bset r0h, @byte_ffedb5
loc_1309e: mov @temperIdx, r1l
mov #3, r0l
mov #byte_ffe1c2, er2
jsr sub_1350e
mov @temperIdx, r0h
clr c
bsr sub_130ce
mov #19-.c, r0h
mov r0h, @temperState
loc_130c2: bra loc_130ca
loc_130c4: mov #task46o, r0h
jsr schedFrontTask
loc_130ca: set c
rts
sub_130ce:
stm er0-er1, @-sp
mov #temperActive7x, er1 ; temperature sensor 0x78..0x7f enabled
btst #3, r0h
beq loc_130e2
mov #temperActiveCx, er1 ; temperature sensor 0xc0..0xc7 enabled
loc_130e2: bcc loc_130f4
btst r0h, @er1
bne loc_130f2
bset r0h, @er1
bset #6, @byte_ffff48:8
loc_130f2: bra loc_13102
loc_130f4: btst r0h, @er1
beq loc_13102
bclr r0h, @er1
bset #6, @byte_ffff48:8
loc_13102: ldm @sp+, er0-er1
rts
sub_13108: mov @temperIdx, r0h
jsr sub_12f7e
stm er0-er1, @-sp
jsr sub_134e6
ldm @sp+, er0-er1
stm er0-er1, @-sp
bsr sub_1328c:16
bcc loc_1312c
bset #6, @byte_ffff48:8
loc_1312c: ldm @sp+, er0-er1
bsr sub_13268:16
bsr sub_1313e
jsr incTstate
set c
rts
sub_1313e: jsr sub_14fae
beq rts_1320c:16
mov @temperIdx, r0h
mov #long_ffe212, er3
mov #byte_ffe1d9, er4
mov #byte_ffe1e5, er5
mov #1, r6l
loc_13160: mov @er3, r0l
cmp r0l, r0h
bne loc_131ee:16
mov @(0,er1), r2l
btst #2, @byte_ffff48
beq loc_1319c
mov @(9,er3), r2h
bmi loc_1319c
cmp r2h, r2l
bls loc_1319c
mov r2l, @(9,er3)
push er2
mov r6l, @(2,er5)
mov r2l, @(3,er5)
mov #0x21, r0l
mov er5, er2
jsr sub_14e8a
pop er2
loc_1319c: btst #3, @byte_ffff48
beq rts_1320c
mov @(1,er3), r2h
cmp r2h, r2l
bhs loc_131d2
mov @(6,er3), r2h
cmp r2h, r2l
blo loc_131d2
mov @(3,er3), r2h
cmp r2h, r2l
blo loc_131c2
mov #3, r0l
bra loc_131d4
loc_131c2: mov @(4,er3), r2h
cmp r2h, r2l
blo loc_131ce
mov #2, r0l
bra loc_131d4
loc_131ce: mov #1, r0l
bra loc_131d4
loc_131d2: mov #0, r0l
loc_131d4: mov r6l, @(2,er4)
mov @(3,er4), r0h
mov r0l, @(3,er4)
cmp r0h, r0l
beq rts_1320c
mov #0x20, r0l
mov er4, er2
jsr sub_14e8a
bra rts_1320c
loc_131ee: inc r6l
add #4, er5
add #4, er4
add #0x0a, er3
cmp #byte_ffe230, er3
blo loc_13160:16
rts_1320c: rts
sub_1320e: mov #byte_ffe1d9, er3
loc_13214: mov #3, r0l
mov r0l, @(0,er3)
mov #0x20, r0l
mov r0l, @(1,er3)
mov #0, r0l
mov r0l, @(3,er3)
add #4, er3
cmp #byte_ffe1e5, er3
blo loc_13214
bset #3, @byte_ffff48
rts
sub_1323e: mov #byte_ffe1e5, er3
loc_13244: mov #3, r0l
mov r0l, @(0,er3)
mov #0x21, r0l
mov r0l, @(1,er3)
add #4, er3
cmp #byte_ffe1f1, er3
blo loc_13244
bset #2, @byte_ffff48
rts
sub_13268: mov @(0,er1), r2h
mov @(3,er1), r2l
sub r2h, r2l
bpl loc_13276
neg r2l
loc_13276: mov @(4,er0), r3h
beq loc_13288
cmp r3h, r2l
blo loc_13288
mov r2h, @(3,er1)
set c
bra rts_1328a
loc_13288: clr c
rts_1328a: rts
sub_1328c: add #5, er0
mov @(0,er1), r2h
mov @(2,er1), r2l
mov #0, r3h
loc_1329c: btst r3h, r2l
bne loc_132ae
mov @er0, r3l
cmp #0x80, r3l
beq loc_132ac
cmp r3l, r2h
ble loc_132ac
bset r3h, r2l
loc_132ac: bra loc_132bc
loc_132ae: mov @(1,er0), r3l
cmp #0x80, r3l
beq loc_132bc
cmp r3l, r2h
bge loc_132bc
bclr r3h, r2l
loc_132bc: adds #2, er0
inc r3h
cmp #6, r3h
blo loc_1329c
mov @(2,er1), r3h
cmp r3h, r2l
beq loc_132f2
mov r2l, @(2,er1)
btst #2, r2l
beq loc_132ee
stm er0-er3, @-sp
mov @temperIdx, r1l
mov #2, r0l
mov #byte_ffe1ab, er2
jsr sub_1350e
ldm @sp+, er0-er3
loc_132ee: set c
bra loc_132f4
loc_132f2: clr c
loc_132f4: mov r2l, r0h
mov r3h, r0l
rts
sub_132fa: mov @temperIdx, r0h
inc r0h
and #0x0f - 8 & type1R, r0h
mov r0h, @temperIdx
bne loc_1333a
bset #5, @byte_ffff48:8
btst #6, @byte_ffff48:8
beq loc_1333a
bclr #6, @byte_ffff48:8
bsr sub_1366c:16
push er0
or r0l, r0h
bsr sub_1368e:16
pop er0
and #7, r0h
and #7, r0l
shll #2, r0h
shll #2, r0h
or r0l, r0h
jsr sub_10e16
loc_1333a: bsr incTstate:16
set c
rts
sub_13342: btst #5, @byte_ffff48:8
beq loc_1334c
mov #22-.c, r0h
bra loc_1334e
loc_1334c: mov #11-.c, r0h
loc_1334e: mov r0h, @temperState
set c
rts
sub_13358: mov #7, r3h
mov #0x9a, r3l
mov #4, r4h
mov #1, r2l
mov #byte_ffedb8, er6
btst #7, @er6 ; i2c00o
bne loc_133b4
mov r3h, @(i2c03o:16,er6)
mov r3l, @(i2c05o:16,er6)
mov r4h, @(i2c06o:16,er6)
mov #byte_ffe69a, er5
mov er5, @(i2c08o:16,er6)
mov r2l, @(i2c02o:16,er6)
mov #loc_133c0, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #4, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_133b8
loc_133b4: mov #0x1a, r0h
set c
loc_133b8: bsr incTstate:16
set c
rts
loc_133c0: mov #task46o, r0h
jsr schedBackTask
rts
sub_133c8: mov #task46o, r0h
jsr checkSchedTask
bcs loc_133ee
btst #6, @byte_ffedb8
beq loc_1340c
mov @byte_ffedbc, r0h
cmp #0, r0h
bne loc_133ee
set c
mov @byte_ffe69a, r0l
bra loc_133f0
loc_133ee: clr c
loc_133f0: jsr sub_0e1d6
mov #63 + 63 & type1R, r1
mov #task46o, r0h
jsr schedBackTaskDelayed
mov #12-.c, r0h
mov r0h, @temperState
bclr #5, @byte_ffff48:8
bra loc_13412
loc_1340c: mov #task46o, r0h
jsr schedFrontTask
loc_13412: set c
rts
sub_13416: mov @temperIdx, r0l
mov #0, r0h
cmp #4, r0l
beq loc_13428
inc r0h
cmp #5, r0l
bne loc_13468
loc_13428: bsr sub_13470
cmp #-1, r0h
beq loc_13452
mov #0, r0l
push er0
mov @temperIdx, r0h
set c
bsr sub_130ce:16
jsr sub_12f7e
pop er2
mov r2h, @(0,er1)
mov r2l, @(1,er1)
bra loc_1345e
loc_13452: mov @temperIdx, r0h
clr c
bsr sub_130ce:16
loc_1345e: mov #18-.c, r0h
mov r0h, @temperState
bra loc_1346c
loc_13468: jsr incTstate
loc_1346c: set c
rts
sub_13470: jsr sub_0db7a
bcc loc_1347a
mov #-1, r0h
bra rts_13484
loc_1347a: jsr sub_0dbc2
mov r0, r1
mov r1l, r0h
mov r1h, r0l
rts_13484: rts
sub_13486: mov @temperIdx, r0l
mov #0, r0h
cmp #6, r0l
beq loc_13498
inc r0h
cmp #7, r0l
bne loc_134de
loc_13498: mov #0xd4, r4h
mov #1, r3h
jsr sub_0c764
cmp #-1, r0h
beq loc_134c8
mov #0, r0l
push er0
mov @temperIdx, r0h
set c
bsr sub_130ce:16
jsr sub_12f7e
pop er2
mov r2h, @(0,er1)
mov r2l, @(1,er1)
bra loc_134d4
loc_134c8: mov @temperIdx, r0h
clr c
bsr sub_130ce:16
loc_134d4: mov #18-.c, r0h
mov r0h, @temperState
bra loc_134e2
loc_134de: jsr incTstate
loc_134e2: set c
rts
sub_134e6: mov @(0,er1), r2h
mov @(3,er0), r2l
cmp #0x80, r2l
beq rts_1350c
cmp r2l, r2h
ble rts_1350c
mov @temperIdx, r1l
mov #1, r0l
mov #byte_ffe194, er2
jsr sub_1350e
jsr sub_017a0
rts_1350c: rts
sub_1350e: mov #0x16, r0h
mov r0h, @(0,er2)
mov r0l, @(1,er2)
mov r1l, @(9,er2)
stm er0-er2, @-sp
mov er2, er6
jsr sub_06cc6
mov r0l, @(2,er6)
mov r0h, @(3,er6)
mov r1h, @(4,er6) ; task21o/task22o/task23o
mov r1l, @(5,er6)
mov r2h, @(6,er6)
mov r2l, @(7,er6)
mov r3h, @(8,er6)
zero er2
add #0x0a, er6
loc_1354c: mov @(byte_ffe1fe,er2), r1l
btst #7, r1l
beq loc_1355c
bsr sub_13582
bra loc_13566
loc_1355c: mov r1l, r0h
shlr #2, r0h
shlr r0h
bsr sub_13706:16
loc_13566: mov r0l, @er6
inc #1, er6
mov r1l, @er6
inc #1, er6
add #2, r2l
cmp #0x0c, r2l
blo loc_1354c
bsr sub_1358e
mov r5l, @er6
ldm @sp+, er0-er2
jsr sub_14e8a
rts
sub_13582: mov #0, r0h
jsr getFanSpeed
mov #0x64, r1h
divxu r1h, r0
rts
sub_1358e: mov #0, r5l
jsr sub_074d0
bist #7, r5l
jsr sub_074bc
bst #6, r5l
mov #0, r0h
jsr sub_0c3d2
bcs loc_135ae
mov #0, r0h
jsr sub_0b42e
or r0h, r5l
bra loc_135b0
loc_135ae: or #3, r5l
loc_135b0: mov #1, r0h
jsr sub_0c3d2
bcs loc_135c4
mov #1, r0h
jsr sub_0b42e
shll #2, r0h
or r0h, r5l
bra rts_135c6
loc_135c4: or #0x0c, r5l
rts_135c6: rts
sub_135c8: mov @byte_ffe691, r2h
mov r2h, r2l
bclr #7, r2h
mov r2h, r3l
mov #0, r3h
mov #0, e3
mov r1h, @(long_ffe692,er3)
inc r2h
cmp #6, r2h
blo loc_135ec
mov #0x80, r2h
bra loc_135f0
loc_135ec: bld #7, r2l
bst #7, r2h
loc_135f0: mov r2h, @byte_ffe691
btst #7, r2h
beq loc_1365c
mov #6, r2h
mov #0x80, r2l
mov #0x7f, r3l
mov #long_ffe692, er4
mov #0, r5
loc_1360a: mov @er4, r6l
bmi loc_13612
mov #0, r6h
bra loc_13614
loc_13612: mov #-1, r6h
loc_13614: cmp r6l, r2l
bge loc_1361a
mov r6l, r2l
loc_1361a: cmp r6l, r3l
ble loc_13620
mov r6l, r3l
loc_13620: add r6, r5
adds #1, er4
dec r2h
bne loc_1360a
btst #7, r2l
beq loc_13630
mov #-1, r2h
bra loc_13632
loc_13630: mov #0, r2h
loc_13632: btst #7, r3l
beq loc_1363a
mov #-1, r3h
bra loc_1363c
loc_1363a: mov #0, r3h
loc_1363c: sub r2, r5
sub r3, r5
mov #4, r2h
btst #7, r5h
beq loc_13652
not r5h
not r5l
inc #1, r5
divxu r2h, r5
neg r5l
bra loc_13654
loc_13652: divxu r2h, r5
loc_13654: mov r5l, r1h
mov #0, r1l
clr c
bra rts_1365e
loc_1365c: set c
rts_1365e: rts
mov #0, r0h
mov r0h, @temperState
set c
rts
sub_1366c: mov #byte_ffe6a0, er1
mov #0, r0h
mov #0x0f - 8 & type1R, r0l
loc_13676: mov @(2,er1), r2h
or r2h, r0h
add #4, er1
dec r0l
bne loc_13676
mov @byte_ffe69e, r0l
rts
sub_1368e: mov r0h, r0l
shll r0l
mov #7, r0h
loc_13694: shll r0l
bcs loc_1369c
dec r0h
bne loc_13694
loc_1369c: add #0xfd, r0h
bpl loc_136a4
mov #0, r0h
bra loc_136a4
loc_136a4:
mov @byte_ffedb4, e0
bne loc_136b6
btst #0, @temperActive7x ; temperature sensor 0x78..0x7f enabled
bne loc_136c0
loc_136b6: bset #7, @byte_ffe594 ; 0x35
mov #3, r0h
loc_136c0: mov r0h, r0l
mov #0, r0h
jsr sub_1419e
rts
sub_136ca: mov @temperIdx, r0h
cmp #7, r0h
bhi loc_136de
btst r0h, @temperActive7x ; temperature sensor 0x78..0x7f enabled
bra loc_136e6
loc_136de: btst r0h, @temperActiveCx ; temperature sensor 0xc0..0xc7 enabled
loc_136e6:
beq inactive
jsr sub_12f7e
mov @(0,er1), r0l
bra loc_136f4
inactive: mov #0x80, r0l
loc_136f4: mov @temperIdx, r0h
jsr storeTemperat ; r0h: 0..f r0l: temperature
jsr incTstate
set c
rts
sub_13706: push er1
cmp #7, r0h
bhi loc_13718
btst r0h, @temperActive7x ; temperature sensor 0x78..0x7f enabled
bra loc_13720
loc_13718: btst r0h, @temperActiveCx ; temperature sensor 0xc0..0xc7 enabled
loc_13720: beq loc_1372c
jsr sub_12f7e
mov @(0,er1), r0l
bra loc_1372e
loc_1372c: mov #0x80, r0l
loc_1372e: pop er1
rts
sub_13734:
btst #1, @byte_ffff48:8
beq loc_13740
bset #0, @byte_ffff48:8
bra loc_13748
loc_13740: bset #7, @byte_ffff48
loc_13748:
mov #task46o, r0h
jsr schedBackTask
bset #7, @byte_ffff48
rts
sub_13758: btst #7, @byte_ffff48
beq rts_1377e
bsr sub_12a40:16
mov #11-.c, r0h
mov r0h, @temperState
mov #0, r0h
mov #3, r0l
jsr sub_1419e
bclr #7, @byte_ffff48
rts_1377e: rts
sub_13780: cmp #0x0f - 8 & type1R, r0h
bhi loc_137a6
cmp #7, r0h
bhi loc_13792
btst r0h, @temperActive7x ; temperature sensor 0x78..0x7f enabled
bra loc_1379a
loc_13792: btst r0h, @temperActiveCx ; temperature sensor 0xc0..0xc7 enabled
loc_1379a: beq loc_137a6
jsr sub_12f7e
mov @(0,er1), r0h
bra rts_137a8
loc_137a6: mov #0x80, r0h
rts_137a8: rts
sub_137aa: cmp #0x0f - 8 & type1R, r0h
bhi loc_137c8
mov #0x11, r1l
mulxu r0h, r1
mov #0, e1
mov #long_ffe6dd, er0
add er1, er0
add #3, er0
clr c
bra rts_137ca
loc_137c8: set c
rts_137ca: rts
sub_137cc: mov @er0, r1l
cmp #0x10 - 8 & type1R, r1l
bhs rts_137f6:16
cmp #0x12, r1h
bne rts_137f6:16
mov er0, er2
mov @er2+, r0h
jsr sub_12f7e
mov #0x11, r3l
loc_137e4: mov @er2, r3h
mov r3h, @er0
inc #1, er0
inc #1, er2
dec r3l
bne loc_137e4
mov #0, r0h
mov r0h, @(2,er1)
rts_137f6: rts
sub_137f8: mov #16 - 8 & type1R, r1l
loc_137fa: push er1
mov #off_00418, er0
mov @tabSelector, r1l
shll #2, r1l
extu r1
extu er1
add er1, er0
mov @er0, er0
mov @byte_ffe7f0, r1l
shll #2, r1l
extu r1
extu er1
add er1, er0
mov @er0, er0
inc #2, er0
pop er1
mov #long_ffe6dd, er2
loc_13834: mov #0x11, r3l
mov @er0, er4
loc_1383a: mov @er4, r3h
mov r3h, @er2
inc #1, er4
inc #1, er2
dec r3l
bne loc_1383a
add #4, er0
dec r1l
bne loc_13834
rts
sub_13852: mov #0x0b, r1l
bra loc_137fa
setFanSpeedProfile: ; 0xc8 0x, 1x, 2x, F0..F1
mov r0l, r0h
and #0xf0, r0h
cmp #0xf0, r0h
beq loc_1386c
shlr #2, r0h
shlr #2, r0h
bsr sub_13890
and #0x0f, r0l ; [0-E]0..[0-E]F
jsr setFanSpeedProfileB
bra rts_1387c
loc_1386c: and #0x0f, r0l ; F0..F1
push er0
bsr setTabSel
pop er0
jsr setFanSpeedProfileA
rts_1387c: rts
setTabSel: cmp #num_00418, r0l
blo loc_13884
mov #num_00418 - 1, r0l
loc_13884: mov r0l, @tabSelector
bsr sub_12a38:16
rts
sub_13890: push er0
cmp #3, r0h
blo lessThan3
mov #2, r0h
lessThan3: mov @byte_ffe7f0, r0l
mov r0h, @byte_ffe7f0
bsr sub_13852
bsr sub_12a40:16
pop er0
rts
sub_138b2: mov #long_ffe7f1, er4
mov #long_ffe801, er5
mov #3, r2l
mov r2l, @er4
inc #1, er4
cmp #8, r2l
bls loc_138ca
mov #8, r2l
loc_138ca: mov #off_00418, er0
mov @tabSelector, r1l
shll #2, r1l
extu r1
extu er1
add er1, er0
mov @er0, er0
loc_138e2: mov @er0, er1
mov @er1+, r3
mov r3l, @er4
inc #1, er4
mov @er1, er1
mov @(9,er1), r3l
mov r3l, @er5
inc #1, er5
mov @(8,er1), r3l
mov r3l, @er5
inc #1, er5
inc #2, er0
inc #2, er0
dec r2l
bne loc_138e2
rts
sto8C: mov r0l, @byte_ffe5eb ; 0x8c
bset #1, @byte_ffff48:8
mov #task46o, r0h
jsr schedBackTask
rts
initFan: jsr sub_14152
bsr sub_14462:16
mov #0, r0h
mov r0h, @byte_ffe81c
mov r0h, @byte_ffe81b
mov r0h, @byte_ffe81a
mov #250, r0h
mov r0h, @byte_ffe81d
mov #fanState00i, r0h
mov r0h, @fanState
mov #3, r0h
mov r0h, @speedLevel
mov r0h, @manLevel
mov r0h, @autoLevel
mov #0, r0h
mov @fanLevelTabPtr, er1
mov @er1, r0l ; # of levels
dec r0l ; set to max
jsr setFanCtrl
mov #0, r0h
jsr sub_10e7e
jsr sub_10ecc
bra loc_139bc
sub_1397a: bild #6, @byte_ffff49 ; fan off
bcc loc_139bc
mov #fanState00i, r0h
mov r0h, @fanState
mov #0, r0h
mov r0h, @speedLevel
mov r0h, @manLevel
mov r0h, @autoLevel
mov #0, r0h
jsr getFanCtrl
and #0b11000000, r0h ; keep auto-mode & free-run bits; level = 0
mov r0h, r0l
mov #0, r0h
push er0
jsr setFanCtrl
pop er0
jsr confSpeedMode
loc_139bc: b clr mstpcrh.mstp12 ; TMR_0, TMR_1 (Module Stop Control Register H)
mov #0, r0h
mov r0h, @byte_ffe812
mov #-1, r0
mov r0, @fanSpeed
setOutL 4 4 ; Pin P44/TMO1/HIRQ1/HSYNCO
b clr p44dr ; Pin P44/TMO1/HIRQ1/HSYNCO (Port 4 Data Register)
mov #250, r0h
mov r0h, @tcora_1:8 ; TMR_1 Time Constant Register A
mov #0b00001001, r0h ; clear on tcora_1 match; internal phi/2 clock
mov r0h, @tcr_1:8 ; TMR_1 Timer Control Register
b set stcr.icks1 ; Internal Clock Source Select 1 (Serial Timer Control Register)
b set tier.iciae ; Input Capture Interrupt A Enable (FRT Timer Interrupt Enable Register)
b set tier.ovie ; Timer Overflow Interrupt Enable (FRT Timer Interrupt Enable Register)
rts
.byte 0, 1, 1, 2, 2, 2, 3, 3 ; (manual fan levels)
fanTask: mov @fanState, r0h
mov #fanStateTab, er1
jsr switch_er1_r0h
bcs fanTask
clr c
rts
fanStateTab:
fanState00i = 0
fanState01i = 1
case 0 fanState00 fanState01 fanState02 fanState03
case , fanState04
fanState06i = 6
fanState12i = 12
case 5 fanState05 fanState06 fanState07 fanState08
case 9 fanState09 fanState10 fanState11 fanState12
case 13 fanState13 fanState14 fanState02 fanState16
case 17 fanState17 fanState02
fanState19i = .case
case , fanState19
fanState20i = .case
case , fanState11 fanState21 fanState22
case , fanState23
case , fanState02 fanState04 fanState06
case , fanState07 fanState08 fanState11
case 30 fanState30
case , fanState31 fanState32
fanState33i = .case
case , fanState33 fanState34 fanState35
fanState36i = .case
case , fanState36 fanState37 fanState04
case , fanState39 fanState40
fanState41i = 41
fanState46i = 46
case 41 fanState41 fanState13 fanState14
case 44 fanState39 fanState16 fanState46
fanState00: clr c
bsr sub_13a8a
mov #0, r0h
mov r0h, @byte_ffe81e
clr c
rts
fanState04: set c
sub_13a8a: mov #0, r0h ; Pin TMO1/P44 change disabled
mov r0h, @tcsr_1:8 ; TMR_1 Timer Control/Status Register
b st p44dr ; Pin P44/TMO1/HIRQ1/HSYNCO (Port 4 Data Register)
bsr incFanState:16
set c
rts
fanState11: mov #0b00001001, r0h ; Pin TMO1/P44 set to 0 if tcora_1 match, 1 if tcorb_1 match
mov r0h, @tcsr_1:8 ; TMR_1 Timer Control/Status Register
bsr incFanState
set c
rts
fanState02: mov @byte_ffe812, r0l
mov @speedLevel, r0h
cmp r0h, r0l
beq loc_13aec
mov r0h, @byte_ffe812
bne loc_13ac0
mov #fanState41i, r0l
bra loc_13ad4
loc_13ac0: cmp #0, r0l
bne loc_13ad2
mov #-1, r0
mov r0, @fanSpeed
mov #4, r0l
bra loc_13ad4
loc_13ad2: mov #fanState12i, r0l
loc_13ad4: mov r0l, @fanState
mov #0, r0h
mov r0h, @byte_ffe816
mov r0h, @byte_ffe817
set c
bra rts_13b02
loc_13aec: mov #fanTasko, r0h
jsr checkSchedTask
bcc loc_13afa
bsr incFanState
set c
bra rts_13b02
loc_13afa: mov #fanTasko, r0h
jsr schedFrontTask
clr c
rts_13b02: rts
mov #2000, r1
schedFanTask: mov #fanTasko, r0h
jsr schedBackTaskDelayed
bsr incFanState
set c
rts
incFanState: mov @fanState, r0h
inc r0h
mov r0h, @fanState
rts
mov #3, r1
bra schedFanTask
fanState37: mov #500, r1
bra schedFanTask
mov #50, r1
bra schedFanTask
fanState17: mov #100, r1
bra schedFanTask
fanState48: mov #5000, r1
bra schedFanTask
mov #10000, r1
bra schedFanTask
fanState01: mov #30000, r1
bra schedFanTask
fanState21: mov #1000, r1
bra schedFanTask
fanState14: mov @dynFanDelay, r1
bra schedFanTask
fanState39: mov #fanTasko, r0h
jsr checkSchedTask
bcc loc_13b6a
bsr incFanState
set c
bra rts_13b72
loc_13b6a: mov #fanTasko, r0h
jsr schedFrontTask
clr c
rts_13b72: rts
fanState23:
mov @long_ffeddc, er0
inc #2, er1
inc #2, er1
mov @er1, r1
mov @word_ffedd4, r0
cmp r1, r0
bhs fanState48
bra fanState01
fanState47: bsr sub_13ba4
jsr sub_141fc
mov #0, r0h
mov r0h, @byte_ffe818
jsr incFanState
set c
rts
sub_13ba4: mov @byte_ffe812, r0h
bsr sub_13c02
mov r0, @word_ffedd4
mov @byte_ffe812, r0h
bsr sub_13c1c
mov er0, er6
mov @er0, r0h
bne rts_13bca
mov @word_ffedd4, r0
bsr sub_13bcc
mov r0h, @er6
rts_13bca: rts
sub_13bcc: sub #300, r0
mov #word_144a2, er1
mov @er1, r2
cmp r2, r0
blo loc_13be2
mov #word_144d4, er1
loc_13be2: mov #-1, r3
loc_13be6: mov @er1, r2
cmp r2, r0
bhs loc_13bfc
mov @(4,er1), r2
cmp r2, r3
beq loc_13bfc
add #4, er1
bra loc_13be6
loc_13bfc: mov @(2,er1), r0
rts
sub_13c02: mov @long_ffeddc, er1 ; level pointer
inc #2, er1
dec r0h
shll r0h
add r0h, r1l
addx #0, r1h
bcc loc_13c18
inc #1, e1
loc_13c18: mov @er1, r0
rts
sub_13c1c: dec r0h
mov r0h, r0l
exts r0
exts er0
add #byte_ffe81a, er0
rts
fanState06: mov #0, r0h
mov r0h, @byte_ffe816
mov r0h, @byte_ffe817
bset #5, @byte_ffff49
mov #fanTasko, r0h
mov #100, r1
jsr schedBackTaskDelayed
loc_13c4c: jsr incFanState
set c
rts
fanState08: bclr #5, @byte_ffff49
bra loc_13c4c
fanState09:
mov #-1, r4h
bra loc_13c64
fanState30: mov #0, r4h
loc_13c64:
mov @byte_ffe816, r0h
mov #long_ffedd0, er1
cmp #1, r0h
bls loc_13cc0
mov @er1+, r2
mov @er1+, r3
cmp r2, r3
blo loc_13c8e
mov @byte_ffe817, r0h
beq loc_13c8a
mov #-1, r3
bra loc_13c8c
loc_13c8a: sub r2, r3
loc_13c8c: bra loc_13ca6
loc_13c8e:
mov @byte_ffe817, r0h
cmp #2, r0h
blo loc_13c9e
mov #-1, r3
bra loc_13ca6
loc_13c9e: sub r3, r2
mov #-1, r3
sub r2, r3
loc_13ca6: mov r3, r0
cmp #-1, r0
beq loc_13cc0
cmp #0, r4h
bne loc_13cb6
jsr sub_1422c
loc_13cb6: jsr sub_13e38
mov r0, @fanSpeed
loc_13cc0: jsr incFanState
set c
rts
fanState32: mov #fanState20i, r0h
mov r0h, @fanState
set c
rts
fanState07: mov #fanTasko, r0h
jsr checkSchedTask
bcs loc_13ce6
mov @byte_ffe816, r0h
cmp #2, r0h
blo loc_13cee
loc_13ce6: jsr incFanState
set c
bra rts_13cf6
loc_13cee: mov #fanTasko, r0h
jsr schedFrontTask
clr c
rts_13cf6: rts
fanState22: btst #3, @byte_ffff49
bne loc_13d86:16
mov @fanSpeed, r0
mov #-1, r1
cmp r0, r1
beq loc_13d82
jsr sub_13e48
bcc loc_13d2a
jsr loc_142b6
bcc loc_13d26
jsr sub_13eb6
mov r0h, r2l
bra loc_13d28
loc_13d26: mov #0, r2l
loc_13d28: bra loc_13d38
loc_13d2a: push er0
jsr incFanState
pop er0
mov r0h, r2l
loc_13d38: mov r2l, r2h
beq loc_13d80
mov @byte_ffe819, r4h
add r2l, r4h
bxor #7, r2l
bcc loc_13d56
btst #7, r2l
bne loc_13d50
mov #250, r4h
bra loc_13d56
loc_13d50: mov @byte_ffe819, r4h
loc_13d56: mov @byte_ffe818, r0h
cmp r0h, r4h
bhs loc_13d62
mov r0h, r4h
loc_13d62: mov r4h, r0h
jsr sub_141fc
push er4
mov @byte_ffe812, r0h
jsr sub_13c1c
pop er4
mov r4h, @er0
jsr sub_14218
loc_13d80: bra loc_13d86
loc_13d82: jsr incFanState
loc_13d86: jsr incFanState
set c
rts
fanState03: mov @byte_ffe81e, r0h
cmp #0x0a, r0h
bls loc_13dac
mov #fanState33i, r0h
mov r0h, @fanState
mov #-1, r0
mov r0, @fanSpeed
bra loc_13dc6
loc_13dac: mov #0, r0
mov r0, @fanSpeed
mov #0, r0h
mov r0h, @byte_ffe81e
mov #fanState01i, r0h
mov r0h, @fanState
loc_13dc6: clr c
rts
fanState33: bset #6, @byte_ffff49 ; 6 fan off
mov #0, r0h
jsr sub_10ea6
mov #0x3d, r0h
jsr sub_10cc0
jsr incFanState
clr c
rts
fanState34: jsr fanState00
jsr incFanState
fanState35: clr c
rts
fanState31: mov @fanSpeed, r0
mov #0x12c, r1
cmp r1, r0
blo loc_13e0a
mov @byte_ffe816, r0h
cmp #2, r0h
bhs loc_13e28
loc_13e0a: mov @byte_ffe819, r0h
cmp #250, r0h
bhs loc_13e1e
mov #fanState36i, r0h
mov r0h, @fanState
bra loc_13e26
loc_13e1e: mov #fanState33i, r0h
mov r0h, @fanState
loc_13e26: bra loc_13e34
loc_13e28: bset #7, @byte_ffff49
jsr incFanState
loc_13e34: set c
rts
sub_13e38: mov #0x23c, r3
mov #0x3460, r2
mov r0, r1
jsr sub_0c49a
rts
sub_13e48: jsr sub_13eb6
bcs loc_13e5e
mov #0xc8, r2
cmp r2, r1
bls loc_13e5a
clr c
bra loc_13e5c
loc_13e5a: set c
loc_13e5c: bra rts_13e60
loc_13e5e: set c
rts_13e60: rts
fanState19: jsr sub_14218
jsr incFanState
set c
rts
fanState36: btst #7, @byte_ffff49
beq loc_13e9c
mov @byte_ffe818, r0h
mov @byte_ffe819, r0l
cmp r0l, r0h
bhs loc_13e8a
mov r0l, r0h
loc_13e8a: add #1, r0h
bcs loc_13e92
cmp #250, r0h
bls loc_13e94
loc_13e92: mov #250, r0h
loc_13e94: mov r0h, @byte_ffe818
bra loc_13e9e
loc_13e9c: mov #250, r0h
loc_13e9e: jsr sub_141fc
jsr incFanState
set c
rts
fanState40: mov #fanState19i, r0h
mov r0h, @fanState
set c
rts
sub_13eb6: mov @fanSpeed, r0
mov #-1, r1
cmp r0, r1
beq loc_13efc
mov @word_ffedd4, r1
cmp r1, r0
blo loc_13eda
mov r0, r2
mov r1, r3
mov #word_1453e, er5
bra loc_13ee4
loc_13eda: mov r0, r3
mov r1, r2
mov #word_14522, er5
loc_13ee4: sub r3, r2
loc_13ee6: mov @er5, r4
cmp r4, r2
bhs loc_13ef2
adds #2, er5
adds #2, er5
bra loc_13ee6
loc_13ef2: mov @(3,er5), r0h
mov r2, r1
clr c
bra rts_13efe
loc_13efc: set c
rts_13efe: rts
sub_13f00: mov #0, r0h ; Pin TMO1/P44 change disabled
mov r0h, @tcsr_1:8 ; TMR_1 Timer Control/Status Register
setInL 4 4 ; Pin P44/TMO1/HIRQ1/HSYNCO
rts
; FRT Input Capture A
icia: b clr tier.iciae ; Input Capture Interrupt A Enable (FRT Timer Interrupt Enable Register)
clr i
b clr tcsr.icfa ; Input Capture Flag A (FRT Timer Control/Status Register)
stm er0-er1, @-sp
push er2
btst #5, @byte_ffff49
beq loc_13f64
mov @byte_ffe816, r0h
cmp #2, r0h
bhs loc_13f5e
mov r0h, r0l
shll r0l
mov #long_ffedd0, er1
add r0l, r1l
addx #0, r1h
bcc loc_13f50
inc #1, e1
loc_13f50: inc r0h
mov r0h, @byte_ffe816
mov @icral, r0 ; FRT Input Capture Register A
mov r0, @er1
loc_13f5e: mov #fanTasko, r0h
jsr schedBackTask
loc_13f64: mov @byte_ffe81e, r0h
bmi loc_13f74
inc r0h
mov r0h, @byte_ffe81e
loc_13f74: pop er2
ldm @sp+, er0-er1
set i
b set tier.iciae ; Input Capture Interrupt A Enable (FRT Timer Interrupt Enable Register)
rte
; FRT Overflow
fovi: b clr tier.ovie ; Timer Overflow Interrupt Enable (FRT Timer Interrupt Enable Register)
clr i
b clr tcsr.ovf ; Timer Overflow (FRT Timer Control/Status Register)
push er0
btst #5, @byte_ffff49
beq loc_13fb6
mov @byte_ffe816, r0h
cmp #1, r0h
bne loc_13fb6
mov @byte_ffe817, r0h
inc r0h
bmi loc_13fb6
mov r0h, @byte_ffe817
loc_13fb6: pop er0
set i
b set tier.ovie ; Timer Overflow Interrupt Enable (FRT Timer Interrupt Enable Register)
rte
confSpeedMode: cmp #0, r0h
bne rts_14024
bclr #4, @byte_ffff49 ; automatic speed off
btst #6, r0l
beq speedCtrlOn
bsr getLevel:16
inc r0h
mov r0h, @manLevel
jsr setLevel
bra rts_14024
speedCtrlOn: btst #7, r0l
beq manualSpeed
bset #4, @byte_ffff49 ; automatic speed on
mov #0, r0l
mov r0l, @manLevel
jsr setLevel
bra rts_14024
manualSpeed: mov @fanLevelTabPtr, er1
mov @er1+, r2h ; # of levels
dec r2h ; max value
cmp r2h, r0l
bls loc_14010
mov r2h, r0l ; limit to max value
loc_14010: add r0l, r1l
addx #0, r1h
bcc loc_14018
inc #1, e1
loc_14018: mov @er1, r0l
mov r0l, @manLevel
jsr setLevel
rts_14024: rts
getFanSpeed: cmp #0, r0h
bne invalidR0h
mov @byte_ffe812, r0l
beq fanIsOff
btst #6, @byte_ffff49 ; fan off
beq loc_14042
fanIsOff: mov #0, r0
bra loc_14048
loc_14042: mov @fanSpeed, r0
loc_14048: bra rts_1404e
invalidR0h: mov #-1, r0
rts_1404e: rts
sub_14050: push er0
mov @fanLevelTabPtr, er1
mov @er1+, r2h ; # of levels
loc_1405e: mov @er1, r2l
mov r2l, @er0
adds #1, er0
adds #1, er1
dec r2h
bne loc_1405e
push er0
bsr getLevel:16
mov r0h, r2h
pop er0
mov r2h, @er0
adds #1, er0
mov @long_ffeddc, er1 ; level pointer
inc #2, er1
loc_14086: mov @er1, r3
mov r3l, @er0
mov r3h, @(1,er0)
adds #2, er0
adds #2, er1
dec r2h
bne loc_14086
pop er1
sub er1, er0
mov r0l, r0h
rts
sub_140a0: mov @fanLevelTabPtr, er2
zero er3
mov @er2+, r3l ; # of levels
cmp r3l, r1h
blo rts_1414c:16
add er3, er0
sub r3l, r1h
push er0
bsr getLevel:16
mov r0h, r3h
mov r0h, r3l
pop er0
shll r3l
inc r3l
cmp r3l, r1h
blo rts_1414c
mov @er0+, r1l ; count
cmp r3h, r1l
bne rts_1414c
mov #600, r2
mov er0, er5
loc_140dc: mov @er5+, r4l ; data
mov @er5+, r4h
cmp r2, r4
blo loc_140e8
dec r1l
bne loc_140dc
loc_140e8: bcs rts_1414c
push er0
bsr sub_1414e
pop er0
bcs rts_1414c
mov @long_ffeddc, er1 ; level pointer
mov @er1, r2h
dec r2h
adds #2, er1
loc_14104: mov @er0+, r3l
mov @er0+, r3h
mov r3, @er1
adds #2, er1
dec r2h
bne loc_14104
mov #0, r1h
mov r1h, @byte_ffe81a
mov r1h, @byte_ffe81b
mov r1h, @byte_ffe81c
mov @fanState, r0h
cmp #fanState00i, r0h
bls rts_1414c
mov #fanState00i, r0h
mov r0h, @fanState
mov #0, r0h
mov r0h, @byte_ffe812
mov #0, r0h
jsr getFanCtrl
mov r0h, r0l
mov #0, r0h
jsr confSpeedMode
rts_1414c: rts
sub_1414e: clr c
rts
sub_14152: mov #long_ffede0, er0
mov er0, @long_ffeddc ; level pointer
mov #off_00450, er1
mov @fanSpeedProfileA, r2l
shll #2, r2l
extu r2
extu er2
add er2, er1
mov @er1, er1
mov @fanSpeedProfileB, r2l
shll #2, r2l
extu r2
extu er2
add er2, er1
mov @er1, er1
zero r2l
loc_1418c: mov @er1, r2h
mov r2h, @er0
inc r2l
cmp #10, r2l
bhs rts_1419c
inc #1, er0
inc #1, er1
bra loc_1418c
rts_1419c: rts
sub_1419e: bsr getLevel
cmp r0h, r0l
bls loc_141a6
mov r0h, r0l
loc_141a6: mov r0l, @autoLevel
setLevel: btst #4, @byte_ffff49 ; automatic speed
beq manSpeed
mov @autoLevel, r0h
bra loc_141c4
manSpeed: mov @manLevel, r0h
loc_141c4: mov r0h, @speedLevel
mov #fanTasko, r0h
jsr schedBackTask
rts
getLevel: push er1
mov @long_ffeddc, er1 ; level pointer
mov @er1, r0h
dec r0h
pop er1
rts
bset #3, @byte_ffff49
rts
bclr #3, @byte_ffff49
rts
sub_141fc: mov r0h, @byte_ffe819
cmp #250, r0h
bhs loc_1420e
mov #250, r0l
sub r0h, r0l
mov r0l, @tcorb_1:8 ; TMR_1 Time Constant Register B
bra rts_14216
loc_1420e: b set p44dr ; Pin P44/TMO1/HIRQ1/HSYNCO (Port 4 Data Register)
mov #0, r0h ; Pin TMO1/P44 change disabled
mov r0h, @tcsr_1:8 ; TMR_1 Timer Control/Status Register
rts_14216: rts
sub_14218: mov #0, r0h
mov r0h, @byte_ffe833
mov #-1, r0
mov r0, @word_ffedfe
rts
sub_1422c: mov @byte_ffe833, r1h
mov r1h, r1l
bclr #7, r1l
mov #long_ffedf2, er2
shll r1l
add r1l, r2l
addx #0, r2h
bcc loc_14246
inc #1, e2
loc_14246: mov r0, @er2
mov r1h, r1l
bclr #7, r1l
inc r1l
cmp #6, r1l
bne loc_14256
mov #0x80, r1l
bra loc_1425a
loc_14256: bld #7, r1h
bst #7, r1l
loc_1425a: mov r1l, @byte_ffe833
btst #7, r1l
beq loc_14266
mov #6, r1l
loc_14266: push er1
mov #0, r2
mov r2, r3
mov #0, r4
mov #-1, r5
mov #0, r1h
mov #long_ffedf2, er6
loc_14280: mov @er6+, r0
add r0, r2
addx #0, r3l
cmp r4, r0
bls loc_1428c
mov r0, r4
loc_1428c: cmp r5, r0
bhs loc_14292
mov r0, r5
loc_14292: dec r1l
bne loc_14280
pop er1
cmp #4, r1l
blo loc_142aa
sub r4, r2
subx #0, r3l
sub r5, r2
subx #0, r3l
dec r1l
dec r1l
loc_142aa: mov #0, r1h
jsr sub_0c49a
mov r0, @word_ffedfe
loc_142b6: mov @word_ffedfe, r0
mov @byte_ffe833, r1h
bld #7, r1h
bcc rts_142c8
mov #6, r1h
rts_142c8: rts
fanState10: mov @byte_ffe81e, r0h
cmp #4, r0h
bls loc_142f8
mov @fanSpeed, r0
cmp #-1, r0
beq loc_142f8
cmp #2500, r0
blo loc_142f8
mov #2500, r0
jsr sub_13bcc
jsr sub_141fc
jsr incFanState
bra loc_14316
loc_142f8: mov @word_ffedda, r0
jsr cmpTick
bcc loc_1430e
mov #fanState33i, r0h
mov r0h, @fanState
bra loc_14316
loc_1430e: mov #fanState06i, r0h
mov r0h, @fanState
loc_14316: set c
rts
fanState05: mov @tick, r0
mov #1000, r1
add r1, r0
mov r0, @word_ffedda
jsr incFanState
rts
fanState12: jsr sub_13ba4
mov r0h, @byte_ffe820
jsr incFanState
set c
rts
fanState16: mov @byte_ffe819, r0h
mov @byte_ffe820, r0l
cmp r0h, r0l
bne loc_1435a
jsr incFanState
bra loc_1437a
loc_1435a: mov @byte_ffe819, r0h
mov @byte_ffe81f, r0l
add r0l, r0h
jsr sub_141fc
mov @fanState, r0h
add #-2, r0h
mov r0h, @fanState
loc_1437a: set c
rts
fanState46: mov #fanState00i, r0h
mov r0h, @fanState
set c
rts
mov #fanState41i, r0h
mov r0h, @fanState
set c
rts
fanState13: mov @fanSpeed, r0
mov @word_ffedd4, r1
cmp r0, r1
bhs loc_143ac
sub r1, r0
mov r0, r1
bra loc_143ae
loc_143ac: sub r0, r1
loc_143ae: mov #1000, r0
mulxu r0, er1
mov @word_ffedd6, r0
bne loc_143c0
mov #250, r0
loc_143c0: divxu r0, er1
mov @byte_ffe819, r2l
mov @byte_ffe820, r3l
cmp r2l, r3l
bhs loc_143da
sub r3l, r2l
mov r2l, r3l
mov #-1, r0h
bra loc_143de
loc_143da: sub r2l, r3l
mov #1, r0h
loc_143de: mov r0h, @byte_ffe81f
extu r3
extu er1
divxs r3, er1
cmp #10, r1
bhs loc_143f6
mov #10, r1
loc_143f6: mov r1, @dynFanDelay
jsr incFanState
set c
rts
fanState41: mov @fanSpeed, r0
cmp #2500, r0
blo loc_1442a
mov #2500, r0
mov r0, @word_ffedd4
jsr sub_13bcc
mov r0h, @byte_ffe820
jsr incFanState
bra loc_14432
loc_1442a: mov #fanState46i, r0h
mov r0h, @fanState
loc_14432: set c
rts
mov r0, @word_ffedd6
rts
setFanSpeedProfileA:
cmp #num_00450, r0l
blo loc_14444
mov #num_00450 - 1, r0l ; max profile #
loc_14444: mov r0l, @fanSpeedProfileA
bsr initFan:16
rts
setFanSpeedProfileB:
cmp #num_5, r0l
blo loc_14456
mov #num_5 - 1, r0l ; max profile #
loc_14456: mov r0l, @fanSpeedProfileB
jsr sub_14152
rts
sub_14462: mov #long_ffe823, er3
mov #3, r2l
mov r2l, @er3
inc #1, er3
cmp #15, r2l
bls loc_14474
mov #15, r2l
loc_14474: mov #off_00450, er0
mov @fanSpeedProfileA, r1l
shlr #2, r1l
extu r1
extu er1
add er1, er0
mov @er0, er0
loc_1448c: mov @er0, er1
inc #1, er1
mov @er1, r2h
mov r2h, @er3
inc #1, er3
inc #2, er0
inc #2, er0
dec r2l
bne loc_1448c
rts
word_144a2:
.word 0x149b, 0xf000
.word 0x10d3, 0xe600
.word 0x0f2b, 0xdc00
.word 0x0e46, 0xd200
.word 0x0d43, 0xc800
.word 0x0c39, 0xbe00
.word 0x0ad2, 0xb400
.word 0x0996, 0xaa00
.word 0x0829, 0xa000
.word 0x06d6, 0x9600
.word 0x0657, 0x8c00
.word 0x05b4, 0x8200
.word -1
word_144d4: .word 0x1770, 0xe105
.word 0x16a8, 0xd505
.word 0x15e0, 0xc805
.word 0x1518, 0xbc05
.word 0x1450, 0xae05
.word 0x1388, 0xa305
.word 0x12c0, 0x9505
.word 0x11f8, 0x8a05
.word 0x1130, 0x7f05
.word 0x1068, 0x7605
.word 0x0fa0, 0x6c05
.word 0x0ed8, 0x6305
.word 0x0e10, 0x5805
.word 0x0d48, 0x5005
.word 0x0c80, 0x4a05
.word 0x0bb8, 0x4005
.word 0x0af0, 0x3805
.word 0x0a28, 0x3305
.word 0x0960, 0x2a05
.word -1
word_14522: .word 1000, 25
.word 500, 10
.word 200, 5
.word 150, 3
.word 100, 2
.word 50, 1
.word 0, 0
word_1453e: .word 500, -10 - 20 & type1R
.word 400, -8 - 14 & type1R
.word 300, -7 - 11 & type1R
.word 200, -6 - 9 & type1R
.word 100, -4 - 6 & type1R
.word 75, -3 - 2 & type1R
.word 50, -2
.word 0, -1
sub_1455e: mov #-1, r0h
mov r0h, @byte_ffe834
mov #0, r0h
mov r0h, @byte_ffff4a
jsr sub_147ec
rts
sub_14574: bclr #7, @byte_ffff4a:8
jsr sub_147b4
bcs loc_145a8
jsr sub_14820
mov r0h, @byte_ffe835
jsr sub_14742
btst #1, r0h
beq loc_14594
mov #1, r0h
bra loc_1459e
loc_14594: btst #3, r0h
bne loc_1459c
mov #1, r0h
bra loc_1459e
loc_1459c: mov #3, r0h
loc_1459e: mov r0h, @byte_ffe834
jsr sub_14652
loc_145a8: jsr sub_147ec
rts
task48_2: jsr sub_147b4
bcs loc_1461c
mov @byte_ffe834, r0h
cmp #2, r0h
beq loc_1461c
mov #1, r0h
jsr sub_0db7a
bcs loc_145f4
mov #1, r0h
jsr sub_0b42e
cmp #1, r0h
bne loc_145f4
mov #0, r0h
jsr sub_0c3d2
bcs loc_145ec
mov #0, r0h
jsr sub_0b42e
cmp #1, r0h
bne loc_145ec
mov #0, r0h
jsr sub_0c35c
btst #6, r0h
beq loc_145f4
loc_145ec: bset #7, @byte_ffff4a:8
mov #3, r0h
bra loc_14608
loc_145f4: btst #7, @byte_ffff4a:8
beq loc_14602
mov #1, r0h
bclr #7, @byte_ffff4a:8
bra loc_14608
loc_14602: mov @byte_ffe834, r0h
loc_14608: mov @byte_ffe834, r0l
cmp r0h, r0l
beq loc_1461c
mov r0h, @byte_ffe834
jsr sub_14652
loc_1461c: clr c
rts
task48_3: jsr sub_147ec
rts
sub_14626: mov #3, r0h
jsr sub_068e6
sub_1462c: jsr sub_06416
cmp #0x0f, r0h
bne rts_14638
jsr sub_0633a
rts_14638: rts
sub_1463a: mov #3, r0h
jsr sub_0693c
mov #0x0f, r0h
mov #8, r0l
jsr sub_0638c
rts
sub_1464a: mov #3, r0h
jsr sub_068e6
bra sub_1462c
sub_14652: jsr sub_14820
jsr sub_14742
mov @byte_ffe834, r0l
cmp #2, r0l
beq loc_14670
cmp #1, r0l
bne loc_1467a
btst #3, r0h
beq loc_1467a
btst #0, r0h
bne loc_1467a
loc_14670: jsr sub_1463a
jsr loc_0778c
bra loc_14690
loc_1467a: cmp #3, r0l
bne loc_14688
mov #3, r0h
jsr sub_068e2
bsr sub_1462c
bra loc_1468c
loc_14688: jsr sub_14626
loc_1468c: jsr loc_0775c
loc_14690: clr c
rts
sub_14694: mov @byte_ffe834, r0h
cmp #0, r0h
bne loc_146a2
mov #1, r0h
bra loc_146be
loc_146a2: cmp #2, r0h
beq loc_146aa
cmp #3, r0h
bne loc_146be
loc_146aa: jsr sub_14820
mov @byte_ffe835, r0l
cmp r0h, r0l
beq loc_146bc
mov #2, r0h
bra loc_146be
loc_146bc: mov #3, r0h
loc_146be: mov r0h, @byte_ffe834
bra sub_14652
sub_146c6: jsr sub_14820
jsr sub_14742
btst #3, r0h
bne loc_146e0
mov #1, r0h
jsr sub_0db7a
bcc loc_146e0
jsr sub_14626
bra rts_146f4
loc_146e0: mov @byte_ffe834, r0h
cmp #3, r0h
bne loc_146f0
jsr sub_1463a
bra rts_146f4
loc_146f0: jsr sub_1464a
rts_146f4: rts
sub_146f6: jsr sub_147b4
bcs rts_14708
jsr sub_06416
cmp #0x0f, r0h
bne rts_14708
jsr sub_0633a
rts_14708: rts
sub_1470a: mov #sub_14652, er0
bra loc_14720
sub_14712: mov #sub_146c6, er0
bra loc_14720
sub_1471a: mov #sub_14694, er0
loc_14720: jsr sub_147ec
push er0
jsr sub_01272
pop er0
bcs rts_14740
b ild pb6pin ; Pin PB6/-WUE6 (Port B Input Data Register)
bcc rts_14740
jsr sub_147b4
bcs rts_14740
jmp @er0
rts_14740: rts
sub_14742: mov r0h, r0l
shlr r0l
mov #long_ffe836, er1
add r0l, r1l
addx #0, r1h
bcc loc_14754
inc #1, e1
loc_14754: mov @er1, r0l
btst #0, r0h
beq loc_14762
shlr r0l
shlr r0l
shlr r0l
shlr r0l
loc_14762: mov r0l, r0h
and #0x0f, r0h
rts
sub_14768: mov #0x10, r1l
mov #long_ffe836, er2
loc_14770: cmp #0, r1h
beq loc_147aa
cmp #0, r1l
beq loc_147aa
mov @er0+, r3h
mov @er2, r3l
bld #7, r3h
bst #3, r3h
and #0x0f, r3h
btst #0, r1l
bne loc_1478c
and #0xf0, r3l
or r3h, r3l
bra loc_14798
loc_1478c: shll r3h
shll r3h
shll r3h
shll r3h
and #0x0f, r3l
or r3h, r3l
loc_14798: mov r3l, @er2
bld #0, r1l
addx #0, r2l
addx #0, r2h
bcc loc_147a4
inc #1, e2
loc_147a4: dec r1h
dec r1l
bra loc_14770
loc_147aa: mov #0, r0h
mov r0h, @byte_ffe834
rts
sub_147b4: push er0
btst #6, @byte_ffff4a:8
bne loc_147cc
mov @byte_ffe834, r0h
cmp #-1, r0h
beq loc_147cc
clr c
bra loc_147ce
loc_147cc: set c
loc_147ce: pop er0
rts
sub_147d4: bclr #6, @byte_ffff4a:8
rts
sub_147da: bset #6, @byte_ffff4a:8
rts
sub_147e0: bset #5, @byte_ffff4a:8
rts
sub_147e6: bclr #5, @byte_ffff4a:8
rts
sub_147ec: push er0
jsr sub_074f8
bcs loc_14808
btst #5, @byte_ffff4a:8
bne loc_1480c
b ild p74pin ; Pin P74/AN4 (Port 7 Input Data Register)
bcc loc_14808
jsr sub_074d0
bcc loc_1480c
loc_14808:
clr c
bra loc_1480e
loc_1480c:
set c
loc_1480e: mov #7, r0h
jsr setPINcopy
pop er0
clr c
rts
byte_1481c: .byte 3, 15, 6, 15
sub_14820: push er1
jsr sub_07292
and #3, r0h
zero er1
mov r0h, r1l
add #byte_1481c, er1
mov @er1, r0h
pop er1
rts
sub_1483e: mov #0, r0h
mov r0h, @byte_ffff4c
bset #2, r0h
mov r0h, @byte_ffff4b
mov @tick, r0
mov r0, @word_ffee00
mov #2000, r1
add r1, r0
mov r0, @word_ffee04
clr c
jsr sub_10f4a
rts
task49: btst #2, @byte_ffff4b
beq loc_14894
mov @word_ffee04, r0
jsr cmpTick
bcc loc_14894
bclr #2, @byte_ffff4b
bsr loc_1491a:16
jsr loc_14944
loc_14894: mov @word_ffee00, r0
jsr cmpTick
bcc loc_148d0
mov #0, r0h
mov #1, r0l
mov #byte_ffee06, er1
jsr sub_149ae
mov #1, r0h
mov #0, r0l
mov #byte_ffee08, er1
jsr sub_149ae
mov #2000, r0
mov @tick, r1
add r1, r0
mov r0, @word_ffee00
bsr loc_14944
loc_148d0: clr c
rts
sub_148d4: bcc loc_148f8
bclr #2, @byte_ffff4c
mov @tick, r0
add #10000, r0
mov r0, @word_ffee04
bset #2, @byte_ffff4b
bra loc_14918
loc_148f8: bclr #2, @byte_ffff4c
bclr #1, @byte_ffff4c
bclr #0, @byte_ffff4c
bclr #2, @byte_ffff4b
loc_14918: bra loc_14944
loc_1491a: jsr sub_074d0
bcs loc_1493a
jsr sub_074ee
bcs loc_14930
bset #2, @byte_ffff4c
bra loc_14938
loc_14930: bclr #2, @byte_ffff4c
loc_14938: bra rts_14942
loc_1493a: bclr #2, @byte_ffff4c
rts_14942: rts
loc_14944: btst #7, @byte_ffff4b
beq loc_14962
mov @word_ffee02, r0
jsr sub_016e4
bcc rts_149ac
bclr #7, @byte_ffff4b
loc_14962: mov @byte_ffff4c, r0h
bld #2, r0h
bor #1, r0h
bor #0, r0h
bxor #7, r0h
bcc rts_149ac
bild #7, r0h
bst #7, @byte_ffff4c
bcc loc_1499a
mov @word_ffe9be, r0
add #0x3c, r0
mov r0, @word_ffee02
bset #7, @byte_ffff4b
mov #0x48, r0h
bra loc_1499c
loc_1499a: mov #0x49, r0h
loc_1499c: jsr sub_10cc0
bld #7, @byte_ffff4c
jsr sub_10f4a
rts_149ac: rts
sub_149ae: push er1
push er0
jsr sub_074d0
bcs loc_14a1a
jsr sub_0c7de
mov #0xff9c, r1
cmp r1, r0
bgt loc_14a1a
mov @sp, er0 ; pop+push er0
btst r0l, @byte_ffff4b
beq loc_149fa
mov @(4,sp), er1
mov @er1, r0
jsr sub_016e4
bcc loc_149f8
mov @sp, er0 ; pop+push er0
bset r0l, @byte_ffff4c
bclr r0l, @byte_ffff4b
loc_149f8: bra loc_14a18
loc_149fa: mov @word_ffe9be, r0
add #0x14, r0l
addx #0, r0h
mov @(4,sp), er1
mov r0, @er1
mov @sp, er0 ; pop+push er0
bset r0l, @byte_ffff4b
loc_14a18: bra loc_14a2e
loc_14a1a: mov @sp, er0 ; pop+push er0
bclr r0l, @byte_ffff4c
bclr r0l, @byte_ffff4b
loc_14a2e: pop er1
pop er0
rts
sub_14a38: btst #2, @byte_ffff4b
bne rts_14a56
bset #2, @byte_ffff4b
mov @tick, r0
mov r0, @word_ffee04
rts_14a56: rts
setupP46DDRout: setOutH 4 6 ; Pin P46/PWX0
mov #0, r0l
mov r0l, @byte_ffe840
mov r0l, @byte_ffe83e
mov r0l, @byte_ffe83f
rts
sub_14a7e: b set p46dr ; Pin P46/PWX0 (Port 4 Data Register)
rts
task50: mov @byte_ffe83e, r0h
mov #off_14aa0, er1
jsr switch_er1_r0h
bcs rts_14a9e
mov #task50o, r0h
jsr schedFrontTask
clr c
rts_14a9e: rts
off_14aa0: case 0 sub_14aba sub_14ac8 sub_14ada sub_14aee
case 4 sub_14b5e sub_14bec sub_14c7c sub_14cd6
case 8 sub_14c7c sub_14c8e sub_14c04 sub_14cfa
case 12 sub_14d52
sub_14aba: b tst pb3pin ; Pin PB3/-WUE3/-CS4 (Port B Input Data Register)
beq loc_14ac4
bsr sub_14d74:16
loc_14ac4: set c
rts
sub_14ac8: mov #1000, r1
mov #task50o, r0h
jsr schedBackTaskDelayed
bsr sub_14d74:16
set c
rts
sub_14ada: mov #task50o, r0h
jsr checkSchedTask
bcc loc_14aea
bsr sub_14d74:16
set c
bra rts_14aec
loc_14aea: clr c
rts_14aec: rts
sub_14aee: mov #byte_ffee0a, er6
btst #7, @er6 ; i2c00o
bne loc_14b4a
mov #0x0b, r5h
mov r5h, @(i2c03o:16,er6)
mov #0xd2, r5h
mov r5h, @(i2c05o:16,er6)
mov #0, r5h
mov r5h, @(i2c06o:16,er6)
mov #byte_ffe841, er5
mov er5, @(i2c08o:16,er6)
mov #5, r5h
mov r5h, @(i2c02o:16,er6)
mov #loc_14b56, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #3, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_14b4e
loc_14b4a: mov #0x1a, r0h
set c
loc_14b4e: bsr sub_14d74:16
clr c
rts
loc_14b56: mov #task50o, r0h
jsr schedBackTask
rts
sub_14b5e: btst #6, @byte_ffee0a
beq loc_14bde
mov @byte_ffee0e, r0h
cmp #0, r0h
bne loc_14bba
zero er0
zero er1
loc_14b7a: mov @(byte_ffe841,er0), r2l
mov @(byte_14be2,er1), r2h
and r2h, r2l
add #1, er1
mov @(byte_14be2,er1), r2h
or r2h, r2l
mov r2l, @(byte_ffe841,er0)
add #1, er0
add #1, er1
cmp #0x0a, r1l
blo loc_14b7a
bsr sub_14d74:16
bra loc_14bde
loc_14bba: mov @byte_ffe840, r0h
inc r0h
cmp #7, r0h
bls loc_14bd0
bset #0, @byte_ffe83f
bra loc_14bde
loc_14bd0: mov r0h, @byte_ffe840
mov #3, r0h
mov r0h, @byte_ffe83e
loc_14bde: set c
rts
byte_14be2: .byte 0x9f, 0x00, 0xbe, 0x01, 0xff, 0x00, 0xff, 0x00, 0xfd, 0x00
sub_14bec: jsr sub_0752a
bcs loc_14bf8
bsr sub_14d74:16
bra loc_14c00
loc_14bf8: mov #0x0a, r0h
mov r0h, @byte_ffe83e
loc_14c00: set c
rts
sub_14c04: mov #0, r0l
mov r0l, @byte_ffe840
mov #byte_ffee0a, er6
btst #7, @er6 ; i2c00o
bne loc_14c68
mov #0x0a, r5h
mov r5h, @(i2c03o:16,er6)
mov #0xd2, r5h
mov r5h, @(i2c05o:16,er6)
mov #0, r5h
mov r5h, @(i2c06o:16,er6)
mov #byte_ffe841, er5
mov er5, @(i2c08o:16,er6)
mov #5, r5h
mov r5h, @(i2c02o:16,er6)
mov #loc_14c74, er5
mov er5, @(i2c12o:16,er6)
mov #50, r5h
mov r5h, @(i2c20o:16,er6)
mov #3, r5h
mov r5h, @(i2c00o:16,er6)
mov #0, r5h
mov r5h, @(i2c01o:16,er6)
mov er6, er0
mov #0, r1h
mov r1h, @(i2c04o:16,er0)
jsr enqueueI2Ccmd
bra loc_14c6c
loc_14c68: mov #0x1a, r0h
set c
loc_14c6c: bsr sub_14d74:16
clr c
rts
loc_14c74: mov #task50o, r0h
jsr schedBackTask
rts
sub_14c7c: mov #task50o, r0h
mov #80, r1
jsr schedBackTaskDelayed
bsr sub_14d74:16
clr c
rts
sub_14c8e: mov #task50o, r0h
jsr checkSchedTask
bcc loc_14cd2
jsr sub_07520
bcs loc_14cb0
btst #5, @byte_ffe841
bne loc_14cca
bset #5, @byte_ffe841
bra loc_14cc2
loc_14cb0: btst #5, @byte_ffe841
beq loc_14cca
bclr #5, @byte_ffe841
loc_14cc2: bsr sub_14d74:16
set c
bra rts_14cd4
loc_14cca: mov #8, r0h
mov r0h, @byte_ffe83e
loc_14cd2: clr c
rts_14cd4: rts
sub_14cd6: mov #task50o, r0h
jsr checkSchedTask
bcc loc_14cf6
jsr sub_07520
bist #5, @byte_ffe841
mov #0x0a, r0h
mov r0h, @byte_ffe83e
set c
bra rts_14cf8
loc_14cf6: clr c
rts_14cf8: rts
sub_14cfa: btst #6, @byte_ffee0a
beq loc_14d4e
mov @byte_ffee0e, r0h
cmp #0, r0h
beq loc_14d3c
mov @byte_ffe840, r0h
inc r0h
cmp #7, r0h
bhi loc_14d2a
mov r0h, @byte_ffe840
mov #0x0a, r0h
mov r0h, @byte_ffe83e
bra loc_14d4e
loc_14d2a: bset #0, @byte_ffe83f
mov #8, r0h
mov r0h, @byte_ffe83e
bra loc_14d4a
loc_14d3c: bsr sub_14d74:16
mov #task50o, r0h
mov #10, r1
jsr schedBackTaskDelayed
loc_14d4a: clr c
bra rts_14d50
loc_14d4e: set c
rts_14d50: rts
sub_14d52: mov #task50o, r0h
jsr checkSchedTask
bcc loc_14d70
btst #5, @byte_ffe841
beq loc_14d68
b clr p46dr ; Pin P46/PWX0 (Port 4 Data Register)
loc_14d68: mov #8, r0h
mov r0h, @byte_ffe83e
loc_14d70: clr c
rts
sub_14d74: mov @byte_ffe83e, r0h
inc r0h
mov r0h, @byte_ffe83e
rts
sub_14d84: mov #task50o, r0h
jsr schedBackTask
rts
off_14d8c: .byte 1, 3
.long NULL
.byte 2, 3
.long NULL
.byte 3, 3
.long NULL
.byte 32, 0
.long NULL
.byte 33, 0
.long NULL
.byte 33, 0
.long NULL
.byte 4, 3
.long NULL
.byte 5, 3
.long NULL
.byte 6, 3
.long NULL
.byte 34, 0
.long NULL
.byte 35, 0
.long sub_0ecce
off_14dce:
sub_14dce: bclr #0, @byte_ffe1f1
bclr #1, @byte_ffe1f1
sub_14dde: btst #3, @byte_ffe1f1
beq rts_14df0
bclr #2, @byte_ffe1f1
rts_14df0: rts
task51: mov @byte_ffe1fc, r0l
beq loc_14e06
btst #2, @byte_ffe1f1
bne loc_14e06
bsr sub_14e10
loc_14e06: mov #task51o, r0h
jsr schedFrontTask
clr c
rts
sub_14e10: mov @byte_ffe1fb, r0l
extu r0
extu er0
mov @(byte_ffe1f2,er0), r1l
mov #off_14d8c, er0
loc_14e28: mov @er0, r1h
cmp r1h, r1l
bne loc_14e70
mov @(1,er0), r2l
btst #0, r2l
beq loc_14e4e
btst #0, @byte_ffe1f1
beq loc_14e7e
b set str2.smi_evt ; SMI Event Pending (LPC Status Register 2 (0x66))
b set sirqcr0.smie2 ; Host SMI Interrupt Enable 2 (LPC SERIRQ Control Register 0)
bra loc_14e5e
loc_14e4e: btst #1, @byte_ffe1f1
beq loc_14e7e
mov #0x75, r0h
jsr sub_10cc0
loc_14e5e: bset #2, @byte_ffe1f1
bset #3, @byte_ffe1f1
bra loc_14e7e
loc_14e70: add #6, er0
cmp #off_14dce, er0
blo loc_14e28
loc_14e7e: clr c
rts
sub_14e82: b set sirqcr0.iedir ; Interrupt Enable Direct Mode (LPC SERIRQ Control Register 0)
rts
sub_14e8a: stm er0-er2, @-sp
mov #off_14d8c, er1
loc_14e94: mov @er1, r0h
cmp r0h, r0l
beq loc_14eaa
add #6, er1
cmp #off_14dce, er1
blo loc_14e94
bra loc_14f1c
loc_14eaa: mov @(1,er1), r0h
btst #0, r0h
beq loc_14ebc
btst #0, @byte_ffe1f1
bne loc_14ec6
loc_14ebc: btst #1, @byte_ffe1f1
beq loc_14f1c
loc_14ec6: mov @byte_ffe1fc, r1l
beq loc_14ed6
cmp #8, r1l
bhs loc_14f20
bsr sub_14f28
bcs loc_14f20
loc_14ed6: inc r1l
mov r1l, @byte_ffe1fc
mov @byte_ffe1fa, r1l
extu r1
extu er1
mov r0l, @(byte_ffe1f2,er1)
mov r1l, r0l
shll #2, r0l
extu r0
extu er0
_mov er2, long_ffe231,er0
inc r1l
cmp #8, r1l
blo loc_14f0a
mov #0, r1l
loc_14f0a: mov r1l, @byte_ffe1fa
jsr sub_01276
bcs loc_14f1c
mov #task51o, r0h
jsr schedBackTask
loc_14f1c: clr c
bra loc_14f22
loc_14f20: set c
loc_14f22: ldm @sp+, er0-er2
rts
sub_14f28: stm er0-er3, @-sp
mov @byte_ffe1fb, r3l
shll #2, r3l
extu r3
extu er3
loc_14f38: mov @(long_ffe231,er3), er0
cmp er0, er2
beq loc_14f5c
dec r1l
beq loc_14f58
add #4, er3
cmp #0x20, r3l
blo loc_14f38
mov #0, r3l
bra loc_14f38
loc_14f58: clr c
bra loc_14f5e
loc_14f5c: set c
loc_14f5e: ldm @sp+, er0-er3
rts
sub_14f64: btst #0, @byte_ffe1f1
bne rts_14f7a
bsr sub_14e82:16
bset #0, @byte_ffe1f1
rts_14f7a: rts
sub_14f7c: bclr #0, @byte_ffe1f1
rts
sub_14f86: btst #1, @byte_ffe1f1
bne rts_14f98
bset #1, @byte_ffe1f1
rts_14f98: rts
sub_14f9a: bclr #1, @byte_ffe1f1
rts
btst #0, @byte_ffe1f1
rts
sub_14fae: btst #1, @byte_ffe1f1
rts
sub_14fb8: mov @byte_ffe1fc, r0l
beq loc_15002
b clr sirqcr0.smie2 ; Host SMI Interrupt Enable 2 (LPC SERIRQ Control Register 0)
b clr str2.smi_evt ; SMI Event Pending (LPC Status Register 2 (0x66))
mov @byte_ffe1fb, r3l
shll #2, r3l
extu r3
extu er3
mov @(long_ffe231,er3), er4
mov @er4+, r3l
mov r3l, r0l
mov r3l, r3h
loc_14fe8: mov @er4+, r3l
mov r3l, @er2
add #1, er2
dec r3h
bne loc_14fe8
bclr #3, @byte_ffe1f1
mov #0, r0h
bra rts_15006
loc_15002: mov #1, r0l
mov #0x12, r0h
rts_15006: rts
sub_15008: mov @byte_ffe1fb, r3l
extu r3
extu er3
mov @(byte_ffe1f2,er3), r1l
inc r3l
cmp #8, r3l
blo loc_15022
mov #0, r3l
loc_15022: mov r3l, @byte_ffe1fb
mov @byte_ffe1fc, r3l
dec r3l
mov r3l, @byte_ffe1fc
beq loc_15046
stm er0-er2, @-sp
mov #task51o, r0h
jsr schedBackTask
ldm @sp+, er0-er2
loc_15046: mov @er2, r0l
bsr sub_15056
bclr #2, @byte_ffe1f1
mov #0, r0h
rts
sub_15056: mov #off_14d8c, er0
loc_1505c: mov @er0, r1h
cmp r1h, r1l
bne loc_1506e
mov @(2,er0), er2
beq loc_1506e
jsr @er2
bra rts_1507c
loc_1506e: add #6, er0
cmp #off_14dce, er0
blo loc_1505c
rts_1507c: rts
sub_1507e: mov @er2+, r0l
dec r1h
cmp #0x40, r0l
bne loc_15094
mov #byte_ffe1fd, er3
bsr sub_150ae
jsr sub_1323e
bra loc_150a6
loc_15094: cmp #0x41, r0l
bne loc_150aa
mov #long_ffe209, er3
bsr sub_150ae
bsr sub_150be
jsr sub_1320e
loc_150a6: mov #0, r0h
bra rts_150ac
loc_150aa: mov #0x12, r0h
rts_150ac: rts
sub_150ae: mov @er2+, r0l
mov r0l, @er3
add #1, er3
dec r1h
bne sub_150ae
rts
sub_150be: mov #long_ffe209, er3
mov #long_ffe212, er4
loc_150ca: mov @er3, r0h
mov r0h, @er4
jsr sub_12f7e
mov @(9,er0), r0l
mov r0l, @(1,er4)
mov @(2,er3), r0h
mov r0h, @(6,er4)
mov r0h, @(7,er4)
mov r0, r1
sub r1h, r1l
extu r1
mov #3, r0h
divxu r0h, r1
sub r1l, r0l
mov r0l, @(2,er4)
mov r0l, @(3,er4)
sub r1l, r0l
mov r0l, @(4,er4)
mov r0l, @(5,er4)
mov @(1,er3), r0l
mov r0l, @(9,er4)
add #0x0a, er4
add #3, er3
cmp #long_ffe212, er3
blo loc_150ca
rts
taskSeq0Init: .long sub_01542 ; 00
.long setWaitTime1 ; 04
.long initPorts1 ; 08
.long sub_02de2 ; 0c
.long sub_04c4e ; 10
.long sub_0570c ; 14
.long enableTMR_01XY ; 18
.long sub_06fe2 ; 1c
.long sub_0a5d8 ; 20
.long task27 ; 24
.long sub_0b7c0 ; 28
.long sub_0b83e ; 2c
.long init_adc ; 30
.long sub_0d5ce ; 34
.long sub_0d868 ; 38
.long rts_0de98 ; 3c
.long rts_0e622 ; 40
.long init_i2c ; 44
.long sub_0f9ca ; 48
.long init_dac ; 4c
.long getFlashStatus ; 50
taskSeq1InitA: .long initPorts2 ; 00
.long sub_02e72 ; 04
.long enableLPC1 ; 08
.long sub_0490c ; 0c
.long enableTMR_01 ; 10
.long sub_067b0 ; 14
.long jSetupTMR_XY ; 18
.long sub_072ea ; 1c
.long sub_075c6 ; 20
.long sub_07802 ; 24
.long sub_07a46 ; 28
.long sub_07f58 ; 2c
.long sub_0801c ; 30
.long sub_090ee ; 34
.long sub_0945a ; 38
.long sub_09574 ; 3c
.long sub_09580 ; 40
.long sub_0a008 ; 44
.long sub_0a422 ; 48
.long sub_0d5e6 ; 4c
.long sub_0de9a ; 50
.long sub_0e624 ; 54
.long sub_0f98c ; 58
.long sub_0fbd0 ; 5c
.long enableLPC2 ; 60
.long enableLPC3 ; 64
.long sub_116c2 ; 68
.long sub_126ba ; 6c
.long sub_12a30 ; 70
.long initFan ; 74
.long sub_1455e ; 78
.long sub_1483e ; 7c
.long setupP46DDRout ; 80
.long sub_14dce ; 84
taskSeq1:
task00o = . - taskSeq1
.long task00 ; 00
task01o = . - taskSeq1
.long NULL ; 04
task02o = . - taskSeq1
.long task02_1_2 ; 08
task03o = . - taskSeq1
.long task03 ; 0c
task04o = . - taskSeq1
.long task04 ; 10
task05o = . - taskSeq1
.long task05 ; 14
task06o = . - taskSeq1
.long task06_1 ; 18
task07o = . - taskSeq1
.long task07 ; 1c
task08o = . - taskSeq1
.long task08 ; 20
task09o = . - taskSeq1
.long task09 ; 24
task10o = . - taskSeq1
.long task10 ; 28
task11o = . - taskSeq1
.long task11 ; 2c
task12o = . - taskSeq1
.long task12 ; 30
task13o = . - taskSeq1
.long task13 ; 34
task14o = . - taskSeq1
.long task14 ; 38
task15o = . - taskSeq1
.long task15 ; 3c
task16o = . - taskSeq1
.long task16 ; 40
task17o = . - taskSeq1
.long task17 ; 44
task18o = . - taskSeq1
.long task18 ; 48
task19o = . - taskSeq1
.long task19 ; 4c
task20o = . - taskSeq1
.long task20 ; 50
task21o = . - taskSeq1
.long task21 ; 54
task22o = . - taskSeq1
.long task22 ; 58
task23o = . - taskSeq1
.long task23 ; 5c
task24o = . - taskSeq1
.long task24 ; 60
task25o = . - taskSeq1
.long task25 ; 64
task26o = . - taskSeq1
.long task26 ; 68
task27o = . - taskSeq1
.long task27 ; 6c
task28o = . - taskSeq1
.long task28 ; 70
task29o = . - taskSeq1
.long task29 ; 74
task30o = . - taskSeq1
.long task30 ; 78
task31o = . - taskSeq1
.long task31_1_2 ; 7c
task32o = . - taskSeq1
.long task32 ; 80
task33o = . - taskSeq1
.long task33_1 ; 84
task34o = . - taskSeq1
.long task34_1 ; 88
do_i2c_0o = . - taskSeq1
.long do_i2c_0 ; 8c
do_i2c_1o = . - taskSeq1
.long do_i2c_1 ; 90
task37o = . - taskSeq1
.long task37 ; 94
task38o = . - taskSeq1
.long task38 ; 98
task39o = . - taskSeq1
.long task39_1 ; 9c
task40o = . - taskSeq1
.long task40 ; a0
task41o = . - taskSeq1
.long task41 ; a4
task42o = . - taskSeq1
.long task42 ; a8
task43o = . - taskSeq1
.long task43 ; ac
task44o = . - taskSeq1
.long task44 ; b0
.long NULL ; b4
task46o = . - taskSeq1
.long task46 ; b8
fanTasko = . - taskSeq1
.long fanTask ; bc
task48o = . - taskSeq1
.long NULL ; c0
task49o = . - taskSeq1
.long task49 ; c4
task50o = . - taskSeq1
.long task50 ; c8
task51o = . - taskSeq1
.long task51 ; cc
taskSeq2Init: .long sub_01dac ; 00
.long sub_0328c ; 04
.long sub_03b76 ; 08
.long rts_04abc ; 0c
.long sub_04cb0 ; 10
.long sub_05760 ; 14
.long sub_062b6 ; 18
.long sub_06a1c ; 1c
.long sub_0704a ; 20
.long sub_07700 ; 24
.long sub_07a82 ; 28
.long sub_07fbe ; 2c
.long rts_0885c ; 30
.long sub_09678 ; 34
.long rts_0a05e ; 38
.long rts_0a444 ; 3c
.long rts_0a66a ; 40
.long sub_0b90c ; 44
.long rts_0d44e ; 48
.long sub_0d8c4 ; 4c
.long sub_0e0fa ; 50
.long rts_0ea16 ; 54
.long rts_0ed70 ; 58
.long sub_0f9ca ; 5c
.long sub_0fc06 ; 60
.long sub_10360 ; 64
.long sub_11192 ; 68
.long sub_13f00 ; 6c
.long sub_14574 ; 70
.long sub_14a7e ; 74
taskSeq2: .long task00 ; 00
.long NULL ; 04
.long task02_1_2 ; 08
.long NULL ; 0c
.long NULL ; 10
.long NULL ; 14
.long task06_2 ; 18
.long NULL ; 1c
.long task08 ; 20
.long task09 ; 24
.long task10 ; 28
.long task11 ; 2c
.long task12_2 ; 30
.long task13 ; 34
.long NULL ; 38
.long NULL ; 3c
.long NULL ; 40
.long NULL ; 44
.long NULL ; 48
.long NULL ; 4c
.long NULL ; 50
.long NULL ; 54
.long NULL ; 58
.long NULL ; 5c
.long NULL ; 60
.long NULL ; 64
.long task26 ; 68
.long task27 ; 6c
.long task28 ; 70
.long task29 ; 74
.long task30 ; 78
.long task31_1_2 ; 7c
.long task32 ; 80
.long task33_2_3 ; 84
.long task34_2_3 ; 88
.long do_i2c_0 ; 8c
.long do_i2c_1 ; 90
.long task37 ; 94
.long NULL ; 98
.long task39_2 ; 9c
.long NULL ; a0
.long NULL ; a4
.long NULL ; a8
.long NULL ; ac
.long task44 ; b0
.long NULL ; b4
.long NULL ; b8
.long NULL ; bc
.long task48_2 ; c0
.long NULL ; c4
.long NULL ; c8
.long NULL ; cc
taskSeq1InitB: .long sub_01bee ; 00
.long sub_032b6 ; 04
.long sub_03bae ; 08
.long sub_04abe ; 0c
.long sub_04c9c ; 10
.long sub_05768 ; 14
.long sub_0634e ; 18
.long sub_06a38 ; 1c
.long sub_07306 ; 20
.long sub_07726 ; 24
.long sub_0885e ; 28
.long sub_090fe ; 2c
.long sub_09484 ; 30
.long rts_0957e ; 34
.long sub_0968c ; 38
.long sub_0a032 ; 3c
.long sub_0a442 ; 40
.long sub_0a612 ; 44
.long sub_0b8f8 ; 48
.long rts_0d44e ; 4c
.long sub_0d8c4 ; 50
.long sub_0e102 ; 54
.long rts_0ea16 ; 58
.long rts_0ed70 ; 5c
.long rts_0f9c8 ; 60
.long sub_0fbe4 ; 64
.long sub_1031c ; 68
.long sub_11196 ; 6c
.long sub_12a7a ; 70
.long sub_1397a ; 74
.long sub_146f6 ; 78
.long sub_1483e ; 7c
.long setupP46DDRout ; 80
.long sub_14dde ; 84
taskSeq3Init: .long sub_01730 ; 00
.long sub_01d40 ; 04
.long sub_0328c ; 08
.long sub_03b76 ; 0c
.long rts_04abc ; 10
.long sub_06368 ; 14
.long sub_067dc ; 18
.long sub_06a3e ; 1c
.long sub_0731a ; 20
.long rts_07738 ; 24
.long sub_07a82 ; 28
.long sub_07fc4 ; 2c
.long sub_096d8 ; 30
.long sub_0a66c ; 34
.long rts_0d44e ; 38
.long sub_0d5de ; 3c
.long sub_0d8c4 ; 40
.long rts_0e12c ; 44
.long rts_0ea16 ; 48
.long rts_0ed70 ; 4c
.long sub_0fc06 ; 50
.long sub_1039e ; 54
.long sub_11192 ; 58
.long sub_13f00 ; 5c
.long sub_14a7e ; 60
taskSeq3: .long task00 ; 00
.long task01 ; 04
.long task02_3 ; 08
.long NULL ; 0c
.long NULL ; 10
.long NULL ; 14
.long NULL ; 18
.long NULL ; 1c
.long NULL ; 20
.long task09 ; 24
.long task10 ; 28
.long task11 ; 2c
.long NULL ; 30
.long task13 ; 34
.long NULL ; 38
.long NULL ; 3c
.long NULL ; 40
.long NULL ; 44
.long NULL ; 48
.long NULL ; 4c
.long NULL ; 50
.long NULL ; 54
.long NULL ; 58
.long NULL ; 5c
.long NULL ; 60
.long NULL ; 64
.long task26 ; 68
.long task27 ; 6c
.long task28 ; 70
.long task29 ; 74
.long task30 ; 78
.long task31_3 ; 7c
.long task32 ; 80
.long task33_2_3 ; 84
.long task34_2_3 ; 88
.long do_i2c_0 ; 8c
.long do_i2c_1 ; 90
.long NULL ; 94
.long NULL ; 98
.long NULL ; 9c
.long NULL ; a0
.long NULL ; a4
.long NULL ; a8
.long NULL ; ac
.long NULL ; b0
.long NULL ; b4
.long NULL ; b8
.long NULL ; bc
.long task48_3 ; c0
.long NULL ; c4
.long NULL ; c8
.long NULL ; cc
taskSeqSleep: .long sub_016b6 ; before & after sleep
taskSeqsEnd:
.org ROMend - 2, -1
chksum3: .word checksum3 ; checksum #3 (0x001000..0x01fffd)
.section .bss ; RAM
exec = . + 0x0380 ; 0xffe400
byte_ffe080: .space 2 ; # of build id (e.g. .ascii "28")
byte_ffe082: .space 1
byte_ffe083: .space 1
byte_ffe084: .space 1
byte_ffe085: .space 1
byte_ffe086: .space 1
byte_ffe087: .space 1
.align 1
word_ffe088: .space 2
.space 0x60
long_ffe0ea: .space 0x10
long_ffe0fa: .space 0x10
byte_ffe10a: .space 1
byte_ffe10b: .space 5
byte_ffe110: .space 1
byte_ffe111: .space 1
byte_ffe112: .space 1
byte_ffe113: .space 1
byte_ffe114: .space 8
byte_ffe11c: .space 8
long_ffe124: .space 8
long_ffe12c: .space 0x60
byte_ffe18c: .space 8
byte_ffe194: .space 0x17
byte_ffe1ab: .space 0x17
byte_ffe1c2: .space 0x17
byte_ffe1d9: .space 0x0c
byte_ffe1e5: .space 0x0c
byte_ffe1f1: .space 1
byte_ffe1f2: .space 8
byte_ffe1fa: .space 1
byte_ffe1fb: .space 1
byte_ffe1fc: .space 1
byte_ffe1fd: .space 1
byte_ffe1fe: .space 0x0b
long_ffe209: .space 9
long_ffe212: .space 0x1e
byte_ffe230: .space 1
long_ffe231: .space 4
.align 1
stackTop: .space 0x11c - 0x1c & type1R
stack:
taskSeqOffset: .space 1
P1DDRcopy: .space 1
P2DDRcopy: .space 1
P3DDRcopy: .space 1
P4DDRcopy: .space 1
P5DDRcopy: .space 1
P6DDRcopy: .space 1
P7DDRcopy: .space 1
P8DDRcopy: .space 1
P9DDRcopy: .space 1
PADDRcopy: .space 1
PBDDRcopy: .space 1
PCDDRcopy: .space 1
PDDDRcopy: .space 1
PEDDRcopy: .space 1
PFDDRcopy: .space 1
taskQueueIdx: .space 1
taskQueue: .space 0x40
byte_ffe3a3: .space 1
byte_ffe3a4: .space 0x40
byte_ffe3e4: .space 1
byte_ffe3e5: .space 0x10
byte_ffe3f5: .space 1
byte_ffe3f6: .space 8
byte_ffe3fe: .space 1
byte_ffe3ff: .space 1
byte_ffe400: .space 1
byte_ffe401: .space 1
curScanLine: .space 1
byte_ffe403: .space 1
byte_ffe404: .space 4
byte_ffe408: .space 1
byte_ffe409: .space 1
byte_ffe40a: .space 1
byte_ffe40b: .space 1
byte_ffe40c: .space 1
byte_ffe40d: .space 0x11
byte_ffe41e: .space 1
byte_ffe41f: .space 1
byte_ffe420: .space 1
byte_ffe421: .space 1
byte_ffe422: .space 1
byte_ffe423: .space 1
byte_ffe424: .space 1
typematic: .space 1
byte_ffe426: .space 1
byte_ffe427: .space 0x28
byte_ffe44f: .space 0x28
byte_ffe477: .space 1
byte_ffe478: .space 1
byte_ffe479: .space 1
byte_ffe47a: .space 1
byte_ffe47b: .space 0x12
byte_ffe48d: .space 1
byte_ffe48e: .space 2
byte_ffe490: .space 1
byte_ffe491: .space 8
byte_ffe499: .space 1
byte_ffe49a: .space 1
byte_ffe49b: .space 0x0f
byte_ffe4aa: .space 1
byte_ffe4ab: .space 1
byte_ffe4ac: .space 1
byte_ffe4ad: .space 1
byte_ffe4ae: .space 1
byte_ffe4af: .space 1
byte_ffe4b0: .space 1
byte_ffe4b1: .space 1
byte_ffe4b2: .space 1
byte_ffe4b3: .space 1
byte_ffe4b4: .space 1
byte_ffe4b5: .space 1
byte_ffe4b6: .space 1
byte_ffe4b7: .space 1
byte_ffe4b8: .space 2
byte_ffe4ba: .space 1
byte_ffe4bb: .space 1
byte_ffe4bc: .space 1
byte_ffe4bd: .space 1
byte_ffe4be: .space 1
byte_ffe4bf: .space 1
byte_ffe4c0: .space 1
byte_ffe4c1: .space 1
byte_ffe4c2: .space 1
byte_ffe4c3: .space 1
byte_ffe4c4: .space 1
byte_ffe4c5: .space 1
byte_ffe4c6: .space 1
byte_ffe4c7: .space 1
byte_ffe4c8: .space 1
byte_ffe4c9: .space 1
byte_ffe4ca: .space 1
byte_ffe4cb: .space 1
byte_ffe4cc: .space 1
byte_ffe4cd: .space 1
byte_ffe4ce: .space 1
byte_ffe4cf: .space 1
byte_ffe4d0: .space 1
byte_ffe4d1: .space 1
byte_ffe4d2: .space 1
byte_ffe4d3: .space 1
byte_ffe4d4: .space 1
byte_ffe4d5: .space 1
byte_ffe4d6: .space 1
byte_ffe4d7: .space 1
byte_ffe4d8: .space 1
byte_ffe4d9: .space 1
byte_ffe4da: .space 1
byte_ffe4db: .space 1
byte_ffe4dc: .space 1
byte_ffe4dd: .space 1
byte_ffe4de: .space 1
byte_ffe4df: .space 1
byte_ffe4e0: .space 1
byte_ffe4e1: .space 1
byte_ffe4e2: .space 1
byte_ffe4e3: .space 1
byte_ffe4e4: .space 1
byte_ffe4e5: .space 0x30
byte_ffe515: .space 2
byte_ffe517: .space 1
byte_ffe518: .space 1
byte_ffe519: .space 1
byte_ffe51a: .space 1
byte_ffe51b: .space 1
byte_ffe51c: .space 1
byte_ffe51d: .space 1
byte_ffe51e: .space 1
byte_ffe51f: .space 1
byte_ffe520: .space 1
byte_ffe521:
byte_ffe3d6: .space 1
byte_ffe522:
byte_ffe3d7: .space 1
byte_ffe523: .space 1
byte_ffe524: .space 1
byte_ffe525: .space 1
byte_ffe526: .space 1
byte_ffe527: .space 1
byte_ffe528: .space 1
byte_ffe529: .space 1
byte_ffe52a:
.space 1
byte_ffe52b: .space 1
byte_ffe52c: .space 1
byte_ffe52d: .space 1
byte_ffe52e: .space 1
byte_ffe52f: .space 1
byte_ffe530: .space 1
byte_ffe531: .space 1
byte_ffe532: .space 1
byte_ffe533: .space 1
byte_ffe534: .space 0x20
byte_ffe554: .space 1
byte_ffe555: .space 1
byte_ffe556: .space 1
byte_ffe557: .space 1
byte_ffe558: .space 1
byte_ffe559: .space 1
byte_ffe55a: .space 1
byte_ffe55b: .space 1
byte_ffe55c: .space 1
byte_ffe55d: .space 1
byte_ffe55e: .space 1
dataTab: .space 1 ; 0x00
byte_ffe560: .space 1 ; 0x01
.space 1 ; 0x02
byte_ffe562: .space 1 ; 0x03
byte_ffe563: .space 1 ; 0x04
byte_ffe564: .space 1 ; 0x05
byte_ffe565: .space 1 ; 0x06
byte_ffe566: .space 1 ; 0x07
byte_ffe567: .space 1 ; 0x08
byte_ffe568: .space 1 ; 0x09
.space 1 ; 0x0a
byte_ffe56a: .space 1 ; 0x0b
.space 1 ; 0x0c
.space 1 ; 0x0d
byte_ffe56d: .space 1 ; 0x0e
byte_ffe56e: .space 1 ; 0x0f
byte_ffe56f: .space 0x10 ; 0x10
byte_ffe57f: .space 1 ; 0x20
byte_ffe580: .space 1 ; 0x21
byte_ffe581: .space 1 ; 0x22
byte_ffe582: .space 1 ; 0x23
byte_ffe583: .space 1 ; 0x24
byte_ffe584: .space 1 ; 0x25
.space 1 ; 0x26
byte_ffe586: .space 1 ; 0x27
byte_ffe587: .space 1 ; 0x28
byte_ffe588: .space 1 ; 0x29
byte_ffe589: .space 1 ; 0x2a
.space 1 ; 0x2b
byte_ffe58b: .space 1 ; 0x2c
.space 1 ; 0x2d
byte_ffe58d: .space 1 ; 0x2e
fanCtrl: .space 1 ; 0x2f fan ctrl/status
byte_ffe58f: .space 1 ; 0x30 volume
byte_ffe590: .space 1 ; 0x31 LCD brightness
byte_ffe591: .space 1 ; 0x32
byte_ffe592: .space 1 ; 0x33
byte_ffe593: .space 1 ; 0x34
byte_ffe594: .space 1 ; 0x35
byte_ffe595: .space 1 ; 0x36
byte_ffe596: .space 1 ; 0x37
byte_ffe597: .space 1 ; 0x38
byte_ffe598: .space 1 ; 0x39
byte_ffe599: .space 1 ; 0x3a
byte_ffe59a: .space 1 ; 0x3b 7 !p74pin, 6 pd5pin, 5 pd6pin, 4 pd2pin, 3 ?, 2 pc4pin, 1 p13dr, 0 !pc5pin
byte_ffe59b: .space 1 ; 0x3c
byte_ffe59c: .space 1 ; 0x3d
byte_ffe59d: .space 1 ; 0x3e
.space 1 ; 0x3f
.space 1 ; 0x40
.space 1 ; 0x41
.space 1 ; 0x42
.space 1 ; 0x43
.space 1 ; 0x44
.space 1 ; 0x45
byte_ffe5a5: .space 1 ; 0x46
byte_ffe5a6: .space 1 ; 0x47
byte_ffe5a7: .space 1 ; 0x48
byte_ffe5a8: .space 1 ; 0x49
byte_ffe5a9: .space 1 ; 0x4a
byte_ffe5aa: .space 1 ; 0x4b
byte_ffe5ab: .space 1 ; 0x4c
byte_ffe5ac: .space 1 ; 0x4d
byte_ffe5ad: .space 1 ; 0x4e
byte_ffe5ae: .space 1 ; 0x4f
byte_ffe5af: .space 1 ; 0x50
byte_ffe5b0: .space 1 ; 0x51
byte_ffe5b1: .space 1 ; 0x52
byte_ffe5b2: .space 1 ; 0x53
yearL: .space 1 ; 0x54
yearH: .space 1 ; 0x55
month: .space 1 ; 0x56
day: .space 1 ; 0x57
hour: .space 1 ; 0x58
minute: .space 1 ; 0x59
second: .space 1 ; 0x5a
.space 1
.space 1
.space 1
.space 1
.space 1
.space 0x10 ; 0x60
.space 1 ; 0x70
.space 1
.space 1
.space 1
byte_ffe5d3: .space 1 ; 0x74
byte_ffe5d4: .space 1 ; 0x75
byte_ffe5d5: .space 1 ; 0x76
byte_ffe5d6: .space 1 ; 0x77
byte_ffe5d7: .space 1 ; 0x78 temperature
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
byte_ffe5df: .space 1 ; 0x80
byte_ffe5e0: .space 1 ; 0x81
.space 1 ; 0x82
.space 1 ; 0x83
.space 1 ; 0x84 fan speed LSB
byte_ffe5e4: .space 1 ; 0x85 fan speed MSB
byte_ffe5e5: .space 1 ; 0x86
byte_ffe5e6: .space 1 ; 0x87
byte_ffe5e7: .space 1 ; 0x88
byte_ffe5e8: .space 1 ; 0x89
.space 1 ; 0x8a
.space 1 ; 0x8b
byte_ffe5eb: .space 1 ; 0x8c
.space 1 ; 0x8d
byte_ffe5ed: .space 1 ; 0x8e
.space 1 ; 0x8f
byte_ffe5ef: .space 1 ; 0x90
.space 1 ; 0x91
byte_ffe5f1: .space 1 ; 0x92 I/O register address MSB
byte_ffe5f2: .space 1 ; 0x93 I/O register address LSB
byte_ffe5f3: .space 1 ; 0x94 I/O register data (PIN register)
byte_ffe5f4: .space 1 ; 0x95 I/O register data (copy of DDR)
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 0x10 ; 0xa0
.space 0x10 ; 0xb0
byte_ffe61f: .space 0x08 ; 0xc0 temperature
tabSel: .space 0x08 ; 0xc8 0x, 1x, 2x, F0..F1
byte_ffe62f: .space 0x10 ; 0xd0
byte_ffe63f: .space 1
byte_ffe640: .space 1
byte_ffe641: .space 1
writeOffset: .space 1
dataCtr: .space 1
byte_ffe644: .space 1
cntr20: .space 1
byte0xEE: .space 1
byte0xD0: .space 1 ; flash status
byte_ffe648: .space 1
byte_ffe649: .space 1
byte_ffe64a: .space 1
byte_ffe64b: .space 1
byte_ffe64c: .space 1
byte_ffe64d: .space 20
.space 6
num_ffe64d = . - byte_ffe64d
byte_ffe667: .space 1
byte_ffe668: .space 1
byte_ffe669: .space 1
byte0xB0: .space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
byte_ffe67a: .space 1
byte_ffe67b: .space 1
.space 3
byte_ffe67f: .space 1
byte_ffe680: .space 1
long_ffe681: .space 8
long_ffe689: .space 8
byte_ffe691: .space 1
long_ffe692: .space 6
temperState: .space 1
temperIdx: .space 1 ; 0..f
byte_ffe69a: .space 1
byte_ffe69b: .space 1
byte_ffe69c: .space 2
byte_ffe69e: .space 2
byte_ffe6a0: .space 0x1c
.space 0x20
byte_ffe6dc: .space 1
long_ffe6dd: .space 0x88
.space 0x88
byte_ffe7ed: .space 1
byte_ffe7ee: .space 1
tabSelector: .space 1 ; 0..1
byte_ffe7f0: .space 1
long_ffe7f1: .space 0x10
long_ffe801: .space 0x10
fanState: .space 1
byte_ffe812: .space 1
speedLevel: .space 1
manLevel: .space 1
autoLevel: .space 1
byte_ffe816: .space 1
byte_ffe817: .space 1
byte_ffe818: .space 1
byte_ffe819: .space 1
byte_ffe81a: .space 1
byte_ffe81b: .space 1
byte_ffe81c: .space 1
byte_ffe81d: .space 1
byte_ffe81e: .space 1
byte_ffe81f: .space 1
byte_ffe820: .space 1
fanSpeedProfileA:
.space 1
fanSpeedProfileB:
.space 1
long_ffe823: .space 0x10
byte_ffe833: .space 1
byte_ffe834: .space 1
byte_ffe835: .space 1
long_ffe836: .space 4
.space 4
byte_ffe83e: .space 1
byte_ffe83f: .space 1
byte_ffe840: .space 1
byte_ffe841: .space 1
.space 8
.align 1
hook: .space 6 ; initially contains 0x5470 (rts)
backTaskReadyBitVec:
.space 8
frontTaskReadyBitVec:
.space 8
taskEnabledBitVec:
.space 8
long_ffe868: .space 4
long_ffe86c: .space 4
word_ffe870: .space 2
word_ffe872: .space 2
.space 0x80
tick: .space 2
tock: .space 2
long_ffe8f8: .space 4
long_ffe8fc: .space 4
ramFreeLevel: .space 4
long_ffe904: .space 4
long_ffe908: .space 4
long_ffe90c: .space 4
long_ffe910: .space 4
word_ffe914: .space 2
curScanRead: .space 0x10
.space 2
word_ffe928: .space 2
prePrevScanRead:.space 0x10
byte_ffe93a: .space 2
prevScanRead: .space 0x10
byte_ffe94c: .space 2
typematicDelay: .space 2
typematicIntvl: .space 2
word_ffe952: .space 2
word_ffe954: .space 2
word_ffe956: .space 4
long_ffe95a: .space 4
long_ffe95e: .space 4
long_ffe962: .space 0x0c
byte_ffe96e: .space 1
byte_ffe96f: .space 1
word_ffe970: .space 2
word_ffe972: .space 2
long_ffe974: .space 4
long_ffe978: .space 4
long_ffe97c: .space 4
long_ffe980: .space 4
long_ffe984: .space 4
long_ffe988: .space 4
long_ffe98c: .space 6
long_ffe992: .space 4
word_ffe996: .space 2
word_ffe998: .space 2
word_ffe99a: .space 2
word_ffe99c: .space 2
word_ffe99e: .space 2
word_ffe9a0: .space 2
word_ffe9a2: .space 2
long_ffe9a4: .space 4
long_ffe9a8: .space 0x10
word_ffe9b8: .space 1
word_ffe9b9: .space 1
word_ffe9ba: .space 2
word_ffe9bc: .space 2
word_ffe9be: .space 2
internalDateH: .space 2
internalDateL: .space 2
word_ffe9c4: .space 2
word_ffe9c6: .space 2
byte_ffe9c8: .space 1
byte_ffe9c9: .space 1
byte_ffe9ca: .space 1
byte_ffe9cb: .space 1
long_ffe9cc: .space 4
long_ffe9d0: .space 4
long_ffe9d4: .space 4
long_ffe9d8: .space 4
long_ffe9dc: .space 4
long_ffe9e0: .space 4
word_ffe9e4: .space 2
word_ffe9e6: .space 2
word_ffe9e8: .space 2
long_ffe9ea: .space 4
long_ffe9ee: .space 4
long_ffe9f2: .space 4
long_ffe9f6: .space 4
long_ffe9fa: .space 4
long_ffe9fe: .space 4
long_ffea02: .space 4
word_ffea06: .space 0x18
word_ffea1e: .space 0x18
word_ffea36: .space 8
byte_ffea3e: .space 1
long_ffea3f: .space 0x11
byte_ffea50: .space 1
long_ffea51: .space 0x11
byte_ffea62: .space 1
long_ffea63: .space 0x11
long_ffea74: .space 0x0c
long_ffea80: .space 0x0c
long_ffea8c: .space 0x0c
byte_ffea98: .space 2
long_ffea9a: .space 4
long_ffea9e: .space 4
word_ffeaa2: .space 2
byte_ffeaa4: .space 2
word_ffeaa6: .space 2
word_ffeaa8: .space 2
word_ffeaaa: .space 2
byte_ffeaac: .space 1
byte_ffeaad: .space 2
byte_ffeaaf: .space 5
word_ffeab4: .space 0x18
word_ffeacc: .space 2
word_ffeace: .space 0x50
.space 0x20
word_ffeb3e: .space 8
byte_ffeb46: .space 1
byte_ffeb47: .space 2
byte_ffeb49: .space 5
word_ffeb4e: .space 0x16
byte_ffeb64: .space 4
word_ffeb68: .space 0x1a
byte_ffeb82: .space 0x36
.space 0x20
word_ffebd8: .space 8
word_ffebe0: .space 2
word_ffebe2: .space 2
long_ffebe4: .space 4
byte_ffebe8: .space 2
word_ffebea: .space 2
long_ffebec: .space 4
long_ffebf0: .space 4
byte_ffebf4: .space 2
byte_ffebf6: .space 1
byte_ffebf7: .space 0x17
i2cBuf:
i2cBuf00:
i2c00o = . - i2cBuf
.space 1
i2c01o = . - i2cBuf
.space 1
i2cBuf02:
i2c02o = . - i2cBuf
.space 1
i2c03o = . - i2cBuf
.space 1
i2cBuf04:
i2c04o = . - i2cBuf
.space 1
i2c05o = . - i2cBuf
.space 1
i2c06o = . - i2cBuf
.space 1
i2c07o = . - i2cBuf
.space 1
i2c08o = . - i2cBuf
.space 4
i2c12o = . - i2cBuf
.space 4
i2c16o = . - i2cBuf
.space 4
i2c20o = . - i2cBuf
.space 2
word_ffec24: .space 2
word_ffec26: .space 2
adcVals0: .space 0x10
adcVals1: .space 0x10
word_ffec48: .space 4
word_ffec4c: .space 6
long_ffec52: .space 4
word_ffec56: .space 2
word_ffec58: .space 2
word_ffec5a: .space 2
word_ffec5c: .space 2
word_ffec5e: .space 2
word_ffec60: .space 2
word_ffec62: .space 2
long_ffec64: .space 4
word_ffec68: .space 0x20
word_ffec88: .space 2
.space 6
.space 0x18
word_ffeca8: .space 0x20
word_ffecc8: .space 2
long_ffecca: .space 2
.space 0x08
.space 0x16
word_ffecea: .space 2
word_ffecec: .space 2
byte_ffecee: .space 2
word_ffecf0: .space 2
word_ffecf2: .space 2
word_ffecf4: .space 2
word_ffecf6: .space 2
long_ffecf8: .space 0x0a
long_ffed02: .space 0x0a
word_ffed0c: .space 2
word_ffed0e: .space 2
word_ffed10: .space 2
i2c_0: .space 1 ; i2c_0 flags
.space 1
.space 1 ; i2c_0 state2
.space 1
.space 1 ; i2c_0; initially 0x8c
.space 1
.space 1 ; i2c_0 state
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1 ; i2c_0 cmd buf
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
i2c_1: .space 1 ; i2c_1 flags
.space 1
.space 1 ; i2c_1 state2
.space 1
.space 1 ; i2c_1; initially 0x90
.space 1
.space 1 ; i2c_1 state
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1 ; i2c_1 cmd buf
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
.space 1
word_ffed56: .space 2
word_ffed58: .space 2
word_ffed5a: .space 2
word_ffed5c: .space 2
word_ffed5e: .space 2
curDacTabsPtr: .space 4
dacVals: .space 4
cmdPtr: .space 4
long_ffed6c: .space 4
word_ffed70: .space 2
word_ffed72: .space 2
word_ffed74: .space 2
long_ffed76: .space 4
long_ffed7a: .space 4
long_ffed7e: .space 4
long_ffed82: .space 4
word_ffed86: .space 2
byte_ffed88: .space 0x14
.space 2
byte_ffed9e: .space 0x14
.space 2
byte_ffedb4: .space 1
byte_ffedb5: .space 1
temperActive7x: .space 1 ; temperature sensor 0x78..0x7f enabled
temperActiveCx: .space 1 ; temperature sensor 0xc0..0xc7 enabled
byte_ffedb8: .space 4
byte_ffedbc: .space 0x12
fanSpeed: .space 2 ; fan speed
long_ffedd0: .space 4
word_ffedd4: .space 2
word_ffedd6: .space 2
dynFanDelay: .space 2
word_ffedda: .space 2
long_ffeddc: .space 4 ; level pointer
long_ffede0: .space 0x12
long_ffedf2: .space 0x0c
word_ffedfe: .space 2
word_ffee00: .space 2
word_ffee02: .space 2
word_ffee04: .space 2
byte_ffee06: .space 2
byte_ffee08: .space 2
byte_ffee0a: .space 4
byte_ffee0e: .space 0x12
ramFreeArea:
.offset RAM8 & M24 ; 8-bit addressable RAM
byte_ffff00: .space 1
byte_ffff01: .space 1
byte_ffff02: .space 1
byte_ffff03: .space 1
byte_ffff04: .space 1
byte_ffff05: .space 1
byte_ffff06: .space 1
byte_ffff07: .space 1
byte_ffff08: .space 1
byte_ffff09: .space 1
byte_ffff0a: .space 1
byte_ffff0b: .space 1
byte_ffff0c: .space 1
byte_ffff0d: .space 1
byte_ffff0e: .space 1
byte_ffff0f: .space 1
byte_ffff10: .space 1
byte_ffff11: .space 1
byte_ffff12: .space 1
byte_ffff13: .space 1
byte_ffff14: .space 1
byte_ffff15: .space 1
byte_ffff16: .space 1
byte_ffff17: .space 1
.if !type1R
.space 1
.endif
byte_ffff19: .space 1
byte_ffff1a: .space 1
byte_ffff1b: .space 1
byte_ffff1c: .space 1
byte_ffff1d: .space 1
byte_ffff1e: .space 1
byte_ffff1f: .space 1
byte_ffff20: .space 1
byte_ffff21: .space 1
byte_ffff22: .space 1
byte_ffff23: .space 1
byte_ffff24: .space 1
.if type1R && level < 0x01030069
byte_ffe082:
.endif
byte_ffff25: .space 1
.if !type1R
byte_ffff26: .space 1
.endif
byte_ffff27: .space 1
byte_ffff28: .space 1
byte_ffff29: .space 1
.if level < 0x01000063
byte_ffff26: .space 1
.endif
byte_ffff2a: .space 1
byte_ffff2b: .space 1
byte_ffff2c: .space 1
byte_ffff2d: .space 1
.if level >= 0x01000062
byte_ffff2e: .space 1
.endif
byte_ffff2f: .space 1
byte_ffff30: .space 1
curBrightnessTab:
.space 9 * 2
ibfi2Flags: .space 1 ; 5 cmd recvd
execFlags: .space 1
byte_ffff45: .space 1
byte_ffff46: .space 1
byte_ffff47: .space 1 ; 6 build id contains "?"
byte_ffff48: .space 1
.if type1R
temperActive7x: .space 1 ; temperature sensor 0x78..0x7f enabled
.endif
byte_ffff49: .space 1 ; 6 fan off, 4 automatic speed
byte_ffff4a: .space 1
.if level >= 0x01000062
byte_ffff4b: .space 1
byte_ffff4c: .space 1
.endif
.nolist
.psize 0, 0
; Renesas H8S/2161BV Advanced Mode 2 I/O Registers
; HD64F2161BTE10, 128 KB Flash Memory, 4 KB RAM, 10 MHz
; 0.35 µm technology, typically 10000 (min. 100) rewrites
; 0x??000000..0x??01ffff 0x20000 Flash Memory
; 0x??ffe080..0x??ffefff 0xf80 RAM
; 0x??fff800..0x??fffeff 0x700 I/O Registers 3 & 2
; 0x??ffff00..0x??ffff7f 0x80 RAM
; 0x??ffff80..0x??ffffff 0x80 I/O Registers 1
.h8300s ; H8S/2600 Series in Advanced Mode
.macro _mov ers, disp, erd ; Alternate Coding mov.l ers, @(disp:32, erd)
.ifdef FIX
mov \ers, @(\disp:32, \erd) ; Regular Coding
.else
.irpc reg, \ers ; Extract Trailing Digit of Register Name
.ers = \reg
.endr
.irpc reg, \erd ; Extract Trailing Digit of Register Name
.erd = \reg
.endr
.word 0x0100
.long 0x78806ba0 ^ 0x00800000 | .erd << 20 | .ers
.long \disp
.endif
.endm
.macro b instr bitaddr ; Bit Manipulation Instructions
.if \bitaddr & 0x0fffff00 == 0x0fffff00
b\instr #\bitaddr >> 28, @\bitaddr | 0xffffff00 :8 ; 8-bit Length
.else
b\instr #\bitaddr >> 28, @\bitaddr & 0x0fffffff | (\bitaddr << 4 < 0) << 28
.endif
.endm
.macro reg name address ; 32-bit Sign Extension of 16-bit Address
\name = (\address << 16 < 0) << 16 | \address
.endm
.macro bit register name bitnumber
\register\(.)\name = \register & 0x0fffffff | \bitnumber << 28
.endm
.macro pin register name bitnumber
\register\(.)\name = \register & 0x0fffffff | \bitnumber << 28
\name = \register\(.)\name ; Short Form for Unique Names
.endm
NULL = 0x00000000 ; NULL Address
M8 = 0x000000ff ; 8-bit Mask
M16 = 0x0000ffff ; 16-bit Mask
M24 = 0x00ffffff ; 24-bit Mask
ROM = 0x00000000 ; Internal Flash Memory Start
ROMend = 0x00020000 ; Internal Flash Memory End
reg RAM 0xe080 ; Low Internal RAM Start (16-bit addressable)
reg RAMend 0xf000 ; Low Internal RAM End (16-bit addressable)
reg RAM8 0xff00 ; High Internal RAM Start ( 8-bit addressable)
reg RAM8end 0xff80 ; High Internal RAM End ( 8-bit addressable)
reg pgnocr 0xfe16 ; Port G Open Drain Control Register
pin pgnocr pg7nocr 7 ; Pin PG7
pin pgnocr pg6nocr 6 ; Pin PG6
pin pgnocr pg5nocr 5 ; Pin PG5
pin pgnocr pg4nocr 4 ; Pin PG4
pin pgnocr pg3nocr 3 ; Pin PG3
pin pgnocr pg2nocr 2 ; Pin PG2
pin pgnocr pg1nocr 1 ; Pin PG1
pin pgnocr pg0nocr 0 ; Pin PG0
reg penocr 0xfe18 ; Port E Open Drain Control Register
pin penocr pe7nocr 7 ; Pin PE7
pin penocr pe6nocr 6 ; Pin PE6
pin penocr pe5nocr 5 ; Pin PE5
pin penocr pe4nocr 4 ; Pin PE4
pin penocr pe3nocr 3 ; Pin PE3
pin penocr pe2nocr 2 ; Pin PE2
pin penocr pe1nocr 1 ; Pin PE1
pin penocr pe0nocr 0 ; Pin PE0
reg pfnocr 0xfe19 ; Port F Open Drain Control Register
pin pfnocr pf7nocr 7 ; Pin PF7
pin pfnocr pf6nocr 6 ; Pin PF6
pin pfnocr pf5nocr 5 ; Pin PF5
pin pfnocr pf4nocr 4 ; Pin PF4
pin pfnocr pf3nocr 3 ; Pin PF3
pin pfnocr pf2nocr 2 ; Pin PF2
pin pfnocr pf1nocr 1 ; Pin PF1
pin pfnocr pf0nocr 0 ; Pin PF0
reg pcnocr 0xfe1c ; Port C Open Drain Control Register
pin pcnocr pc7nocr 7 ; Pin PC7
pin pcnocr pc6nocr 6 ; Pin PC6
pin pcnocr pc5nocr 5 ; Pin PC5
pin pcnocr pc4nocr 4 ; Pin PC4
pin pcnocr pc3nocr 3 ; Pin PC3
pin pcnocr pc2nocr 2 ; Pin PC2
pin pcnocr pc1nocr 1 ; Pin PC1
pin pcnocr pc0nocr 0 ; Pin PC0
reg pdnocr 0xfe1d ; Port D Open Drain Control Register
pin pdnocr pd7nocr 7 ; Pin PD7
pin pdnocr pd6nocr 6 ; Pin PD6
pin pdnocr pd5nocr 5 ; Pin PD5
pin pdnocr pd4nocr 4 ; Pin PD4
pin pdnocr pd3nocr 3 ; Pin PD3
pin pdnocr pd2nocr 2 ; Pin PD2
pin pdnocr pd1nocr 1 ; Pin PD1
pin pdnocr pd0nocr 0 ; Pin PD0
reg twr0mw 0xfe20 ; LPC Bidirectional Data Register 0MW
reg twr0sw 0xfe20 ; LPC Bidirectional Data Register 0SW
reg twr1 0xfe21 ; LPC Bidirectional Data Register 1
reg twr2 0xfe22 ; LPC Bidirectional Data Register 2
reg twr3 0xfe23 ; LPC Bidirectional Data Register 3
reg twr4 0xfe24 ; LPC Bidirectional Data Register 4
reg twr5 0xfe25 ; LPC Bidirectional Data Register 5
reg twr6 0xfe26 ; LPC Bidirectional Data Register 6
reg twr7 0xfe27 ; LPC Bidirectional Data Register 7
reg twr8 0xfe28 ; LPC Bidirectional Data Register 8
reg twr9 0xfe29 ; LPC Bidirectional Data Register 9
reg twr10 0xfe2a ; LPC Bidirectional Data Register 10
reg twr11 0xfe2b ; LPC Bidirectional Data Register 11
reg twr12 0xfe2c ; LPC Bidirectional Data Register 12
reg twr13 0xfe2d ; LPC Bidirectional Data Register 13
reg twr14 0xfe2e ; LPC Bidirectional Data Register 14
reg twr15 0xfe2f ; LPC Bidirectional Data Register 15
reg idr3 0xfe30 ; LPC Input Data Register 3
reg odr3 0xfe31 ; LPC Output Data Register 3
reg str3 0xfe32 ; LPC Status Register 3
bit str3 ibf3b 7 ; Bidirectional Data Register Input Buffer Full
bit str3 obf3b 6 ; Bidirectional Data Register Output Buffer Full
bit str3 mwmf 5 ; Master Write Mode Flag
bit str3 swmf 4 ; Slave Write Mode Flag
bit str3 c_d3 3 ; Command/-Data
bit str3 dbu32 2 ; Defined By User
bit str3 ibf3a 1 ; Input Buffer Full
bit str3 obf3a 0 ; Output Buffer Full
reg ladr3h 0xfe34 ; LPC Channel 3 Address Register H
reg ladr3l 0xfe35 ; LPC Channel 3 Address Register L
bit ladr3l twre 0 ; Bidirectional Data Register Enable
reg sirqcr0 0xfe36 ; LPC SERIRQ Control Register 0
bit sirqcr0 q_c 7 ; Quiet/-Continuous Mode Flag
bit sirqcr0 selreq 6 ; Start Frame Initiation Request Select
bit sirqcr0 iedir 5 ; Interrupt Enable Direct Mode
bit sirqcr0 smie3b 4 ; Host SMI Interrupt Enable 3B
bit sirqcr0 smie3a 3 ; Host SMI Interrupt Enable 3A
bit sirqcr0 smie2 2 ; Host SMI Interrupt Enable 2
bit sirqcr0 irq12e1 1 ; Host IRQ12 Interrupt Enable 1
bit sirqcr0 irq1e1 0 ; Host IRQ1 Interrupt Enable 1
reg sirqcr1 0xfe37 ; LPC SERIRQ Control Register 1
bit sirqcr1 irq11e3 7 ; Host IRQ11 Interrupt Enable 3
bit sirqcr1 irq10e3 6 ; Host IRQ10 Interrupt Enable 3
bit sirqcr1 irq9e3 5 ; Host IRQ9 Interrupt Enable 3
bit sirqcr1 irq6e3 4 ; Host IRQ6 Interrupt Enable 3
bit sirqcr1 irq11e2 3 ; Host IRQ11 Interrupt Enable 2
bit sirqcr1 irq10e2 2 ; Host IRQ10 Interrupt Enable 2
bit sirqcr1 irq9e2 1 ; Host IRQ9 Interrupt Enable 2
bit sirqcr1 irq6e2 0 ; Host IRQ6 Interrupt Enable 2
reg idr1 0xfe38 ; LPC Input Data Register 1 (0x60/0x64)
reg odr1 0xfe39 ; LPC Output Data Register 1 (0x60)
reg str1 0xfe3a ; LPC Status Register 1 (0x64)
bit str1 dbu17 7 ; Defined By User
bit str1 smi_evt 6 ; SMI Event Pending
bit str1 sci_evt 5 ; SCI Event Pending
bit str1 burst 4 ; Burst Mode For Polled Command Processing
bit str1 c_d1 3 ; Command/-Data (0x64/0x60)
bit str1 dbu12 2 ; Defined By User
bit str1 ibf1 1 ; Input Buffer Full
bit str1 obf1 0 ; Output Buffer Full
reg idr2 0xfe3c ; LPC Input Data Register 2 (0x62/0x66)
reg odr2 0xfe3d ; LPC Output Data Register 2 (0x62)
reg str2 0xfe3e ; LPC Status Register 2 (0x66)
bit str2 dbu27 7 ; Defined By User
bit str2 smi_evt 6 ; SMI Event Pending
bit str2 sci_evt 5 ; SCI Event Pending
bit str2 burst 4 ; Burst Mode For Polled Command Processing
bit str2 c_d2 3 ; Command/-Data (0x66/0x62)
bit str2 dbu22 2 ; Defined By User
bit str2 ibf2 1 ; Input Buffer Full
bit str2 obf2 0 ; Output Buffer Full
reg hisel 0xfe3f ; LPC Host Interface Select Register
bit hisel selstr3 7 ; STR3 Register Function Select 3
bit hisel selirq11 6 ; SERIRQ Output Select
bit hisel selirq10 5 ; SERIRQ Output Select
bit hisel selirq9 4 ; SERIRQ Output Select
bit hisel selirq6 3 ; SERIRQ Output Select
bit hisel selsmi 2 ; SERIRQ Output Select
bit hisel selirq12 1 ; SERIRQ Output Select
bit hisel selirq1 0 ; SERIRQ Output Select
reg hicr_0 0xfe40 ; LPC Host Interface Control Register 0
bit hicr_0 lpc3e 7 ; LPC Channel 3 Enable (LADR3)
bit hicr_0 lpc2e 6 ; LPC Channel 2 Enable (0x62/0x66)
bit hicr_0 lpc1e 5 ; LPC Channel 1 Enable (0x60/0x64)
bit hicr_0 fga20e 4 ; Fast A20 Gate Function Enable
bit hicr_0 sdwne 3 ; LPC Software Shutdown Enable
bit hicr_0 pmee 2 ; PME Output Enable
bit hicr_0 lsmie 1 ; LSMI Output Enable
bit hicr_0 lscie 0 ; LSCI Output Enable
reg hicr_1 0xfe41 ; LPC Host Interface Control Register 1
bit hicr_1 lpcbsy 7 ; LPC Busy
bit hicr_1 clkreq 6 ; LCLK Request
bit hicr_1 irqbsy 5 ; SERIRQ Busy
bit hicr_1 lrstb 4 ; LPC Software Reset Bit
bit hicr_1 sdwnb 3 ; LPC Software Shutdown Bit
bit hicr_1 pmeb 2 ; PME Output Bit
bit hicr_1 lsmib 1 ; LSMI Output Bit
bit hicr_1 lscib 0 ; LSCI Output Bit
reg hicr_2 0xfe42 ; LPC Host Interface Control Register 2
bit hicr_2 ga20 7 ; GA20 Pin Monitor
bit hicr_2 lrst 6 ; LPC Reset Interrupt Flag
bit hicr_2 sdwn 5 ; LPC Shutdown Interrupt Flag
bit hicr_2 abrt 4 ; LPC Abort Interrupt Flag
bit hicr_2 ibfie3 3 ; IDR3 & TWR Receive Completion Interrupt Enable
bit hicr_2 ibfie2 2 ; IDR2 Receive Completion Interrupt Enable
bit hicr_2 ibfie1 1 ; IDR1 Receive Completion Interrupt Enable
bit hicr_2 errie 0 ; Error Interrupt Enable
reg hicr_3 0xfe43 ; LPC Host Interface Control Register 3
bit hicr_3 lframe 7 ; LFRAME Pin Monitor
bit hicr_3 clkrun 6 ; CLKRUN Pin Monitor
bit hicr_3 serirq 5 ; SERIRQ Pin Monitor
bit hicr_3 lreset 4 ; LRESET Pin Monitor
bit hicr_3 lpcpd 3 ; LPCPD Pin Monitor
bit hicr_3 pme 2 ; PME Pin Monitor
bit hicr_3 lsmi 1 ; LSMI Pin Monitor
bit hicr_3 lsci 0 ; LSCI Pin Monitor
reg wuemrb 0xfe44 ; Wake-Up Event Interrupt Mask Register
bit wuemrb wuemr7 7 ; WUE7 Enable
bit wuemrb wuemr6 6 ; WUE6 Enable
bit wuemrb wuemr5 5 ; WUE5 Enable
bit wuemrb wuemr4 4 ; WUE4 Enable
bit wuemrb wuemr3 3 ; WUE3 Enable
bit wuemrb wuemr2 2 ; WUE2 Enable
bit wuemrb wuemr1 1 ; WUE1 Enable
bit wuemrb wuemr0 0 ; WUE0 Enable
reg pgodr 0xfe46 ; Port G Output Data Register
pin pgodr pg7odr 7 ; Pin PG7
pin pgodr pg6odr 6 ; Pin PG6
pin pgodr pg5odr 5 ; Pin PG5
pin pgodr pg4odr 4 ; Pin PG4
pin pgodr pg3odr 3 ; Pin PG3
pin pgodr pg2odr 2 ; Pin PG2
pin pgodr pg1odr 1 ; Pin PG1
pin pgodr pg0odr 0 ; Pin PG0
reg pgpin 0xfe47 ; Port G Input Data Register
pin pgpin pg7pin 7 ; Pin PG7
pin pgpin pg6pin 6 ; Pin PG6
pin pgpin pg5pin 5 ; Pin PG5
pin pgpin pg4pin 4 ; Pin PG4
pin pgpin pg3pin 3 ; Pin PG3
pin pgpin pg2pin 2 ; Pin PG2
pin pgpin pg1pin 1 ; Pin PG1
pin pgpin pg0pin 0 ; Pin PG0
reg pgddr 0xfe47 ; Port G Data Direction Register
pin pgddr pg7ddr 7 ; Pin PG7
pin pgddr pg6ddr 6 ; Pin PG6
pin pgddr pg5ddr 5 ; Pin PG5
pin pgddr pg4ddr 4 ; Pin PG4
pin pgddr pg3ddr 3 ; Pin PG3
pin pgddr pg2ddr 2 ; Pin PG2
pin pgddr pg1ddr 1 ; Pin PG1
pin pgddr pg0ddr 0 ; Pin PG0
reg peodr 0xfe48 ; Port E Output Data Register
pin peodr pe7odr 7 ; Pin PE7
pin peodr pe6odr 6 ; Pin PE6
pin peodr pe5odr 5 ; Pin PE5
pin peodr pe4odr 4 ; Pin PE4
pin peodr pe3odr 3 ; Pin PE3
pin peodr pe2odr 2 ; Pin PE2
pin peodr pe1odr 1 ; Pin PE1
pin peodr pe0odr 0 ; Pin PE0
reg pfodr 0xfe49 ; Port F Output Data Register
pin pfodr pf7odr 7 ; Pin PF7
pin pfodr pf6odr 6 ; Pin PF6
pin pfodr pf5odr 5 ; Pin PF5
pin pfodr pf4odr 4 ; Pin PF4
pin pfodr pf3odr 3 ; Pin PF3
pin pfodr pf2odr 2 ; Pin PF2
pin pfodr pf1odr 1 ; Pin PF1
pin pfodr pf0odr 0 ; Pin PF0
reg pepin 0xfe4a ; Port E Input Data Register
pin pepin pe7pin 7 ; Pin PE7
pin pepin pe6pin 6 ; Pin PE6
pin pepin pe5pin 5 ; Pin PE5
pin pepin pe4pin 4 ; Pin PE4
pin pepin pe3pin 3 ; Pin PE3
pin pepin pe2pin 2 ; Pin PE2
pin pepin pe1pin 1 ; Pin PE1
pin pepin pe0pin 0 ; Pin PE0
reg peddr 0xfe4a ; Port E Data Direction Register
pin peddr pe7ddr 7 ; Pin PE7
pin peddr pe6ddr 6 ; Pin PE6
pin peddr pe5ddr 5 ; Pin PE5
pin peddr pe4ddr 4 ; Pin PE4
pin peddr pe3ddr 3 ; Pin PE3
pin peddr pe2ddr 2 ; Pin PE2
pin peddr pe1ddr 1 ; Pin PE1
pin peddr pe0ddr 0 ; Pin PE0
reg pfpin 0xfe4b ; Port F Input Data Register
pin pfpin pf7pin 7 ; Pin PF7
pin pfpin pf6pin 6 ; Pin PF6
pin pfpin pf5pin 5 ; Pin PF5
pin pfpin pf4pin 4 ; Pin PF4
pin pfpin pf3pin 3 ; Pin PF3
pin pfpin pf2pin 2 ; Pin PF2
pin pfpin pf1pin 1 ; Pin PF1
pin pfpin pf0pin 0 ; Pin PF0
reg pfddr 0xfe4b ; Port F Data Direction Register
pin pfddr pf7ddr 7 ; Pin PF7
pin pfddr pf6ddr 6 ; Pin PF6
pin pfddr pf5ddr 5 ; Pin PF5
pin pfddr pf4ddr 4 ; Pin PF4
pin pfddr pf3ddr 3 ; Pin PF3
pin pfddr pf2ddr 2 ; Pin PF2
pin pfddr pf1ddr 1 ; Pin PF1
pin pfddr pf0ddr 0 ; Pin PF0
reg pcodr 0xfe4c ; Port C Output Data Register
pin pcodr pc7odr 7 ; Pin PC7
pin pcodr pc6odr 6 ; Pin PC6
pin pcodr pc5odr 5 ; Pin PC5
pin pcodr pc4odr 4 ; Pin PC4
pin pcodr pc3odr 3 ; Pin PC3
pin pcodr pc2odr 2 ; Pin PC2
pin pcodr pc1odr 1 ; Pin PC1
pin pcodr pc0odr 0 ; Pin PC0
reg pdodr 0xfe4d ; Port D Output Data Register
pin pdodr pd7odr 7 ; Pin PD7
pin pdodr pd6odr 6 ; Pin PD6
pin pdodr pd5odr 5 ; Pin PD5
pin pdodr pd4odr 4 ; Pin PD4
pin pdodr pd3odr 3 ; Pin PD3
pin pdodr pd2odr 2 ; Pin PD2
pin pdodr pd1odr 1 ; Pin PD1
pin pdodr pd0odr 0 ; Pin PD0
reg pcpin 0xfe4e ; Port C Input Data Register
pin pcpin pc7pin 7 ; Pin PC7
pin pcpin pc6pin 6 ; Pin PC6
pin pcpin pc5pin 5 ; Pin PC5
pin pcpin pc4pin 4 ; Pin PC4
pin pcpin pc3pin 3 ; Pin PC3
pin pcpin pc2pin 2 ; Pin PC2
pin pcpin pc1pin 1 ; Pin PC1
pin pcpin pc0pin 0 ; Pin PC0
reg pcddr 0xfe4e ; Port C Data Direction Register
pin pcddr pc7ddr 7 ; Pin PC7
pin pcddr pc6ddr 6 ; Pin PC6
pin pcddr pc5ddr 5 ; Pin PC5
pin pcddr pc4ddr 4 ; Pin PC4
pin pcddr pc3ddr 3 ; Pin PC3
pin pcddr pc2ddr 2 ; Pin PC2
pin pcddr pc1ddr 1 ; Pin PC1
pin pcddr pc0ddr 0 ; Pin PC0
reg pdpin 0xfe4f ; Port D Input Data Register
pin pdpin pd7pin 7 ; Pin PD7
pin pdpin pd6pin 6 ; Pin PD6
pin pdpin pd5pin 5 ; Pin PD5
pin pdpin pd4pin 4 ; Pin PD4
pin pdpin pd3pin 3 ; Pin PD3
pin pdpin pd2pin 2 ; Pin PD2
pin pdpin pd1pin 1 ; Pin PD1
pin pdpin pd0pin 0 ; Pin PD0
reg pdddr 0xfe4f ; Port D Data Direction Register
pin pdddr pd7ddr 7 ; Pin PD7
pin pdddr pd6ddr 6 ; Pin PD6
pin pdddr pd5ddr 5 ; Pin PD5
pin pdddr pd4ddr 4 ; Pin PD4
pin pdddr pd3ddr 3 ; Pin PD3
pin pdddr pd2ddr 2 ; Pin PD2
pin pdddr pd1ddr 1 ; Pin PD1
pin pdddr pd0ddr 0 ; Pin PD0
reg hicr2 0xfe80 ; XBS Host Interface Control Register 2
bit hicr2 ibfie4 2 ; Input Data Register Full Interrupt Enable 4
bit hicr2 ibfie3 1 ; Input Data Register Full Interrupt Enable 3
reg idr_3 0xfe81 ; XBS Input Data Register 3
reg odr_3 0xfe82 ; XBS Output Data Register 3
reg str_3 0xfe83 ; XBS Status Register 3
bit str_3 dbu37 7 ; Defined By User
bit str_3 dbu36 6 ; Defined By User
bit str_3 dbu35 5 ; Defined By User
bit str_3 dbu34 4 ; Defined By User
bit str_3 c_d3 3 ; Command/-Data
bit str_3 dbu32 2 ; Defined By User
bit str_3 ibf3 1 ; Input Buffer Full
bit str_3 obf3 0 ; Output Buffer Full
reg idr_4 0xfe84 ; XBS Input Data Register 4
reg odr_4 0xfe85 ; XBS Output Data Register 4
reg str_4 0xfe86 ; XBS Status Register 4
bit str_4 dbu47 7 ; Defined By User
bit str_4 dbu46 6 ; Defined By User
bit str_4 dbu45 5 ; Defined By User
bit str_4 dbu44 4 ; Defined By User
bit str_4 c_d4 3 ; Command/-Data
bit str_4 dbu42 2 ; Defined By User
bit str_4 ibf4 1 ; Input Buffer Full
bit str_4 obf4 0 ; Output Buffer Full
reg icxr_0 0xfed4 ; IIC_0 I²C Bus Extended Control Register
bit icxr_0 stopim 7 ; Stop Condition Interrupt Source Mask
bit icxr_0 hnds 6 ; Handshake Receive Operation Select
bit icxr_0 icdrf 5 ; Receive Data Read Request Flag
bit icxr_0 icdre 4 ; Transmit Data Write Request Flag
bit icxr_0 alie 3 ; Arbitration Lost Interrupt Enable
bit icxr_0 alsl 2 ; Arbitration Lost Condition Select
bit icxr_0 fnc1 1 ; Function Restriction Bit 1
bit icxr_0 fnc0 0 ; Function Restriction Bit 0
reg icxr_1 0xfed5 ; IIC_1 I²C Bus Extended Control Register
bit icxr_1 stopim 7 ; Stop Condition Interrupt Source Mask
bit icxr_1 hnds 6 ; Handshake Receive Operation Select
bit icxr_1 icdrf 5 ; Receive Data Read Request Flag
bit icxr_1 icdre 4 ; Transmit Data Write Request Flag
bit icxr_1 alie 3 ; Arbitration Lost Interrupt Enable
bit icxr_1 alsl 2 ; Arbitration Lost Condition Select
bit icxr_1 fnc1 1 ; Function Restriction Bit 1
bit icxr_1 fnc0 0 ; Function Restriction Bit 0
reg kbcrh_0 0xfed8 ; PS/2 Keyboard Control Register H Channel 0
bit kbcrh_0 kbioe 7 ; Keyboard In/Out Enable
bit kbcrh_0 kclki 6 ; Keyboard Clock In
bit kbcrh_0 kdi 5 ; Keyboard Data In
bit kbcrh_0 kbfsel 4 ; Keyboard Buffer Register Full Select
bit kbcrh_0 kbie 3 ; Keyboard Interrupt Enable
bit kbcrh_0 kbf 2 ; Keyboard Buffer Register Full
bit kbcrh_0 per 1 ; Parity Error
bit kbcrh_0 kbs 0 ; Keyboard Stop
reg kbcrl_0 0xfed9 ; PS/2 Keyboard Control Register L Channel 0
bit kbcrl_0 kbe 7 ; Keyboard Enable
bit kbcrl_0 kclko 6 ; Keyboard Clock Out
bit kbcrl_0 kdo 5 ; Keyboard Data Out
bit kbcrl_0 rxcr3 3 ; Receive Counter 3
bit kbcrl_0 rxcr_2 2 ; Receive Counter 2
bit kbcrl_0 rxcr_1 1 ; Receive Counter 1
bit kbcrl_0 rxcr_0 0 ; Receive Counter 0
reg kbbr_0 0xfeda ; PS/2 Keyboard Data Buffer Register Channel 0
reg kbcrh_1 0xfedc ; PS/2 Keyboard Control Register H Channel 1
bit kbcrh_1 kbioe 7 ; Keyboard In/Out Enable
bit kbcrh_1 kclki 6 ; Keyboard Clock In
bit kbcrh_1 kdi 5 ; Keyboard Data In
bit kbcrh_1 kbfsel 4 ; Keyboard Buffer Register Full Select
bit kbcrh_1 kbie 3 ; Keyboard Interrupt Enable
bit kbcrh_1 kbf 2 ; Keyboard Buffer Register Full
bit kbcrh_1 per 1 ; Parity Error
bit kbcrh_1 kbs 0 ; Keyboard Stop
reg kbcrl_1 0xfedd ; PS/2 Keyboard Control Register L Channel 1
bit kbcrl_1 kbe 7 ; Keyboard Enable
bit kbcrl_1 kclko 6 ; Keyboard Clock Out
bit kbcrl_1 kdo 5 ; Keyboard Data Out
bit kbcrl_1 rxcr3 3 ; Receive Counter 3
bit kbcrl_1 rxcr_2 2 ; Receive Counter 2
bit kbcrl_1 rxcr_1 1 ; Receive Counter 1
bit kbcrl_1 rxcr_0 0 ; Receive Counter 0
reg kbbr_1 0xfede ; PS/2 Keyboard Data Buffer Register Channel 1
reg kbcrh_2 0xfee0 ; PS/2 Keyboard Control Register H Channel 2
bit kbcrh_2 kbioe 7 ; Keyboard In/Out Enable
bit kbcrh_2 kclki 6 ; Keyboard Clock In
bit kbcrh_2 kdi 5 ; Keyboard Data In
bit kbcrh_2 kbfsel 4 ; Keyboard Buffer Register Full Select
bit kbcrh_2 kbie 3 ; Keyboard Interrupt Enable
bit kbcrh_2 kbf 2 ; Keyboard Buffer Register Full
bit kbcrh_2 per 1 ; Parity Error
bit kbcrh_2 kbs 0 ; Keyboard Stop
reg kbcrl_2 0xfee1 ; PS/2 Keyboard Control Register L Channel 2
bit kbcrl_2 kbe 7 ; Keyboard Enable
bit kbcrl_2 kclko 6 ; Keyboard Clock Out
bit kbcrl_2 kdo 5 ; Keyboard Data Out
bit kbcrl_2 rxcr3 3 ; Receive Counter 3
bit kbcrl_2 rxcr_2 2 ; Receive Counter 2
bit kbcrl_2 rxcr_1 1 ; Receive Counter 1
bit kbcrl_2 rxcr_0 0 ; Receive Counter 0
reg kbbr_2 0xfee2 ; PS/2 Keyboard Data Buffer Register Channel 2
reg kbcomp 0xfee4 ; Keyboard Comparator Control Register
bit kbcomp ire 7 ; IrDA Enable
bit kbcomp ircks2 6 ; IrDA Clock Select 2
bit kbcomp ircks1 5 ; IrDA Clock Select 1
bit kbcomp ircks0 4 ; IrDA Clock Select 0
bit kbcomp kbade 3 ; Keyboard A/D Enable (AN6/AN7)
bit kbcomp kbch2 2 ; Keyboard A/D Channel Select 2
bit kbcomp kbch1 1 ; Keyboard A/D Channel Select 1
bit kbcomp kbch0 0 ; Keyboard A/D Channel Select 0
reg ddcswr 0xfee6 ; I²C DDC Switch Register
bit ddcswr swe 7 ; IIC_0 DDC Automatic Format Mode Switch Enable
bit ddcswr sw 6 ; IIC_0 DDC Format Mode Switch
bit ddcswr ie 5 ; IIC_0 DDC Mode Switch Interrupt Enable Bit
bit ddcswr if 4 ; IIC_0 DDC Mode Switch Interrupt Flag
bit ddcswr clr3 3 ; IIC Clear 3
bit ddcswr clr2 2 ; IIC Clear 2
bit ddcswr clr1 1 ; IIC Clear 1
bit ddcswr clr0 0 ; IIC Clear 0
reg icra 0xfee8 ; Interrupt Control Register A
bit icra icra7 7 ; IRQ0
bit icra icra6 6 ; IRQ1
bit icra icra5 5 ; IRQ2/IRQ3
bit icra icra4 4 ; IRQ4/IRQ5
bit icra icra3 3 ; IRQ6/IRQ7
bit icra icra2 2 ; DTC
bit icra icra1 1 ; WDT_0
bit icra icra0 0 ; WDT_1
reg icrb 0xfee9 ; Interrupt Control Register B
bit icrb icrb7 7 ; A/D Converter
bit icrb icrb6 6 ; FRT
bit icrb icrb3 3 ; TMR_0
bit icrb icrb2 2 ; TMR_1
bit icrb icrb1 1 ; TMR_X , TMR_Y
bit icrb icrb0 0 ; XBS/KBC
reg icrc 0xfeea ; Interrupt Control Register C
bit icrc icrc7 7 ; SCI_0
bit icrc icrc6 6 ; SCI_1
bit icrc icrc5 5 ; SCI_2
bit icrc icrc4 4 ; IIC_0
bit icrc icrc3 3 ; IIC_0
bit icrc icrc1 1 ; LPCH
reg isr 0xfeeb ; IRQ Status Register
bit isr irq7f 7 ; IRQ7 Flag
bit isr irq6f 6 ; IRQ6 Flag
bit isr irq5f 5 ; IRQ5 Flag
bit isr irq4f 4 ; IRQ4 Flag
bit isr irq3f 3 ; IRQ3 Flag
bit isr irq2f 2 ; IRQ2 Flag
bit isr irq1f 1 ; IRQ1 Flag
bit isr irq0f 0 ; IRQ0 Flag
reg iscrh 0xfeec ; IRQ Sense Control Register H
bit iscrh irq7scb 7 ; IRQ7 Sense Control B
bit iscrh irq7sca 6 ; IRQ7 Sense Control A
bit iscrh irq6scb 5 ; IRQ6 Sense Control B
bit iscrh irq6sca 4 ; IRQ6 Sense Control A
bit iscrh irq5scb 3 ; IRQ5 Sense Control B
bit iscrh irq5sca 2 ; IRQ5 Sense Control A
bit iscrh irq4scb 1 ; IRQ4 Sense Control B
bit iscrh irq4sca 0 ; IRQ4 Sense Control A
reg iscrl 0xfeed ; IRQ Sense Control Register L
bit iscrl irq3scb 7 ; IRQ3 Sense Control B
bit iscrl irq3sca 6 ; IRQ3 Sense Control A
bit iscrl irq2scb 5 ; IRQ2 Sense Control B
bit iscrl irq2sca 4 ; IRQ2 Sense Control A
bit iscrl irq1scb 3 ; IRQ1 Sense Control B
bit iscrl irq1sca 2 ; IRQ1 Sense Control A
bit iscrl irq0scb 1 ; IRQ0 Sense Control B
bit iscrl irq0sca 0 ; IRQ0 Sense Control A
reg dtcera 0xfeee ; DTC Enable Register A
bit dtcera dtcea7 7 ; IRQ0 DTC Activation Enable
bit dtcera dtcea6 6 ; IRQ1 DTC Activation Enable
bit dtcera dtcea5 5 ; IRQ2 DTC Activation Enable
bit dtcera dtcea4 4 ; IRQ3 DTC Activation Enable
bit dtcera dtcea3 3 ; ADI DTC Activation Enable
bit dtcera dtcea2 2 ; FRT ICIA DTC Activation Enable
bit dtcera dtcea1 1 ; FRT ICIB DTC Activation Enable
bit dtcera dtcea0 0 ; FRT OCIA DTC Activation Enable
reg dtcerb 0xfeef ; DTC Enable Register B
bit dtcerb dtceb7 7 ; FRT OCIB DTC Activation Enable
bit dtcerb dtceb2 2 ; TMR_0 CMIA0 DTC Activation Enable
bit dtcerb dtceb1 1 ; TMR_0 CMIB0 DTC Activation Enable
bit dtcerb dtceb0 0 ; TMR_1 CMIA1 DTC Activation Enable
reg dtcerc 0xfef0 ; DTC Enable Register C
bit dtcerc dtcec7 7 ; TMR_1 CMIB1 DTC Activation Enable
bit dtcerc dtcec6 6 ; TMR_Y CMIAY DTC Activation Enable
bit dtcerc dtcec5 5 ; TMR_Y CMIBY DTC Activation Enable
bit dtcerc dtcec4 4 ; XBS IBF1 DTC Activation Enable
bit dtcerc dtcec3 3 ; XBS IBF2 DTC Activation Enable
bit dtcerc dtcec2 2 ; SCI_0 RXI0 DTC Activation Enable
bit dtcerc dtcec1 1 ; SCI_0 TXI0 DTC Activation Enable
bit dtcerc dtcec0 0 ; SCI_1 RXI1 DTC Activation Enable
reg dtcerd 0xfef1 ; DTC Enable Register D
bit dtcerd dtced7 7 ; SCI_1 TXI1 DTC Activation Enable
bit dtcerd dtced6 6 ; SCI_2 RXI2 DTC Activation Enable
bit dtcerd dtced5 5 ; SCI_2 TXI2 DTC Activation Enable
bit dtcerd dtced4 4 ; IIC_0 IICI0 DTC Activation Enable
bit dtcerd dtced3 3 ; IIC_1 IICI1 DTC Activation Enable
reg dtcere 0xfef2 ; DTC Enable Register E
bit dtcere dtcee3 3 ; LPC ERRI DTC Activation Enable
bit dtcere dtcee2 2 ; LPC IBFI1 DTC Activation Enable
bit dtcere dtcee1 1 ; LPC IBFI2 DTC Activation Enable
bit dtcere dtcee0 0 ; LPC IBFI3 DTC Activation Enable
reg dtvecr 0xfef3 ; DTC Vector Register
bit dtvecr swdte 7 ; DTC Software Activation Enable
bit dtvecr dtvec6 6 ; DTC Software Activation Vector 6
bit dtvecr dtvec5 5 ; DTC Software Activation Vector 5
bit dtvecr dtvec4 4 ; DTC Software Activation Vector 4
bit dtvecr dtvec3 3 ; DTC Software Activation Vector 3
bit dtvecr dtvec2 2 ; DTC Software Activation Vector 2
bit dtvecr dtvec1 1 ; DTC Software Activation Vector 1
bit dtvecr dtvec0 0 ; DTC Software Activation Vector 0
reg abrkcr 0xfef4 ; Address Break Control Register
bit abrkcr cmf 7 ; Condition Match Flag
bit abrkcr bie 0 ; Break Interrupt Enable
reg bara 0xfef5 ; Break Address Register A
reg barb 0xfef6 ; Break Address Register B
reg barc 0xfef7 ; Break Address Register C
reg flmcr1 0xff80 ; Flash Memory Control Register 1
bit flmcr1 fwe 7 ; Flash Write Enable
bit flmcr1 swe 6 ; Software Write Enable
bit flmcr1 ev 3 ; Erase-Verify
bit flmcr1 pv 2 ; Program-Verify
bit flmcr1 e 1 ; Erase
bit flmcr1 p 0 ; Program
reg flmcr2 0xff81 ; Flash Memory Control Register 2
bit flmcr2 fler 7 ; Flash Memory Error
bit flmcr2 esu 1 ; Erase Setup
bit flmcr2 psu 0 ; Program Setup
reg pcsr 0xff82 ; PWM Peripheral Clock Select Register
bit pcsr pwckb 2 ; PWM Clock Select B
bit pcsr pwcka 1 ; PWM Clock Select A
reg ebr1 0xff82 ; Flash Erase Block Register 1
bit ebr1 eb9 1 ; 0x018000..0x01ffff
bit ebr1 eb8 0 ; 0x010000..0x017fff
reg syscr2 0xff83 ; System Control Register 2
bit syscr2 kwul1 7 ; Port 6 Key Wakeup Level 1
bit syscr2 kwul0 6 ; Port 6 Key Wakeup Level 0
bit syscr2 p6pue 5 ; Port 6 Input Pull-Up MOS Extra
bit syscr2 sde 3 ; XBS Host Interface Shutdown Enable
bit syscr2 cs4e 2 ; XBS CS4 Enable
bit syscr2 cs3e 1 ; XBS CS3 Enable
bit syscr2 hi12e 0 ; XBS Host Interface Enable Bit
reg ebr2 0xff83 ; Flash Erase Block Register 2
bit ebr2 eb7 7 ; 0x00e000..0x00ffff
bit ebr2 eb6 6 ; 0x00c000..0x00dfff
bit ebr2 eb5 5 ; 0x008000..0x00bfff
bit ebr2 eb4 4 ; 0x001000..0x007fff
bit ebr2 eb3 3 ; 0x000c00..0x000fff
bit ebr2 eb2 2 ; 0x000800..0x000bff
bit ebr2 eb1 1 ; 0x000400..0x0007ff
bit ebr2 eb0 0 ; 0x000000..0x0003ff
reg sbycr 0xff84 ; Standby Control Register
bit sbycr ssby 7 ; Software Standby
bit sbycr sts2 6 ; Standby Timer Select 2
bit sbycr sts1 5 ; Standby Timer Select 1
bit sbycr sts0 4 ; Standby Timer Select 0
bit sbycr sck2 2 ; System Clock Select 2
bit sbycr sck1 1 ; System Clock Select 1
bit sbycr sck0 0 ; System Clock Select 0
reg lpwrcr 0xff85 ; Low-Power Control Register
bit lpwrcr dton 7 ; Direct Transfer On Flag
bit lpwrcr lson 6 ; Low-Speed On Flag
bit lpwrcr nesel 5 ; Noise Elimination Sampling Frequency Select
bit lpwrcr excle 4 ; Subclock Input Enable
reg mstpcrh 0xff86 ; Module Stop Control Register H
bit mstpcrh mstp15 7 ; -
bit mstpcrh mstp14 6 ; DTC
bit mstpcrh mstp13 5 ; FRT
bit mstpcrh mstp12 4 ; TMR_0, TMR_1
bit mstpcrh mstp11 3 ; PWM, PWMX
bit mstpcrh mstp10 2 ; D/A
bit mstpcrh mstp9 1 ; A/D
bit mstpcrh mstp8 0 ; TMR_X, TMR_Y
reg mstpcrl 0xff87 ; Module Stop Control Register L
bit mstpcrl mstp7 7 ; SCI_0
bit mstpcrl mstp6 6 ; SCI_1
bit mstpcrl mstp5 5 ; SCI_2
bit mstpcrl mstp4 4 ; IIC_0
bit mstpcrl mstp3 3 ; IIC_1
bit mstpcrl mstp2 2 ; XBS, KMIMR, KMIMRA, KMPCR
bit mstpcrl mstp1 1 ; -
bit mstpcrl mstp0 0 ; LPC, WUEMRB
reg smr_1 0xff88 ; SCI_1 Serial Mode Register
bit smr_1 c_a 7 ; Clocked/-Asynchronous Communication Mode
bit smr_1 chr 6 ; Character Length
bit smr_1 pe 5 ; Parity Enable
bit smr_1 o_e 4 ; Odd/-Even Parity Mode
bit smr_1 stop 3 ; Stop Bit Length
bit smr_1 mp 2 ; Multiprocessor Mode
bit smr_1 cks1 1 ; Clock Select 1
bit smr_1 cks0 0 ; Clock Select 0
reg iccr_1 0xff88 ; IIC_1 I²C Bus Control Register
bit iccr_1 ice 7 ; I²C Bus Interface Enable
bit iccr_1 ieic 6 ; I²C Bus Interface Interrupt Enable
bit iccr_1 mst 5 ; Master/Slave Select
bit iccr_1 trs 4 ; Transmit/Receive Select
bit iccr_1 acke 3 ; Acknowledge Bit Decision and Selection
bit iccr_1 bbsy 2 ; Bus Busy
bit iccr_1 iric 1 ; I²C Bus Interface Interrupt Request Flag
bit iccr_1 scp 0 ; Start Condition/Stop Condition Prohibit
reg brr_1 0xff89 ; SCI_1 Bit Rate Register
reg icsr_1 0xff89 ; IIC_1 I²C Bus Status Register
bit icsr_1 estp 7 ; Error Stop Condition Detection Flag
bit icsr_1 stop 6 ; Normal Stop Condition Detection Flag
bit icsr_1 irtr 5 ; Continuous Transfer Interrupt Request Flag
bit icsr_1 aasx 4 ; Second Slave Address Recognition Flag
bit icsr_1 al 3 ; Arbitration Lost Flag
bit icsr_1 aas 2 ; Slave Address Recognition Flag
bit icsr_1 adz 1 ; General Call Address Recognition Flag
bit icsr_1 ackb 0 ; Acknowledge Bit
reg scr_1 0xff8a ; SCI_1 Serial Control Register
bit scr_1 tie 7 ; Transmit Interrupt Enable
bit scr_1 rie 6 ; Receive Interrupt Enable
bit scr_1 te 5 ; Transmit Enable
bit scr_1 re 4 ; Receive Enable
bit scr_1 mpie 3 ; Multiprocessor Interrupt Enable
bit scr_1 teie 2 ; Transmit End Interrupt Enable
bit scr_1 cke1 1 ; Clock Enable 1 (External/-Internal)
bit scr_1 cke0 0 ; Clock Enable 0 (SCK Mode)
reg tdr_1 0xff8b ; SCI_1 Transmit Data Register
reg ssr_1 0xff8c ; SCI_1 Serial Status Register
bit ssr_1 tdre 7 ; Transmit Data Register Empty
bit ssr_1 rdrf 6 ; Receive Data Register Full
bit ssr_1 orer 5 ; Overrun Error
bit ssr_1 fer 4 ; Framing Error
bit ssr_1 per 3 ; Parity Error
bit ssr_1 tend 2 ; Transmit End
bit ssr_1 mpb 1 ; Multiprocessor Bit
bit ssr_1 mpbt 0 ; Multiprocessor Bit Transfer
reg rdr_1 0xff8d ; SCI_1 Receive Data Register
reg scmr_1 0xff8e ; SCI_1 Serial Interface Mode Register
bit scmr_1 sdir 3 ; Data Transfer Direction
bit scmr_1 sinv 2 ; Data Invert
bit scmr_1 smif 0 ; Serial Communication Interface Mode Select
reg icdr_1 0xff8e ; IIC_1 I²C Bus Data Register
reg sarx_1 0xff8e ; IIC_1 I²C Second Slave Address Register
bit sarx_1 svax6 7 ; Second Slave Address 6
bit sarx_1 svax5 6 ; Second Slave Address 5
bit sarx_1 svax4 5 ; Second Slave Address 4
bit sarx_1 svax3 4 ; Second Slave Address 3
bit sarx_1 svax2 3 ; Second Slave Address 2
bit sarx_1 svax1 2 ; Second Slave Address 1
bit sarx_1 svax0 1 ; Second Slave Address 0
bit sarx_1 fsx 0 ; Format Select X
reg icmr_1 0xff8f ; IIC_1 I²C Bus Mode Register
bit icmr_1 mls 7 ; _MSB-First/LSB-First Select
bit icmr_1 wait 6 ; Wait Insertion Bit
bit icmr_1 cks2 5 ; Transfer Clock Select 2
bit icmr_1 cks1 4 ; Transfer Clock Select 1
bit icmr_1 cks0 3 ; Transfer Clock Select 0
bit icmr_1 bc2 2 ; Bit Counter 2
bit icmr_1 bc1 1 ; Bit Counter 1
bit icmr_1 bc0 0 ; Bit Counter 0
reg sar_1 0xff8f ; IIC_1 I²C Slave Address Register
bit sar_1 sva6 7 ; Slave Address 6
bit sar_1 sva5 6 ; Slave Address 5
bit sar_1 sva4 5 ; Slave Address 4
bit sar_1 sva3 4 ; Slave Address 3
bit sar_1 sva2 3 ; Slave Address 2
bit sar_1 sva1 2 ; Slave Address 1
bit sar_1 sva0 1 ; Slave Address 0
bit sar_1 fs 0 ; Format Select
reg tier 0xff90 ; FRT Timer Interrupt Enable Register
bit tier iciae 7 ; Input Capture Interrupt A Enable
bit tier icibe 6 ; Input Capture Interrupt B Enable
bit tier icice 5 ; Input Capture Interrupt C Enable
bit tier icide 4 ; Input Capture Interrupt D Enable
bit tier ociae 3 ; Output Compare Interrupt A Enable
bit tier ocibe 2 ; Output Compare Interrupt B Enable
bit tier ovie 1 ; Timer Overflow Interrupt Enable
reg tcsr 0xff91 ; FRT Timer Control/Status Register
bit tcsr icfa 7 ; Input Capture Flag A
bit tcsr icfb 6 ; Input Capture Flag B
bit tcsr icfc 5 ; Input Capture Flag C
bit tcsr icfd 4 ; Input Capture Flag D
bit tcsr ocfa 3 ; Output Compare Flag A
bit tcsr ocfb 2 ; Output Compare Flag B
bit tcsr ovf 1 ; Timer Overflow
bit tcsr cclra 0 ; Counter Clear A
reg frc 0xff92 ; FRT Free-Running Counter
reg ocra 0xff94 ; FRT Output Compare Register A
reg ocrb 0xff94 ; FRT Output Compare Register B
reg tcr 0xff96 ; FRT Timer Control Register
bit tcr iedga 7 ; Input Edge Select A
bit tcr iedgb 6 ; Input Edge Select B
bit tcr iedgc 5 ; Input Edge Select C
bit tcr iedgd 4 ; Input Edge Select D
bit tcr bufea 3 ; Buffer Enable A
bit tcr bufeb 2 ; Buffer Enable B
bit tcr cks1 1 ; Clock Select 1
bit tcr cks0 0 ; Clock Select 0
reg tocr 0xff97 ; FRT Timer Output Compare Control Register
bit tocr icrdms 7 ; Input Capture D Mode Select
bit tocr ocrams 6 ; Output Compare A Mode Select
bit tocr icrs 5 ; Input Capture Register Select
bit tocr ocrs 4 ; Output Compare Register Select
bit tocr oea 3 ; Output Enable A
bit tocr oeb 2 ; Output Enable B
bit tocr olvla 1 ; Output Level A
bit tocr olvlb 0 ; Output Level B
reg icral 0xff98 ; FRT Input Capture Register A
reg ocrarl 0xff98 ; Output Compare Register AR
reg icrbl 0xff9a ; FRT Input Capture Register B
reg ocrafl 0xff9a ; Output Compare Register AF
reg icrcl 0xff9c ; FRT Input Capture Register C
reg ocrdml 0xff9c ; Output Compare Register DM
reg icrdl 0xff9e ; FRT Input Capture Register D
reg smr_2 0xffa0 ; SCI_2 Serial Mode Register
bit smr_2 c_a 7 ; Clocked/-Asynchronous Communication Mode
bit smr_2 chr 6 ; Character Length
bit smr_2 pe 5 ; Parity Enable
bit smr_2 o_e 4 ; Odd/-Even Parity Mode
bit smr_2 stop 3 ; Stop Bit Length
bit smr_2 mp 2 ; Multiprocessor Mode
bit smr_2 cks1 1 ; Clock Select 1
bit smr_2 cks0 0 ; Clock Select 0
reg dacrx 0xffa0 ; PWMX (D/A) Control Register
bit dacrx test 7 ; Test Mode
bit dacrx pwme 6 ; PWM Enable
bit dacrx oeb 3 ; Output Enable B
bit dacrx oea 2 ; Output Enable A
bit dacrx os 1 ; Output Select
bit dacrx cks 0 ; Clock Select
reg dadra 0xffa0 ; PWMX (D/A) Data Register A
reg brr_2 0xffa1 ; SCI_2 Bit Rate Register
reg scr_2 0xffa2 ; SCI_2 Serial Control Register
bit scr_2 tie 7 ; Transmit Interrupt Enable
bit scr_2 rie 6 ; Receive Interrupt Enable
bit scr_2 te 5 ; Transmit Enable
bit scr_2 re 4 ; Receive Enable
bit scr_2 mpie 3 ; Multiprocessor Interrupt Enable
bit scr_2 teie 2 ; Transmit End Interrupt Enable
bit scr_2 cke1 1 ; Clock Enable 1 (External/-Internal)
bit scr_2 cke0 0 ; Clock Enable 0 (SCK Mode)
reg tdr_2 0xffa3 ; SCI_2 Transmit Data Register
reg ssr_2 0xffa4 ; SCI_2 Serial Status Register
bit ssr_2 tdre 7 ; Transmit Data Register Empty
bit ssr_2 rdrf 6 ; Receive Data Register Full
bit ssr_2 orer 5 ; Overrun Error
bit ssr_2 fer 4 ; Framing Error
bit ssr_2 per 3 ; Parity Error
bit ssr_2 tend 2 ; Transmit End
bit ssr_2 mpb 1 ; Multiprocessor Bit
bit ssr_2 mpbt 0 ; Multiprocessor Bit Transfer
reg rdr_2 0xffa5 ; SCI_2 Receive Data Register
reg scmr_2 0xffa6 ; SCI_2 Serial Interface Mode Register
bit scmr_2 sdir 3 ; Data Transfer Direction
bit scmr_2 sinv 2 ; Data Invert
bit scmr_2 smif 0 ; Serial Communication Interface Mode Select
reg dacnth 0xffa6 ; PWMX (D/A) Counter
reg dadrbh 0xffa6 ; PWMX (D/A) Data Register B
reg wtcsr_0 0xffa8 ; WDT_0 Watchdog Timer Control & Status Register
bit wtcsr_0 ovf 7 ; Overflow Flag
bit wtcsr_0 wt_it 6 ; Timer Mode Select
bit wtcsr_0 tme 5 ; Timer Enable
bit wtcsr_0 rst_nmi 3 ; Reset or NMI
bit wtcsr_0 cks2 2 ; Clock Select 2
bit wtcsr_0 cks1 1 ; Clock Select 1
bit wtcsr_0 cks0 0 ; Clock Select 0
reg wtcnt_0 0xffa9 ; WDT_0 Watchdog Timer Counter
reg paodr 0xffaa ; Port A Output Data Register
pin paodr pa7odr 7 ; Pin PA7/-KIN15/CIN15/PS2CD
pin paodr pa6odr 6 ; Pin PA6/-KIN14/CIN14/PS2CC
pin paodr pa5odr 5 ; Pin PA5/-KIN13/CIN13/PS2BD
pin paodr pa4odr 4 ; Pin PA4/-KIN12/CIN12/PS2BC
pin paodr pa3odr 3 ; Pin PA3/-KIN11/CIN11/PS2AD
pin paodr pa2odr 2 ; Pin PA2/-KIN10/CIN10/PS2AC
pin paodr pa1odr 1 ; Pin PA1/-KIN9/CIN9
pin paodr pa0odr 0 ; Pin PA0/-KIN8/CIN8
reg papin 0xffab ; Port A Input Data Register
pin papin pa7pin 7 ; Pin PA7/-KIN15/CIN15/PS2CD
pin papin pa6pin 6 ; Pin PA6/-KIN14/CIN14/PS2CC
pin papin pa5pin 5 ; Pin PA5/-KIN13/CIN13/PS2BD
pin papin pa4pin 4 ; Pin PA4/-KIN12/CIN12/PS2BC
pin papin pa3pin 3 ; Pin PA3/-KIN11/CIN11/PS2AD
pin papin pa2pin 2 ; Pin PA2/-KIN10/CIN10/PS2AC
pin papin pa1pin 1 ; Pin PA1/-KIN9/CIN9
pin papin pa0pin 0 ; Pin PA0/-KIN8/CIN8
reg paddr 0xffab ; Port A Data Direction Register
pin paddr pa7ddr 7 ; Pin PA7/-KIN15/CIN15/PS2CD
pin paddr pa6ddr 6 ; Pin PA6/-KIN14/CIN14/PS2CC
pin paddr pa5ddr 5 ; Pin PA5/-KIN13/CIN13/PS2BD
pin paddr pa4ddr 4 ; Pin PA4/-KIN12/CIN12/PS2BC
pin paddr pa3ddr 3 ; Pin PA3/-KIN11/CIN11/PS2AD
pin paddr pa2ddr 2 ; Pin PA2/-KIN10/CIN10/PS2AC
pin paddr pa1ddr 1 ; Pin PA1/-KIN9/CIN9
pin paddr pa0ddr 0 ; Pin PA0/-KIN8/CIN8
reg p1pcr 0xffac ; Port 1 Pull-Up MOS Control Register
pin p1pcr p17pcr 7 ; Pin P17/PW7
pin p1pcr p16pcr 6 ; Pin P16/PW6
pin p1pcr p15pcr 5 ; Pin P15/PW5
pin p1pcr p14pcr 4 ; Pin P14/PW4
pin p1pcr p13pcr 3 ; Pin P13/PW3
pin p1pcr p12pcr 2 ; Pin P12/PW2
pin p1pcr p11pcr 1 ; Pin P11/PW1
pin p1pcr p10pcr 0 ; Pin P10/PW0
reg p2pcr 0xffad ; Port 2 Pull-Up MOS Control Register
pin p2pcr p27pcr 7 ; Pin P27/PW15/CBLANK
pin p2pcr p26pcr 6 ; Pin P26/PW14
pin p2pcr p25pcr 5 ; Pin P25/PW13
pin p2pcr p24pcr 4 ; Pin P24/PW12
pin p2pcr p23pcr 3 ; Pin P23/PW11
pin p2pcr p22pcr 2 ; Pin P22/PW10
pin p2pcr p21pcr 1 ; Pin P21/PW9
pin p2pcr p20pcr 0 ; Pin P20/PW8
reg p3pcr 0xffae ; Port 3 Pull-Up MOS Control Register
pin p3pcr p37pcr 7 ; Pin P37/HDB7/SERIRQ
pin p3pcr p36pcr 6 ; Pin P36/HDB6/LCLK
pin p3pcr p35pcr 5 ; Pin P35/HDB5/-LRESET
pin p3pcr p34pcr 4 ; Pin P34/HDB4/-LFRAME
pin p3pcr p33pcr 3 ; Pin P33/HDB3/LAD3
pin p3pcr p32pcr 2 ; Pin P32/HDB2/LAD2
pin p3pcr p31pcr 1 ; Pin P31/HDB1/LAD1
pin p3pcr p30pcr 0 ; Pin P30/HDB0/LAD0
reg p1ddr 0xffb0 ; Port 1 Data Direction Register
pin p1ddr p17ddr 7 ; Pin P17/PW7
pin p1ddr p16ddr 6 ; Pin P16/PW6
pin p1ddr p15ddr 5 ; Pin P15/PW5
pin p1ddr p14ddr 4 ; Pin P14/PW4
pin p1ddr p13ddr 3 ; Pin P13/PW3
pin p1ddr p12ddr 2 ; Pin P12/PW2
pin p1ddr p11ddr 1 ; Pin P11/PW1
pin p1ddr p10ddr 0 ; Pin P10/PW0
reg p2ddr 0xffb1 ; Port 2 Data Direction Register
pin p2ddr p27ddr 7 ; Pin P27/PW15/CBLANK
pin p2ddr p26ddr 6 ; Pin P26/PW14
pin p2ddr p25ddr 5 ; Pin P25/PW13
pin p2ddr p24ddr 4 ; Pin P24/PW12
pin p2ddr p23ddr 3 ; Pin P23/PW11
pin p2ddr p22ddr 2 ; Pin P22/PW10
pin p2ddr p21ddr 1 ; Pin P21/PW9
pin p2ddr p20ddr 0 ; Pin P20/PW8
reg p1dr 0xffb2 ; Port 1 Data Register
pin p1dr p17dr 7 ; Pin P17/PW7
pin p1dr p16dr 6 ; Pin P16/PW6
pin p1dr p15dr 5 ; Pin P15/PW5
pin p1dr p14dr 4 ; Pin P14/PW4
pin p1dr p13dr 3 ; Pin P13/PW3
pin p1dr p12dr 2 ; Pin P12/PW2
pin p1dr p11dr 1 ; Pin P11/PW1
pin p1dr p10dr 0 ; Pin P10/PW0
reg p2dr 0xffb3 ; Port 2 Data Register
pin p2dr p27dr 7 ; Pin P27/PW15/CBLANK
pin p2dr p26dr 6 ; Pin P26/PW14
pin p2dr p25dr 5 ; Pin P25/PW13
pin p2dr p24dr 4 ; Pin P24/PW12
pin p2dr p23dr 3 ; Pin P23/PW11
pin p2dr p22dr 2 ; Pin P22/PW10
pin p2dr p21dr 1 ; Pin P21/PW9
pin p2dr p20dr 0 ; Pin P20/PW8
reg p3ddr 0xffb4 ; Port 3 Data Direction Register
pin p3ddr p37ddr 7 ; Pin P37/HDB7/SERIRQ
pin p3ddr p36ddr 6 ; Pin P36/HDB6/LCLK
pin p3ddr p35ddr 5 ; Pin P35/HDB5/-LRESET
pin p3ddr p34ddr 4 ; Pin P34/HDB4/-LFRAME
pin p3ddr p33ddr 3 ; Pin P33/HDB3/LAD3
pin p3ddr p32ddr 2 ; Pin P32/HDB2/LAD2
pin p3ddr p31ddr 1 ; Pin P31/HDB1/LAD1
pin p3ddr p30ddr 0 ; Pin P30/HDB0/LAD0
reg p4ddr 0xffb5 ; Port 4 Data Direction Register
pin p4ddr p47ddr 7 ; Pin P47/PWX1
pin p4ddr p46ddr 6 ; Pin P46/PWX0
pin p4ddr p45ddr 5 ; Pin P45/TMRI1/HIRQ12/CSYNCI
pin p4ddr p44ddr 4 ; Pin P44/TMO1/HIRQ1/HSYNCO
pin p4ddr p43ddr 3 ; Pin P43/TMCI1/HIRQ11/HSYNCI
pin p4ddr p42ddr 2 ; Pin P42/TMRI0/SCK2/SDA1
pin p4ddr p41ddr 1 ; Pin P41/TMO0/RxD2/IrRxD
pin p4ddr p40ddr 0 ; Pin P40/TMCI0/TxD2/IrTxD
reg p3dr 0xffb6 ; Port 3 Data Register
pin p3dr p37dr 7 ; Pin P37/HDB7/SERIRQ
pin p3dr p36dr 6 ; Pin P36/HDB6/LCLK
pin p3dr p35dr 5 ; Pin P35/HDB5/-LRESET
pin p3dr p34dr 4 ; Pin P34/HDB4/-LFRAME
pin p3dr p33dr 3 ; Pin P33/HDB3/LAD3
pin p3dr p32dr 2 ; Pin P32/HDB2/LAD2
pin p3dr p31dr 1 ; Pin P31/HDB1/LAD1
pin p3dr p30dr 0 ; Pin P30/HDB0/LAD0
reg p4dr 0xffb7 ; Port 4 Data Register
pin p4dr p47dr 7 ; Pin P47/PWX1
pin p4dr p46dr 6 ; Pin P46/PWX0
pin p4dr p45dr 5 ; Pin P45/TMRI1/HIRQ12/CSYNCI
pin p4dr p44dr 4 ; Pin P44/TMO1/HIRQ1/HSYNCO
pin p4dr p43dr 3 ; Pin P43/TMCI1/HIRQ11/HSYNCI
pin p4dr p42dr 2 ; Pin P42/TMRI0/SCK2/SDA1
pin p4dr p41dr 1 ; Pin P41/TMO0/RxD2/IrRxD
pin p4dr p40dr 0 ; Pin P40/TMCI0/TxD2/IrTxD
reg p5ddr 0xffb8 ; Port 5 Data Direction Register
pin p5ddr p57ddr 7 ; -
pin p5ddr p56ddr 6 ; -
pin p5ddr p55ddr 5 ; -
pin p5ddr p54ddr 4 ; -
pin p5ddr p53ddr 3 ; -
pin p5ddr p52ddr 2 ; Pin P52/SCK0/SCL0
pin p5ddr p51ddr 1 ; Pin P51/RxD0
pin p5ddr p50ddr 0 ; Pin P50/TxD0
reg p6ddr 0xffb9 ; Port 6 Data Direction Register
pin p6ddr p67ddr 7 ; Pin P67/-IRQ7/TMOX/-KIN7/CIN7
pin p6ddr p66ddr 6 ; Pin P66/-IRQ6/FTOB/-KIN6/CIN6
pin p6ddr p65ddr 5 ; Pin P65/FTID/-KIN5/CIN5
pin p6ddr p64ddr 4 ; Pin P64/FTIC/-KIN4/CIN4/CLAMPO
pin p6ddr p63ddr 3 ; Pin P63/FTIB/-KIN3/CIN3/VFBACKI
pin p6ddr p62ddr 2 ; Pin P62/FTIA/TMIY/-KIN2/CIN2/VSYNCI
pin p6ddr p61ddr 1 ; Pin P61/FTOA/-KIN1/CIN1/VSYNCO
pin p6ddr p60ddr 0 ; Pin P60/FTCI/TMIX/-KIN0/CIN0/HFBACKI
reg p5dr 0xffba ; Port 5 Data Register
pin p5dr p57dr 7 ; -
pin p5dr p56dr 6 ; -
pin p5dr p55dr 5 ; -
pin p5dr p54dr 4 ; -
pin p5dr p53dr 3 ; -
pin p5dr p52dr 2 ; Pin P52/SCK0/SCL0
pin p5dr p51dr 1 ; Pin P51/RxD0
pin p5dr p50dr 0 ; Pin P50/TxD0
reg p6dr 0xffbb ; Port 6 Data Register
pin p6dr p67dr 7 ; Pin P67/-IRQ7/TMOX/-KIN7/CIN7
pin p6dr p66dr 6 ; Pin P66/-IRQ6/FTOB/-KIN6/CIN6
pin p6dr p65dr 5 ; Pin P65/FTID/-KIN5/CIN5
pin p6dr p64dr 4 ; Pin P64/FTIC/-KIN4/CIN4/CLAMPO
pin p6dr p63dr 3 ; Pin P63/FTIB/-KIN3/CIN3/VFBACKI
pin p6dr p62dr 2 ; Pin P62/FTIA/TMIY/-KIN2/CIN2/VSYNCI
pin p6dr p61dr 1 ; Pin P61/FTOA/-KIN1/CIN1/VSYNCO
pin p6dr p60dr 0 ; Pin P60/FTCI/TMIX/-KIN0/CIN0/HFBACKI
reg pbodr 0xffbc ; Port B Output Data Register
pin pbodr pb7odr 7 ; Pin PB7/-WUE7
pin pbodr pb6odr 6 ; Pin PB6/-WUE6
pin pbodr pb5odr 5 ; Pin PB5/-WUE5
pin pbodr pb4odr 4 ; Pin PB4/-WUE4
pin pbodr pb3odr 3 ; Pin PB3/-WUE3/-CS4
pin pbodr pb2odr 2 ; Pin PB2/-WUE2/-CS3
pin pbodr pb1odr 1 ; Pin PB1/-WUE1/HIRQ4/LSCI
pin pbodr pb0odr 0 ; Pin PB0/-WUE0/HIRQ3/-LSMI
reg pbpin 0xffbd ; Port B Input Data Register
pin pbpin pb7pin 7 ; Pin PB7/-WUE7
pin pbpin pb6pin 6 ; Pin PB6/-WUE6
pin pbpin pb5pin 5 ; Pin PB5/-WUE5
pin pbpin pb4pin 4 ; Pin PB4/-WUE4
pin pbpin pb3pin 3 ; Pin PB3/-WUE3/-CS4
pin pbpin pb2pin 2 ; Pin PB2/-WUE2/-CS3
pin pbpin pb1pin 1 ; Pin PB1/-WUE1/HIRQ4/LSCI
pin pbpin pb0pin 0 ; Pin PB0/-WUE0/HIRQ3/-LSMI
reg p8ddr 0xffbd ; Port 8 Data Direction Register
pin p8ddr p87ddr 7 ; -
pin p8ddr p86ddr 6 ; Pin P86/-IRQ5/SCK1/SCL1
pin p8ddr p85ddr 5 ; Pin P85/-IRQ4/RxD1
pin p8ddr p84ddr 4 ; Pin P84/-IRQ3/TxD1
pin p8ddr p83ddr 3 ; Pin P83/-LPCPD
pin p8ddr p82ddr 2 ; Pin P82/HIFSD/-CLKRUN
pin p8ddr p81ddr 1 ; Pin P81/-CS2/GA20
pin p8ddr p80ddr 0 ; Pin P80/HA0/-PME
reg p7pin 0xffbe ; Port 7 Input Data Register
pin p7pin p77pin 7 ; Pin P77/AN7/DA1
pin p7pin p76pin 6 ; Pin P76/AN6/DA0
pin p7pin p75pin 5 ; Pin P75/AN5
pin p7pin p74pin 4 ; Pin P74/AN4
pin p7pin p73pin 3 ; Pin P73/AN3
pin p7pin p72pin 2 ; Pin P72/AN2
pin p7pin p71pin 1 ; Pin P71/AN1
pin p7pin p70pin 0 ; Pin P70/AN0
reg pbddr 0xffbe ; Port B Data Direction Register
pin pbddr pb7ddr 7 ; Pin PB7/-WUE7
pin pbddr pb6ddr 6 ; Pin PB6/-WUE6
pin pbddr pb5ddr 5 ; Pin PB5/-WUE5
pin pbddr pb4ddr 4 ; Pin PB4/-WUE4
pin pbddr pb3ddr 3 ; Pin PB3/-WUE3/-CS4
pin pbddr pb2ddr 2 ; Pin PB2/-WUE2/-CS3
pin pbddr pb1ddr 1 ; Pin PB1/-WUE1/HIRQ4/LSCI
pin pbddr pb0ddr 0 ; Pin PB0/-WUE0/HIRQ3/-LSMI
reg p8dr 0xffbf ; Port 8 Data Register
pin p8dr p87dr 7 ; -
pin p8dr p86dr 6 ; Pin P86/-IRQ5/SCK1/SCL1
pin p8dr p85dr 5 ; Pin P85/-IRQ4/RxD1
pin p8dr p84dr 4 ; Pin P84/-IRQ3/TxD1
pin p8dr p83dr 3 ; Pin P83/-LPCPD
pin p8dr p82dr 2 ; Pin P82/HIFSD/-CLKRUN
pin p8dr p81dr 1 ; Pin P81/-CS2/GA20
pin p8dr p80dr 0 ; Pin P80/HA0/-PME
reg p9ddr 0xffc0 ; Port 9 Data Direction Register
pin p9ddr p97ddr 7 ; Pin P97/SDA0
pin p9ddr p96ddr 6 ; Pin P96/PHI/EXCL
pin p9ddr p95ddr 5 ; Pin P95/-CS1
pin p9ddr p94ddr 4 ; Pin P94/-IOW
pin p9ddr p93ddr 3 ; Pin P93/-IOR
pin p9ddr p92ddr 2 ; Pin P92/-IRQ0
pin p9ddr p91ddr 1 ; Pin P91/-IRQ1
pin p9ddr p90ddr 0 ; Pin P90/-IRQ2/-ADTRG/-ECS2
reg p9dr 0xffc1 ; Port 9 Data Register
pin p9dr p97dr 7 ; Pin P97/SDA0
pin p9dr p96dr 6 ; Pin P96/PHI/EXCL
pin p9dr p95dr 5 ; Pin P95/-CS1
pin p9dr p94dr 4 ; Pin P94/-IOW
pin p9dr p93dr 3 ; Pin P93/-IOR
pin p9dr p92dr 2 ; Pin P92/-IRQ0
pin p9dr p91dr 1 ; Pin P91/-IRQ1
pin p9dr p90dr 0 ; Pin P90/-IRQ2/-ADTRG/-ECS2
reg ier 0xffc2 ; Interrupt Enable Register
bit ier irq7e 7 ; IRQ7 Enable
bit ier irq6e 6 ; IRQ6 Enable
bit ier irq5e 5 ; IRQ5 Enable
bit ier irq4e 4 ; IRQ4 Enable
bit ier irq3e 3 ; IRQ3 Enable
bit ier irq2e 2 ; IRQ2 Enable
bit ier irq1e 1 ; IRQ1 Enable
bit ier irq0e 0 ; IRQ0 Enable
reg stcr 0xffc3 ; Serial Timer Control Register
bit stcr iics 7 ; I²C Extra Buffer Select
bit stcr iicx1 6 ; I²C Transfer Rate Select 1
bit stcr iicx0 5 ; I²C Transfer Rate Select 0
bit stcr iice 4 ; I²C Master Enable
bit stcr flshe 3 ; Flash Memory Control Register Enable
bit stcr icks1 1 ; Internal Clock Source Select 1
bit stcr icks0 0 ; Internal Clock Source Select 0
reg syscr 0xffc4 ; System Control Register
bit syscr cs2e 7 ; Chip Select 2 Enable
bit syscr iose 6 ; IOS Enable
bit syscr intm1 5 ; Interrupt Control Mode 1
bit syscr intm0 4 ; Interrupt Control Mode 0
bit syscr xrst 3 ; External Reset
bit syscr nmieg 2 ; NMI Edge Select
bit syscr hie 1 ; XBR Host Interface Enable
bit syscr rame 0 ; RAM Enable
reg mdcr 0xffc5 ; Mode Control Register
bit mdcr expe 7 ; Extended Mode Enable
bit mdcr mds1 1 ; Mode Select 1
bit mdcr mds0 0 ; Mode Select 0
reg bcr 0xffc6 ; Bus Control Register
bit bcr icis0 6 ; Idle Cycle Insertion
bit bcr brstrm 5 ; Burst ROM Enable
bit bcr brsts1 4 ; Burst Cycle Select 1
bit bcr brsts0 3 ; Burst Cycle Select 0
bit bcr ios1 1 ; IOS Select 1
bit bcr ios0 0 ; IOS Select 0
reg wscr 0xffc7 ; Wait State Control Register
bit wscr abw 5 ; Bus Width Control
bit wscr ast 4 ; Access State Control
bit wscr wms1 3 ; Wait Mode Select 1
bit wscr wms0 2 ; Wait Mode Select 0
bit wscr wc1 1 ; Wait Count 1
bit wscr wc0 0 ; Wait Count 0
reg tcr_0 0xffc8 ; TMR_0 Timer Control Register
bit tcr_0 cmieb 7 ; Compare-Match Interrupt Enable B
bit tcr_0 cmiea 6 ; Compare-Match Interrupt Enable A
bit tcr_0 ovie 5 ; Timer Overflow Interrupt Enable
bit tcr_0 cclr1 4 ; Counter Clear 1
bit tcr_0 cclr0 3 ; Counter Clear 0
bit tcr_0 cks2 2 ; Clock Select 2
bit tcr_0 cks1 1 ; Clock Select 1
bit tcr_0 cks0 0 ; Clock Select 0
reg tcr_1 0xffc9 ; TMR_1 Timer Control Register
bit tcr_1 cmieb 7 ; Compare-Match Interrupt Enable B
bit tcr_1 cmiea 6 ; Compare-Match Interrupt Enable A
bit tcr_1 ovie 5 ; Timer Overflow Interrupt Enable
bit tcr_1 cclr1 4 ; Counter Clear 1
bit tcr_1 cclr0 3 ; Counter Clear 0
bit tcr_1 cks2 2 ; Clock Select 2
bit tcr_1 cks1 1 ; Clock Select 1
bit tcr_1 cks0 0 ; Clock Select 0
reg tcsr_0 0xffca ; TMR_0 Timer Control/Status Register
bit tcsr_0 cmfb 7 ; Compare-Match Flag B
bit tcsr_0 cmfa 6 ; Compare-Match Flag A
bit tcsr_0 ovf 5 ; Timer Overflow Flag
bit tcsr_0 adte 4 ; A/D Trigger Enable
bit tcsr_0 os3 3 ; Output Select 3
bit tcsr_0 os2 2 ; Output Select 2
bit tcsr_0 os1 1 ; Output Select 1
bit tcsr_0 os0 0 ; Output Select 0
reg tcsr_1 0xffcb ; TMR_1 Timer Control/Status Register
bit tcsr_1 cmfb 7 ; Compare-Match Flag B
bit tcsr_1 cmfa 6 ; Compare-Match Flag A
bit tcsr_1 ovf 5 ; Timer Overflow Flag
bit tcsr_1 os3 3 ; Output Select 3
bit tcsr_1 os2 2 ; Output Select 2
bit tcsr_1 os1 1 ; Output Select 1
bit tcsr_1 os0 0 ; Output Select 0
reg tcora_0 0xffcc ; TMR_0 Time Constant Register A
reg tcora_1 0xffcd ; TMR_1 Time Constant Register A
reg tcorb_0 0xffce ; TMR_0 Time Constant Register B
reg tcorb_1 0xffcf ; TMR_1 Time Constant Register B
reg tcnt_0 0xffd0 ; TMR_0 Timer Counter
reg tcnt_1 0xffd1 ; TMR_1 Timer Counter
reg pwoerb 0xffd2 ; PWM Output Enable Register B
bit pwoerb oe15 7 ; Output Enable 15
bit pwoerb oe14 6 ; Output Enable 14
bit pwoerb oe13 5 ; Output Enable 13
bit pwoerb oe12 4 ; Output Enable 12
bit pwoerb oe11 3 ; Output Enable 11
bit pwoerb oe10 2 ; Output Enable 10
bit pwoerb oe9 1 ; Output Enable 9
bit pwoerb oe8 0 ; Output Enable 8
reg pwoera 0xffd3 ; PWM Output Enable Register A
bit pwoera oe7 7 ; Output Enable 7
bit pwoera oe6 6 ; Output Enable 6
bit pwoera oe5 5 ; Output Enable 5
bit pwoera oe4 4 ; Output Enable 4
bit pwoera oe3 3 ; Output Enable 3
bit pwoera oe2 2 ; Output Enable 2
bit pwoera oe1 1 ; Output Enable 1
bit pwoera oe0 0 ; Output Enable 0
reg pwdprb 0xffd4 ; PWM Data Polarity Register B
bit pwdprb os15 7 ; Output Select 15
bit pwdprb os14 6 ; Output Select 14
bit pwdprb os13 5 ; Output Select 13
bit pwdprb os12 4 ; Output Select 12
bit pwdprb os11 3 ; Output Select 11
bit pwdprb os10 2 ; Output Select 10
bit pwdprb os9 1 ; Output Select 9
bit pwdprb os8 0 ; Output Select 8
reg pwdpra 0xffd5 ; PWM Data Polarity Register A
bit pwdpra os7 7 ; Output Select 7
bit pwdpra os6 6 ; Output Select 6
bit pwdpra os5 5 ; Output Select 5
bit pwdpra os4 4 ; Output Select 4
bit pwdpra os3 3 ; Output Select 3
bit pwdpra os2 2 ; Output Select 2
bit pwdpra os1 1 ; Output Select 1
bit pwdpra os0 0 ; Output Select 0
reg pwsl 0xffd6 ; PWM Register Select
bit pwsl pwcke 7 ; PWM Clock Enable
bit pwsl pwcks 6 ; PWM Clock Select
bit pwsl rs3 3 ; Register Select 3
bit pwsl rs2 2 ; Register Select 2
bit pwsl rs1 1 ; Register Select 1
bit pwsl rs0 0 ; Register Select 0
reg pwdr 0xffd7 ; PWM Data Registers PWDR0..PWDR15
reg smr_0 0xffd8 ; SCI_0 Serial Mode Register
bit smr_0 c_a 7 ; Clocked/-Asynchronous Communication Mode
bit smr_0 chr 6 ; Character Length
bit smr_0 pe 5 ; Parity Enable
bit smr_0 o_e 4 ; Odd/-Even Parity Mode
bit smr_0 stop 3 ; Stop Bit Length
bit smr_0 mp 2 ; Multiprocessor Mode
bit smr_0 cks1 1 ; Clock Select 1
bit smr_0 cks0 0 ; Clock Select 0
reg iccr_0 0xffd8 ; IIC_0 I²C Bus Control Register
bit iccr_0 ice 7 ; I²C Bus Interface Enable
bit iccr_0 ieic 6 ; I²C Bus Interface Interrupt Enable
bit iccr_0 mst 5 ; Master/Slave Select
bit iccr_0 trs 4 ; Transmit/Receive Select
bit iccr_0 acke 3 ; Acknowledge Bit Decision and Selection
bit iccr_0 bbsy 2 ; Bus Busy
bit iccr_0 iric 1 ; I²C Bus Interface Interrupt Request Flag
bit iccr_0 scp 0 ; Start Condition/Stop Condition Prohibit
reg brr_0 0xffd9 ; SCI_0 Bit Rate Register
reg icsr_0 0xffd9 ; IIC_0 I²C Bus Status Register
bit icsr_0 estp 7 ; Error Stop Condition Detection Flag
bit icsr_0 stop 6 ; Normal Stop Condition Detection Flag
bit icsr_0 irtr 5 ; Continuous Transfer Interrupt Request Flag
bit icsr_0 aasx 4 ; Second Slave Address Recognition Flag
bit icsr_0 al 3 ; Arbitration Lost Flag
bit icsr_0 aas 2 ; Slave Address Recognition Flag
bit icsr_0 adz 1 ; General Call Address Recognition Flag
bit icsr_0 ackb 0 ; Acknowledge Bit
reg scr_0 0xffda ; SCI_0 Serial Control Register
bit scr_0 tie 7 ; Transmit Interrupt Enable
bit scr_0 rie 6 ; Receive Interrupt Enable
bit scr_0 te 5 ; Transmit Enable
bit scr_0 re 4 ; Receive Enable
bit scr_0 mpie 3 ; Multiprocessor Interrupt Enable
bit scr_0 teie 2 ; Transmit End Interrupt Enable
bit scr_0 cke1 1 ; Clock Enable 1 (External/-Internal)
bit scr_0 cke0 0 ; Clock Enable 0 (SCK Mode)
reg tdr_0 0xffdb ; SCI_0 Transmit Data Register
reg ssr_0 0xffdc ; SCI_0 Serial Status Register
bit ssr_0 tdre 7 ; Transmit Data Register Empty
bit ssr_0 rdrf 6 ; Receive Data Register Full
bit ssr_0 orer 5 ; Overrun Error
bit ssr_0 fer 4 ; Framing Error
bit ssr_0 per 3 ; Parity Error
bit ssr_0 tend 2 ; Transmit End
bit ssr_0 mpb 1 ; Multiprocessor Bit
bit ssr_0 mpbt 0 ; Multiprocessor Bit Transfer
reg rdr_0 0xffdd ; SCI_0 Receive Data Register
reg scmr_0 0xffde ; SCI_0 Serial Interface Mode Register
bit scmr_0 sdir 3 ; Data Transfer Direction
bit scmr_0 sinv 2 ; Data Invert
bit scmr_0 smif 0 ; Serial Communication Interface Mode Select
reg icdr_0 0xffde ; IIC_0 I²C Bus Data Register
reg sarx_0 0xffde ; IIC_0 I²C Second Slave Address Register
bit sarx_0 svax6 7 ; Second Slave Address 6
bit sarx_0 svax5 6 ; Second Slave Address 5
bit sarx_0 svax4 5 ; Second Slave Address 4
bit sarx_0 svax3 4 ; Second Slave Address 3
bit sarx_0 svax2 3 ; Second Slave Address 2
bit sarx_0 svax1 2 ; Second Slave Address 1
bit sarx_0 svax0 1 ; Second Slave Address 0
bit sarx_0 fsx 0 ; Format Select X
reg icmr_0 0xffdf ; IIC_0 I²C Bus Mode Register
bit icmr_0 mls 7 ; -MSB-First/LSB-First Select
bit icmr_0 wait 6 ; Wait Insertion Bit
bit icmr_0 cks2 5 ; Transfer Clock Select 2
bit icmr_0 cks1 4 ; Transfer Clock Select 1
bit icmr_0 cks0 3 ; Transfer Clock Select 0
bit icmr_0 bc2 2 ; Bit Counter 2
bit icmr_0 bc1 1 ; Bit Counter 1
bit icmr_0 bc0 0 ; Bit Counter 0
reg sar_0 0xffdf ; IIC_0 I²C Slave Address Register
bit sar_0 sva6 7 ; Slave Address 6
bit sar_0 sva5 6 ; Slave Address 5
bit sar_0 sva4 5 ; Slave Address 4
bit sar_0 sva3 4 ; Slave Address 3
bit sar_0 sva2 3 ; Slave Address 2
bit sar_0 sva1 2 ; Slave Address 1
bit sar_0 sva0 1 ; Slave Address 0
bit sar_0 fs 0 ; Format Select
reg addrah 0xffe0 ; A/D Data Register AH
reg addral 0xffe1 ; A/D Data Register AL
reg addrbh 0xffe2 ; A/D Data Register BH
reg addrbl 0xffe3 ; A/D Data Register BL
reg addrch 0xffe4 ; A/D Data Register CH
reg addrcl 0xffe5 ; A/D Data Register CL
reg addrdh 0xffe6 ; A/D Data Register DH
reg addrdl 0xffe7 ; A/D Data Register DL
reg adcsr 0xffe8 ; A/D Control/Status Register
bit adcsr adf 7 ; A/D End Flag
bit adcsr adie 6 ; A/D Interrupt Enable
bit adcsr adst 5 ; A/D Start
bit adcsr scan 4 ; Scan Mode
bit adcsr cks 3 ; Clock Select
bit adcsr ch2 2 ; Channel Select 2
bit adcsr ch1 1 ; Channel Select 1
bit adcsr ch0 0 ; Channel Select 0
reg adcr 0xffe9 ; A/D Control Register
bit adcr trgs1 7 ; Timer Trigger Select 1
bit adcr trgs0 6 ; Timer Trigger Select 0
reg wtcsr_1 0xffea ; WDT_1 Watchdog Timer Control & Status Register
bit wtcsr_1 ovf 7 ; Overflow Flag
bit wtcsr_1 wt_it 6 ; Timer Mode Select
bit wtcsr_1 tme 5 ; Timer Enable
bit wtcsr_1 pss 4 ; Prescaler Select
bit wtcsr_1 rst_nmi 3 ; Reset or NMI
bit wtcsr_1 cks2 2 ; Clock Select 2
bit wtcsr_1 cks1 1 ; Clock Select 1
bit wtcsr_1 cks0 0 ; Clock Select 0
reg wtcnt_1 0xffeb ; WDT_1 Watchdog Timer Counter
reg hicr 0xfff0 ; XBS Host Interface Control Register
bit hicr ibfie2 2 ; Input Data Register Full Interrupt Enable 2
bit hicr ibfie1 1 ; Input Data Register Full Interrupt Enable 1
bit hicr fga20e 0 ; Fast A20 Gate Function Enable
reg tcr_x 0xfff0 ; TMR_X Timer Control Register
bit tcr_x cmieb 7 ; Compare-Match Interrupt Enable B
bit tcr_x cmiea 6 ; Compare-Match Interrupt Enable A
bit tcr_x ovie 5 ; Timer Overflow Interrupt Enable
bit tcr_x cclr1 4 ; Counter Clear 1
bit tcr_x cclr0 3 ; Counter Clear 0
bit tcr_x cks2 2 ; Clock Select 2
bit tcr_x cks1 1 ; Clock Select 1
bit tcr_x cks0 0 ; Clock Select 0
reg tcr_y 0xfff0 ; TMR_Y Timer Control Register
bit tcr_y cmieb 7 ; Compare-Match Interrupt Enable B
bit tcr_y cmiea 6 ; Compare-Match Interrupt Enable A
bit tcr_y ovie 5 ; Timer Overflow Interrupt Enable
bit tcr_y cclr1 4 ; Counter Clear 1
bit tcr_y cclr0 3 ; Counter Clear 0
bit tcr_y cks2 2 ; Clock Select 2
bit tcr_y cks1 1 ; Clock Select 1
bit tcr_y cks0 0 ; Clock Select 0
reg kmimr 0xfff1 ; Keyboard Matrix Interrupt Mask Register L
bit kmimr kmimr7 7 ; -KIN7 Enable
bit kmimr kmimr6 6 ; -KIN6 Enable
bit kmimr kmimr5 5 ; -KIN5 Enable
bit kmimr kmimr4 4 ; -KIN4 Enable
bit kmimr kmimr3 3 ; -KIN3 Enable
bit kmimr kmimr2 2 ; -KIN2 Enable
bit kmimr kmimr1 1 ; -KIN1 Enable
bit kmimr kmimr0 0 ; -KIN0 Enable
reg tcsr_x 0xfff1 ; TMR_X Timer Control/Status Registers
bit tcsr_x cmfb 7 ; Compare-Match Flag B
bit tcsr_x cmfa 6 ; Compare-Match Flag A
bit tcsr_x ovf 5 ; Timer Overflow Flag
bit tcsr_x icf 4 ; Input Capture Flag
bit tcsr_x os3 3 ; Output Select 3
bit tcsr_x os2 2 ; Output Select 2
bit tcsr_x os1 1 ; Output Select 1
bit tcsr_x os0 0 ; Output Select 0
reg tcsr_y 0xfff1 ; TMR_Y Timer Control/Status Registers
bit tcsr_y cmfb 7 ; Compare-Match Flag B
bit tcsr_y cmfa 6 ; Compare-Match Flag A
bit tcsr_y ovf 5 ; Timer Overflow Flag
bit tcsr_y icie 4 ; Input Capture Interrupt Enable
bit tcsr_y os3 3 ; Output Select 3
bit tcsr_y os2 2 ; Output Select 2
bit tcsr_y os1 1 ; Output Select 1
bit tcsr_y os0 0 ; Output Select 0
reg kmpcr 0xfff2 ; Port 6 Pull-Up MOS Control Register
pin kmpcr km7pcr 7 ; Pin P67/-IRQ7/TMOX/-KIN7/CIN7
pin kmpcr km6pcr 6 ; Pin P66/-IRQ6/FTOB/-KIN6/CIN6
pin kmpcr km5pcr 5 ; Pin P65/FTID/-KIN5/CIN5
pin kmpcr km4pcr 4 ; Pin P64/FTIC/-KIN4/CIN4/CLAMPO
pin kmpcr km3pcr 3 ; Pin P63/FTIB/-KIN3/CIN3/VFBACKI
pin kmpcr km2pcr 2 ; Pin P62/FTIA/TMIY/-KIN2/CIN2/VSYNCI
pin kmpcr km1pcr 1 ; Pin P61/FTOA/-KIN1/CIN1/VSYNCO
pin kmpcr km0pcr 0 ; Pin P60/FTCI/TMIX/-KIN0/CIN0/HFBACKI
reg ticrr 0xfff2 ; TMR_X Input Capture Register R
reg tcora_y 0xfff2 ; TMR_Y Time Constant Register A
reg kmimra 0xfff3 ; Keyboard Matrix Interrupt Mask Register H
bit kmimra kmimr15 7 ; -KIN15 Enable
bit kmimra kmimr14 6 ; -KIN14 Enable
bit kmimra kmimr13 5 ; -KIN13 Enable
bit kmimra kmimr12 4 ; -KIN12 Enable
bit kmimra kmimr11 3 ; -KIN11 Enable
bit kmimra kmimr10 2 ; -KIN10 Enable
bit kmimra kmimr9 1 ; -KIN9 Enable
bit kmimra kmimr8 0 ; -KIN8 Enable
reg ticrf 0xfff3 ; TMR_X Input Capture Register F
reg tcorb_y 0xfff3 ; TMR_Y Time Constant Register B
reg idr_1 0xfff4 ; XBS Input Data Register 1
reg tcnt_x 0xfff4 ; TMR_X Timer Counter
reg tcnt_y 0xfff4 ; TMR_Y Timer Counter
reg odr_1 0xfff5 ; XBS Output Data Register 1
reg tcorc 0xfff5 ; TMR_X Time Constant Register C
reg tisr 0xfff5 ; TMR_Y Timer Input Select Register
bit tisr is 0 ; Input Select
reg str_1 0xfff6 ; XBS Status Register 1
bit str_1 dbu17 7 ; Defined By User
bit str_1 dbu16 6 ; Defined By User
bit str_1 dbu15 5 ; Defined By User
bit str_1 dbu14 4 ; Defined By User
bit str_1 c_d1 3 ; Command/-Data
bit str_1 dbu12 2 ; Defined By User
bit str_1 ibf1 1 ; Input Buffer Full
bit str_1 obf1 0 ; Output Buffer Full
reg tcora_x 0xfff6 ; TMR_X Time Constant Register A
reg tcorb_x 0xfff7 ; TMR_X Time Constant Register B
reg dadr0 0xfff8 ; D/A Data Register 0
reg dadr1 0xfff9 ; D/A Data Register 1
reg dacr 0xfffa ; D/A Control Register
bit dacr daoe1 7 ; D/A Output Enable 1
bit dacr daoe0 6 ; D/A Output Enable 0
bit dacr dae 5 ; D/A Enable
reg idr_2 0xfffc ; XBS Input Data Register 2
reg tconri 0xfffc ; Timer Connection Register I
bit tconri simod1 7 ; Input Synchronization Mode Select 1
bit tconri simod0 6 ; Input Synchronization Mode Select 0
bit tconri scone 5 ; Synchronization Signal Connection Enable
bit tconri icst 4 ; Input Capture Start Bit
bit tconri hfinv 3 ; Input Spare Horizontal Synchronization Signal Inversion
bit tconri vfinv 2 ; Input Spare Vertical Synchronization Signal Inversion
bit tconri hiinv 1 ; Input Horizontal & Composite Synchronization Signal Inversion
bit tconri viinv 0 ; Input Vertical Synchronization Signal Inversion
reg odr_2 0xfffd ; XBS Output Data Register 2
reg tconro 0xfffd ; Timer Connection Register O
bit tconro hoe 7 ; Horizontal Synchronization Signal Output Enable
bit tconro voe 6 ; Vertical Synchronization Signal Output Enable
bit tconro cloe 5 ; Clamp Waveform Output Enable
bit tconro cboe 4 ; Blanking Waveform Output Enable
bit tconro hoinv 3 ; Output Horizontal Synchronization Signal Inversion
bit tconro voinv 2 ; Output Vertical Synchronization Signal Inversion
bit tconro cloinv 1 ; Output Clamp Waveform Signal Inversion
bit tconro cboinv 0 ; Output Blanking Waveform Signal Inversion
reg str_2 0xfffe ; XBS Status Register 2
bit str_2 dbu27 7 ; Defined By User
bit str_2 dbu26 6 ; Defined By User
bit str_2 dbu25 5 ; Defined By User
bit str_2 dbu24 4 ; Defined By User
bit str_2 c_d2 3 ; Command/-Data
bit str_2 dbu22 2 ; Defined By User
bit str_2 ibf2 1 ; Input Buffer Full
bit str_2 obf2 0 ; Output Buffer Full
reg tconrs 0xfffe ; Timer Connection Register S
bit tconrs tmrx_y 7 ; TMR_X/TMR_Y Access Select
bit tconrs isgene 6 ; Internal Synchronization Signal
bit tconrs homod1 5 ; Horizontal Synchronization Output Mode Select 1
bit tconrs homod0 4 ; Horizontal Synchronization Output Mode Select 0
bit tconrs vomod1 3 ; Vertical Synchronization Output Mode Select 1
bit tconrs vomod0 2 ; Vertical Synchronization Output Mode Select 0
bit tconrs clmod1 1 ; Clamp Waveform Mode Select 1
bit tconrs clmod0 0 ; Clamp Waveform Mode Select 0
reg sedgr 0xffff ; Timer Edge Sense Register
bit sedgr vedg 7 ; VSYNCI Edge
bit sedgr hedg 6 ; HSYNCI Edge
bit sedgr cedg 5 ; CSYNCI Edge
bit sedgr hfedg 4 ; HFBACKI Edge
bit sedgr vfedg 3 ; VFBACKI Edge
bit sedgr preqf 2 ; Pre-Equalization Flag
bit sedgr ihi 1 ; IHI Signal Level
bit sedgr ivi 0 ; IVI Signal Level
.purgem reg
.purgem bit
.purgem pin
.list