T1
Click on the red underlined text to get to the source
... ; Accepts: P1/ 9-bit byte pointer to UTF-9 string
; Returns +1: Always, T1/ UCS-4 value, P1/ updated byte pointer
; Clobbers T2 ...
... ; Accepts: P1/ 9-bit byte pointer to UTF-9 string
; T1/ UCS-4 character to write
; Returns +1: Always, P1/ updated byte pointer
...
... UCS-4 character to write
; Returns +1: Always, P1/ updated byte pointer
; Clobbers T1, T2; (T1, T2 ...
... T2, ; we'll need some of these 1-bits later
ASHC T1,-^D8 ; low octet becomes nonet with high 0-bit
U32U91: JUMPE T1 ...
... T1,-^D8 ; low octet becomes nonet with high 0-bit
U32U91: JUMPE T1,U42U9X ; done if no more octets
LSHC T1,-^D8 ; shift next octet into T2 ...
... U32U91: JUMPE T1,U42U9X ; done if no more octets
LSHC T1,-^D8 ; shift next octet into T2
ROT T2 ...
... bit
PUSHJ P,U42U91 ; recurse for remainder
U42U9X: LSHC T1,^D9 ; get next nonet back from T2
IDPB T1 ...
