2018-06-30 08:00:35 +00:00
|
|
|
; AUTO-GENERATED SYMBOL LIST
|
|
|
|
; IMPORTS:
|
|
|
|
; NKScreenConsole
|
|
|
|
; ScreenConsole_putchar
|
|
|
|
; ScreenConsole_redraw
|
|
|
|
; EXPORTS:
|
|
|
|
; getchar (=> NKThud, NKTimers)
|
|
|
|
; print_unknown (=> NKThud)
|
|
|
|
; printb (=> NKInit, NKMPCalls, NKTimers)
|
|
|
|
; printc (=> NKInit, NKPoolAllocator, NKThud)
|
|
|
|
; printd (=> NKInit, NKMPCalls, NKPoolAllocator, NKTimers)
|
|
|
|
; printh (=> NKBuiltinInit, NKMPCalls, NKReplacementInit, NKScheduler, NKThud, NKTimers)
|
|
|
|
; prints (=> NKMPCalls, NKThud)
|
2018-07-02 16:12:09 +00:00
|
|
|
; printw (=> NKAddressSpaces, NKExceptions, NKInit, NKIntHandlers, NKIntMisc, NKMPCalls, NKPaging, NKPoolAllocator, NKReplacementInit, NKScheduler, NKThud, NKTimers)
|
2018-06-30 08:00:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2017-11-19 04:11:07 +00:00
|
|
|
; prints
|
|
|
|
|
|
|
|
; _log null-terminated string with a few special escapes.
|
|
|
|
; Not done figuring this out, with the serial and stuff.
|
|
|
|
|
|
|
|
prints ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
lwz r1, -0x0004(r1)
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r28, PSA.NoIdeaR23(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
lwz r29, 0x0edc(r1)
|
|
|
|
|
|
|
|
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
cmpwi cr7, r28, 0x00
|
|
|
|
andi. r29, r29, 0x02
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, prints_skip_serial
|
2017-11-19 04:11:07 +00:00
|
|
|
crmove 30, 2
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_skip_serial
|
2017-11-19 04:11:07 +00:00
|
|
|
mfmsr r31
|
|
|
|
bl serial_io
|
|
|
|
bl serial_flush
|
|
|
|
|
|
|
|
prints_skip_serial
|
|
|
|
addi r8, r8, -0x01
|
|
|
|
|
|
|
|
prints_next_char
|
|
|
|
bl serial_busywait
|
|
|
|
lbzu r29, 0x0001(r8)
|
|
|
|
cmpwi r29, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_common
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, 10
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_newline
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, 13
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_newline
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, '\\'
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_escape_code
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, '^'
|
2018-04-15 07:05:02 +00:00
|
|
|
bne PrintS_normal_char
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
prints_escape_code
|
|
|
|
lbzu r29, 0x0001(r8)
|
|
|
|
cmpwi r29, 'n'
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_newline
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, 'r'
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_newline
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi r29, 'b'
|
2018-04-15 07:05:02 +00:00
|
|
|
bne PrintS_literal_backslash_or_caret
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x07
|
|
|
|
b PrintS_normal_char
|
|
|
|
|
|
|
|
prints_literal_backslash_or_caret
|
|
|
|
lbzu r29, -0x0001(r8)
|
|
|
|
addi r8, r8, 0x01
|
|
|
|
|
|
|
|
prints_normal_char
|
|
|
|
mr r24, r29
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, prints_0xe4
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
stb r24, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
prints_0xe4
|
|
|
|
b PrintS_next_char
|
|
|
|
|
|
|
|
prints_newline
|
|
|
|
li r29, 0x0d
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
|
|
|
li r29, 0x0a
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_redraw
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, prints_0x13c
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
li r29, 0x0d
|
|
|
|
stb r29, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
|
|
|
|
prints_0x118
|
|
|
|
lbz r29, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r29, r29, 0x04
|
2018-04-15 07:05:02 +00:00
|
|
|
beq PrintS_0x118
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0a
|
|
|
|
stb r29, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
prints_0x13c
|
|
|
|
b PrintS_next_char
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_common ; OUTSIDE REFERER
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, print_common_0x8c
|
2017-11-19 04:11:07 +00:00
|
|
|
mtmsr r31
|
|
|
|
isync
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r29, PSA.DecClockRateHzCopy(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
srwi r29, r29, 8
|
|
|
|
mfspr r30, dec
|
|
|
|
subf r29, r29, r30
|
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
|
|
|
|
print_common_0x28
|
|
|
|
mfspr r30, dec
|
|
|
|
subf. r30, r29, r30
|
2018-04-15 07:05:02 +00:00
|
|
|
ble print_common_0x50
|
2017-11-19 04:11:07 +00:00
|
|
|
li r30, 0x01
|
|
|
|
stb r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_common_0x28
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
print_common_0x50
|
|
|
|
sync
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
mfspr r30, pvr
|
|
|
|
rlwinm. r30, r30, 0, 0, 14
|
|
|
|
li r31, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_common_0x78
|
2017-11-19 04:11:07 +00:00
|
|
|
mtspr dbat3u, r31
|
|
|
|
mtspr dbat3l, r31
|
|
|
|
b print_common_0x80
|
|
|
|
|
|
|
|
print_common_0x78
|
|
|
|
mtspr ibat3l, r31
|
|
|
|
mtspr ibat3u, r31
|
|
|
|
|
|
|
|
print_common_0x80
|
|
|
|
isync
|
|
|
|
mtspr srr0, r26
|
|
|
|
mtspr srr1, r27
|
|
|
|
|
|
|
|
print_common_0x8c
|
2017-12-12 07:54:19 +00:00
|
|
|
_AssertAndRelease PSA.DbugLock, scratch=r30
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; print_return
|
|
|
|
|
|
|
|
; Restores registers from EWA and returns.
|
|
|
|
|
|
|
|
print_return ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
lwz r24, -0x0110(r1)
|
|
|
|
lwz r25, -0x010c(r1)
|
|
|
|
mtlr r24
|
|
|
|
mtcr r25
|
|
|
|
lmw r24, -0x0108(r1)
|
|
|
|
lwz r1, -0x0004(r1)
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; printd
|
|
|
|
|
|
|
|
; _log decimal
|
|
|
|
|
|
|
|
printd ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
lwz r1, -0x0004(r1)
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r28, PSA.NoIdeaR23(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
lwz r29, 0x0edc(r1)
|
|
|
|
|
|
|
|
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
cmpwi cr7, r28, 0x00
|
|
|
|
andi. r29, r29, 0x02
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, printd_0x58
|
2017-11-19 04:11:07 +00:00
|
|
|
crmove 30, 2
|
2018-04-15 07:05:02 +00:00
|
|
|
beq Printd_0x58
|
2017-11-19 04:11:07 +00:00
|
|
|
bl serial_io
|
|
|
|
bl serial_flush
|
|
|
|
|
|
|
|
printd_0x58
|
|
|
|
cmpwi r8, 0x00
|
|
|
|
li r25, 0x2d
|
2018-04-15 07:05:02 +00:00
|
|
|
blt Printd_0x9c
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
printd_0x64
|
|
|
|
mr. r24, r8
|
|
|
|
li r25, 0x30
|
2018-04-15 07:05:02 +00:00
|
|
|
beq Printd_0x9c
|
2017-11-19 04:11:07 +00:00
|
|
|
lis r24, 0x3b9a
|
|
|
|
ori r24, r24, 0xca00
|
|
|
|
|
|
|
|
printd_0x78
|
|
|
|
divw. r25, r8, r24
|
2018-04-15 07:05:02 +00:00
|
|
|
bne Printd_0x8c
|
2017-11-19 04:11:07 +00:00
|
|
|
li r25, 0x0a
|
|
|
|
divw r24, r24, r25
|
|
|
|
b Printd_0x78
|
|
|
|
|
|
|
|
printd_0x8c
|
|
|
|
divw r29, r8, r24
|
|
|
|
addi r25, r29, 0x30
|
|
|
|
mullw r29, r29, r24
|
|
|
|
subf r8, r29, r8
|
|
|
|
|
|
|
|
printd_0x9c
|
|
|
|
bl serial_busywait
|
|
|
|
mr r29, r25
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, printd_0xc8
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
stb r25, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
printd_0xc8
|
|
|
|
cmpwi r8, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
bge Printd_0xd8
|
2017-11-19 04:11:07 +00:00
|
|
|
neg r8, r8
|
|
|
|
b Printd_0x64
|
|
|
|
|
|
|
|
printd_0xd8
|
|
|
|
li r25, 0x0a
|
|
|
|
divw. r24, r24, r25
|
2018-04-15 07:05:02 +00:00
|
|
|
bne Printd_0x8c
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x20
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, printd_0x120
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
|
|
|
|
printd_0xfc
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x04
|
2018-04-15 07:05:02 +00:00
|
|
|
beq Printd_0xfc
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x20
|
|
|
|
stb r29, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
printd_0x120
|
|
|
|
b print_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; printw
|
|
|
|
|
|
|
|
; _log word (hex) then a space
|
|
|
|
|
|
|
|
printw ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
li r24, 0x08
|
|
|
|
crset cr6_eq
|
|
|
|
b print_digity_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; printh
|
|
|
|
|
|
|
|
; _log halfword (hex) then a space
|
|
|
|
|
|
|
|
printh ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
li r24, 0x04
|
|
|
|
rotlwi r8, r8, 0x10
|
|
|
|
crset cr6_eq
|
|
|
|
b print_digity_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; printb
|
|
|
|
|
|
|
|
; _log byte (hex) then a space
|
|
|
|
|
|
|
|
printb ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
li r24, 0x02
|
|
|
|
rotlwi r8, r8, 0x18
|
|
|
|
crset cr6_eq
|
|
|
|
b print_digity_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_unknown ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
li r24, 0x02
|
|
|
|
rotlwi r8, r8, 0x18
|
|
|
|
crclr cr6_eq
|
|
|
|
b print_digity_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_digity_common ; OUTSIDE REFERER
|
|
|
|
lwz r1, -0x0004(r1)
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r28, PSA.NoIdeaR23(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
lwz r29, 0x0edc(r1)
|
|
|
|
|
|
|
|
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
cmpwi cr7, r28, 0x00
|
|
|
|
andi. r29, r29, 0x02
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, print_digity_common_0x40
|
2017-11-19 04:11:07 +00:00
|
|
|
crmove 30, 2
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_digity_common_0x40
|
2017-11-19 04:11:07 +00:00
|
|
|
bl serial_io
|
|
|
|
bl serial_flush
|
|
|
|
|
|
|
|
print_digity_common_0x40
|
|
|
|
bl serial_busywait
|
|
|
|
li r25, 0x30
|
|
|
|
rlwimi r25, r8, 4, 28, 31
|
|
|
|
rotlwi r8, r8, 0x04
|
|
|
|
cmpwi r25, 0x39
|
2018-04-15 07:05:02 +00:00
|
|
|
ble print_digity_common_0x5c
|
2017-11-19 04:11:07 +00:00
|
|
|
addi r25, r25, 0x27
|
|
|
|
|
|
|
|
print_digity_common_0x5c
|
|
|
|
mr r29, r25
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, print_digity_common_0x84
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
stb r25, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
print_digity_common_0x84
|
|
|
|
addi r24, r24, -0x01
|
|
|
|
mr. r24, r24
|
2018-04-15 07:05:02 +00:00
|
|
|
bne print_digity_common_0x40
|
|
|
|
bne cr6, print_digity_common_0xd0
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x20
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, print_digity_common_0xd0
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
|
|
|
|
print_digity_common_0xac
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x04
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_digity_common_0xac
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x20
|
|
|
|
stb r29, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
print_digity_common_0xd0
|
|
|
|
b print_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getchar ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
|
|
|
|
lwz r1, EWA.PA_KDP(r1)
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r28, PSA.NoIdeaR23(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
cmpwi cr7, r28, 0x00
|
|
|
|
li r8, -0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, print_return
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
bl serial_io
|
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
beq print_common
|
2017-11-19 04:11:07 +00:00
|
|
|
lbz r8, 0x0006(r28)
|
|
|
|
b print_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; printc
|
|
|
|
|
|
|
|
; _log char
|
|
|
|
|
|
|
|
printc ; OUTSIDE REFERER
|
|
|
|
mfsprg r1, 0
|
|
|
|
stmw r24, -0x0108(r1)
|
|
|
|
mflr r24
|
|
|
|
mfcr r25
|
|
|
|
stw r24, -0x0110(r1)
|
|
|
|
stw r25, -0x010c(r1)
|
|
|
|
lwz r1, -0x0004(r1)
|
2018-04-22 09:13:30 +00:00
|
|
|
lwz r28, PSA.NoIdeaR23(r1)
|
2017-11-19 04:11:07 +00:00
|
|
|
lwz r29, 0x0edc(r1)
|
|
|
|
|
|
|
|
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
cmpwi cr7, r28, 0x00
|
|
|
|
andi. r29, r29, 0x02
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, printc_0x58
|
2017-11-19 04:11:07 +00:00
|
|
|
crmove 30, 2
|
2018-04-15 07:05:02 +00:00
|
|
|
beq Printc_0x58
|
2017-11-19 04:11:07 +00:00
|
|
|
bl serial_io
|
|
|
|
bl serial_flush
|
|
|
|
|
|
|
|
printc_0x58
|
|
|
|
mr r29, r8
|
|
|
|
|
|
|
|
; r1 = kdp
|
|
|
|
bl ScreenConsole_putchar
|
2018-04-15 07:05:02 +00:00
|
|
|
beq cr7, printc_0x90
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
|
|
|
|
printc_0x70
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x04
|
2018-04-15 07:05:02 +00:00
|
|
|
beq Printc_0x70
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r8, 0x0006(r28)
|
|
|
|
eieio
|
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
|
|
|
|
printc_0x90
|
|
|
|
b print_common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; serial_flush
|
|
|
|
|
|
|
|
; This and the following func are a bit speculative, but
|
|
|
|
; whatever.
|
|
|
|
|
|
|
|
; Whoa. Turns on data but not code paging. Crikey.
|
|
|
|
|
|
|
|
serial_flush ; OUTSIDE REFERER
|
|
|
|
ori r30, r31, MSR_DR
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x09
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set register pointer to 9 (next write goes to WR9)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x80;load code for channel A (also disables interrupts)
|
|
|
|
stb r29, 0x0002(r28);reset channel A
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x04
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set register pointer to 4 (next write goes to WR4)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x48;X16 clock, 8-bit sync, 1.5 stop bits, parity off
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x03
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 3 (next write to WR3)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0xc0;recieve 8 bits per character (but recieve off)
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x05
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 5 (next write to WR5)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x60;transmit 8 bits per char (but transmit off)
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x09
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 9 (next write to WR9)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
|
|
|
li r29, 0x00
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);stop channel A reset?
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0a
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 10 (next write to WR10)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x00;8-bit sync, NRZ encoding
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0b
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 11 (next write to WR11)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x50;rx and tx using BR Generator
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0c
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 12 (next write to WR12)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x00;0 time constant low byte
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0d
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 13 (next write to WR13)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x00;0 time constant high byte
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x0e
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 14 (next write to WR14)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0x01;enable Baud Rate generator
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x03
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 3 (next write to WR3)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0xc1;enable reciever
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
lbz r29, 0x0002(r28);make sure next write goes to command register
|
2017-11-19 04:11:07 +00:00
|
|
|
li r29, 0x05
|
2018-04-29 22:57:07 +00:00
|
|
|
stb r29, 0x0002(r28);set reg pointer to 5 (next write to WR5)
|
2017-11-19 04:11:07 +00:00
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
li r29, 0xea;assert DTR and RTS, set 8 bit characters, and enable transmitter
|
2017-11-19 04:11:07 +00:00
|
|
|
stb r29, 0x0002(r28)
|
|
|
|
eieio
|
2018-04-29 22:57:07 +00:00
|
|
|
mtmsr r31 ;restore previous MSR
|
2017-11-19 04:11:07 +00:00
|
|
|
isync
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; serial_io
|
2018-04-29 22:57:07 +00:00
|
|
|
;appears to set BAT 3 so the scc can be accessed from logical memory space.
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
serial_io ; OUTSIDE REFERER
|
|
|
|
mfspr r26, srr0
|
|
|
|
mfspr r27, srr1
|
|
|
|
isync
|
|
|
|
mfspr r30, pvr
|
|
|
|
rlwinm. r30, r30, 0, 0, 14
|
|
|
|
rlwinm r29, r28, 0, 0, 14
|
2018-04-15 07:05:02 +00:00
|
|
|
beq serial_io_0x38
|
2017-11-19 04:11:07 +00:00
|
|
|
li r30, 0x03
|
|
|
|
or r30, r30, r29
|
|
|
|
li r31, 0x3a
|
|
|
|
or r31, r31, r29
|
|
|
|
mtspr dbat3l, r31
|
|
|
|
mtspr dbat3u, r30
|
|
|
|
b serial_io_0x50
|
|
|
|
|
|
|
|
serial_io_0x38
|
|
|
|
li r30, 0x32
|
|
|
|
or r30, r30, r29
|
|
|
|
li r31, 0x40
|
|
|
|
or r31, r31, r29
|
|
|
|
mtspr ibat3u, r30
|
|
|
|
mtspr ibat3l, r31
|
|
|
|
|
|
|
|
serial_io_0x50
|
|
|
|
isync
|
|
|
|
mfmsr r31
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; serial_busywait
|
|
|
|
|
|
|
|
; See disclaimer above.
|
|
|
|
|
|
|
|
serial_busywait ; OUTSIDE
|
2018-04-15 07:05:02 +00:00
|
|
|
beqlr cr7
|
2017-11-19 04:11:07 +00:00
|
|
|
ori r30, r31, 0x10
|
|
|
|
mtmsr r30
|
|
|
|
isync
|
|
|
|
|
|
|
|
serial_busywait_0x10
|
|
|
|
lbz r30, 0x0002(r28)
|
|
|
|
eieio
|
|
|
|
andi. r30, r30, 0x04
|
2018-04-15 07:05:02 +00:00
|
|
|
beq serial_busywait_0x10
|
2017-11-19 04:11:07 +00:00
|
|
|
mtmsr r31
|
|
|
|
isync
|
|
|
|
blr
|