nop ;set video to 555 movei r0,2 ;1x5r5g5b movei r1,$29 movei r2,$2a moveih r1,$20 ;2025 - video mode moveih r2,$20 ;202a - latch out st r1,r0 st r2,r7 ;set 720*450 movei r2,2 ;vload next = 2 movei r1,$80 moveih r0,$0 ;lc_add = $00.80 0000 movei r3,$1a ;lc adder low movei r4,$1b ;lc adder high movei r5,$1c ;lc latch movei r6,$24 ;v load next moveih r3,$20 moveih r4,$20 moveih r5,$20 ;lc latch moveih r6,$20 ;lc latch st r3,r0 st r4,r1 st r5,r0 ;latch lc st r6,r2 movei r3,$21 movei r0,$70 moveih r3,$20 ;HLOAD STOP moveih r0,1 nop st r3,r0 ;HLOAD STOP = 360+8 (32 bit words) ; clear screen movei r2,$00 ;destination movei r3,$00 moveih r2,$00 moveih r3,$f0 ;p(0,0) = f000 0000 gpci r7,2 ;next 4 + X br clearLoop movei r1,$33 ; count delay slot movei r0,$00 ; value delay slot moveih r1,$9e ; count delay slot nop ; delay slot ; write to ps2 ;reset ;gpci r7,2 ;next 4 + X ;br sendToPS2 ;movei r0,$ff ;count delay slot ;nop ;delay slot ;nop ;delay slot ;nop ;delay slot ;push r0 ;%d test ;gpci r7,2 ;next 4 + X ;br drawText ;movei r0,ps2ResetText ;text delay slot ;movei r1,0 ;x delay slot ;moveih r0,>ps2ResetText ; delay slot ;movei r2,17 ;y delay slot ;rqpop ;cleanup stack ;nop ;nop ;nop ;scan code gpci r7,2 ;next 4 + X br sendToPS2 movei r0,$ed ;set led delay slot nop ;delay slot nop ;delay slot nop ;delay slot push r0 ;%d test gpci r7,2 ;next 4 + X br drawText movei r0,ps2CmdString ;text delay slot movei r1,0 ;x delay slot moveih r0,>ps2CmdString ; delay slot movei r2,18 ;y delay slot rqpop ;cleanup stack nop nop nop ; gpci r7,2 ;next 4 + X br sendToPS2 movei r0,$07 ;3 delay slot nop ;delay slot nop ;delay slot nop ;delay slot push r0 ;%d test gpci r7,2 ;next 4 + X br drawText movei r0,ps2CmdString ;text delay slot movei r1,0 ;x delay slot moveih r0,>ps2CmdString ; delay slot movei r2,19 ;y delay slot rqpop ;cleanup stack nop nop nop ; gpci r7,2 ;next 4 + X br sendToPS2 movei r0,$fa ;3 delay slot nop ;delay slot nop ;delay slot nop ;delay slot push r0 ;%d test gpci r7,2 ;next 4 + X br drawText movei r0,ps2CmdString ;text delay slot movei r1,0 ;x delay slot moveih r0,>ps2CmdString ; delay slot movei r2,20 ;y delay slot rqpop ;cleanup stack nop nop nop gpci r7,2 ;next 4 + X br sendToPS2 movei r0,$f4 ;3 delay slot nop ;delay slot nop ;delay slot nop ;delay slot push r0 ;%d test gpci r7,2 ;next 4 + X br drawText movei r0,ps2CmdString ;text delay slot movei r1,0 ;x delay slot moveih r0,>ps2CmdString ; delay slot movei r2,21 ;y delay slot rqpop ;cleanup stack nop nop nop ;sample scan code scanTest ;read from keyboards gpci r7,2 ;next 4 + X br readFromPS2 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot or r4,r0,r0 or r5,r0,r0 cmpeqi r0,$12 brtc noShiftLeft nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,scanStates movei r2,1 moveih r1,>scanStates nop st r1,r2 noShiftLeft cmpeqi r0,$59 brtc noShiftRight nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,scanStates movei r2,1 moveih r1,>scanStates nop st r1,r2 noShiftRight cmpeqi r0,$5a ;ENTER brtc noEnter nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot gpci r7,2 ;next 4 + X br crCursor nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot noEnter cmpeqi r0,$66 ;VKSP brtc noBackSpace nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot gpci r7,2 ;next 4 + X br decCursor nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot noBackSpace cmpeqi r0,$f0 ;break brtc noBreakExtend nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot gpci r7,2 ;next 4 + X br readFromPS2 ;get after break nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot cmpeqi r0,$12 brtc noShiftLeftRelease nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,scanStates movei r2,0 moveih r1,>scanStates nop st r1,r2 noShiftLeftRelease cmpeqi r0,$59 brtc noRightShiftRelease nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,scanStates movei r2,0 moveih r1,>scanStates nop st r1,r2 noRightShiftRelease br scanTest nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot noBreakExtend ;scan to ascii movei r1,$7f movei r2,scanToAsciiLUT ; and r4,r4,r1 ;only 127 bit moveih r2,>scanToAsciiLUT ; nop add r2,r2,r4 ;add to lut nop rqldi r2,0 nop nop ld r4 ;get value from lut ;check shift movei r0,scanStates nop moveih r0,>scanStates nop rqldi r0,0 nop nop ld r0 nop extri r0,0 swptc r4,r4 ;swap at shift ; nop lsri r4,8 nop cmpeqi r4,$fd ;sentinel for not available brts noValidAscii nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;get cursor movei r2,cursorX nop moveih r2,>cursorX nop rqldi r2,0 ;[x] rqldi r2,1 ;[y] nop ld r1 ;x ld r2 ;y gpci r7,2 ;next 4 + X br drawChar or r0,r4,r4 ;v delay slot nop ;x delay slot nop ;y delay slot subi r0,32 ;delay slot ;cursor inc gpci r7,2 ;next 4 + X br incCursor nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot noValidAscii ;draw scan code for debug push r5 ;%d test gpci r7,2 ;next 4 + X br drawText movei r0,scanCodeString ;text delay slot movei r1,0 ;x delay slot moveih r0,>scanCodeString ; delay slot movei r2,22 ;y delay slot rqpop ;cleanup stack nop nop pop r0 ; br scanTest nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot end br end nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ps2CmdString .string "PS2 cmd return $%x" word 0 scanCodeString .string "scan code $%x" word 0 ;****************************** ;* ;* crCursor ;* crCursor push r0 push r1 push r2 push r7 movei r2,cursorX nop moveih r2,>cursorX nop rqldi r2,1 ;[y] nop nop ;x ld r1 ;y movei r0,0 ;x = 0 addi r1,1 ;y++ nop ;store back st r2,r0 ;store x addi r2,1 nop st r2,r1 ;store y ; gpci r7,2 ;next 4 + X br cursorEvaluate nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot rqpop rqpop rqpop pop r7 pop r2 pop r1 rqpop jmpi r7,0 nop ;delay slot pop r0 ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* incCursor ;* incCursor push r0 push r1 push r7 movei r1,cursorX nop moveih r1,>cursorX nop rqldi r1,0 ;[x] nop nop ld r0 ;x nop addi r0,1 nop st r1,r0 ;store x ; gpci r7,2 ;next 4 + X br cursorEvaluate nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ; rqpop rqpop rqpop pop r7 pop r1 pop r0 jmpi r7,0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* decCursor ;* decCursor push r0 push r1 push r7 movei r1,cursorX nop moveih r1,>cursorX nop rqldi r1,0 ;[x] nop nop ld r0 ;x nop subi r0,1 nop st r1,r0 ;store x ; gpci r7,2 ;next 4 + X br cursorEvaluate nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ; rqpop rqpop rqpop pop r7 pop r1 pop r0 jmpi r7,0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* cursorEvaluate ;* ;* cursorEvaluate push r0 push r1 push r2 movei r2,cursorX nop moveih r2,>cursorX nop rqldi r2,0 ;[x] rqldi r2,1 ;[y] nop ld r0 ;x ld r1 ;y ;-- test x < 0 (signed) cmplosi r0,0 brtc cursorEvaluateXGT0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r0,89 ;x last ps subi r1,1 ;y-- ;-- test x < 89 (unsigned) cursorEvaluateXGT0 cmploi r0,90 brts cursorEvaluateLTMAX nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r0,0 ;x = 0 addi r1,1 ;y++ nop cursorEvaluateLTMAX ;-- test y < 0 (signed) cmplosi r1,0 brtc cursorEvaluateYGT0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,17 nop ;-- test y < 17 (unsigned) cursorEvaluateYGT0 cmploi r1,17 brts cursorEvaluateYLTMAX nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r1,0 ;y=0 cursorEvaluateYLTMAX ;store back st r2,r0 ;store x addi r2,1 nop st r2,r1 ;store y ; rqpop rqpop rqpop pop r2 pop r1 pop r0 jmpi r7,0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot cursorX word 0 cursorY word 0 ;****************************** ;* ;* readFromPS2 ;* ;* return ;* ;* r0 = value ;* readFromPS2 push r1 push r2 push r3 movei r2,$30 nop moveih r2,$20 ;read 2030 - ctrl ps data nop readFromPS2ScanTest rqldi r2,0 nop nop ld r0 nop extri r0,8 ;data in brtc readFromPS2ScanTest movei r3,0 ;delay slot nop ;delay slot moveih r3,$1 ;$100 = accept data delay slot nop ;delay slot st r2,r3 ;write 2030 - accept data moveih r0,$0 ;clear upper part of value rqpop rqpop rqpop pop r3 pop r2 pop r1 jmpi r7,0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* sendToPS2 ;* ;* r0 = byte to send (upper ;* ;* return ;* ;* r0 = status $FA is ok ;* sendToPS2 push r1 push r2 movei r2,$30 nop moveih r2,$20 ;read 2030 - ctrl ps data nop ;check all write are finished waitWriteFifoEmpty rqldi r2,0 nop nop ld r1 ; a 9 8 76543210 ;get WF WR A DDDDDDDD ; ; A = READ DATA VALID ;WR = WRITE READY ;WF = WRITE FINISH nop extri r1,$a brtc waitWriteFifoEmpty nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;send data moveih r0,$2 ;set write data to ps2 (lower data are send byte) nop st r2,r0 nop ;wait for ack data waitReadFifoData rqldi r2,0 nop nop ld r0 ; nop extri r0,$8 brtc waitReadFifoData nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot moveih r1,1 ;remove scan code from buffer (get next if available) moveih r0,0 ;clear upper data of result st r2,r1 rqpop rqpop jmpi r7,0 pop r2 ;delay slot pop r1 ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* drawText ;* ;* r0 text ;* r1 cursor x ;* r2 cursor y drawText push r0 push r1 push r4 push r6 push r7 getsp r6,5 or r4,r0,r0 ;text address to r4 nop textLoop rqldi r4,0 nop nop ld r0 nop cmpeqi r0,0 brts textLoopEnd addi r4,1 ;next char delay slot nop ;delay slot nop ;delay slot nop ;delay slot cmpeqi r0,37 ;% brts textProcessCmd nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot gpci r7,2 ;next 4 + X br drawChar subi r0,32 ;map visible delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r1,1 textProcessCmdReturn br textLoop nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot textLoopEnd rqpop rqpop rqpop pop r7 pop r6 pop r4 rqpop rqpop jmpi r7,0 pop r1 ;delay slot pop r0 ;delay slot nop ;delay slot nop ;delay slot ;processing cmd string textProcessCmd rqldi r4,0 ;get next char nop nop ld r0 nop cmpeqi r0,37 ;% again so print it brts textProcessCmdProzent nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot cmpeqi r0,99 ;c -> char brts textProcessCmdChar nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot cmpeqi r0,120 ;x -> hex brts textProcessCmdHex nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot cmpeqi r0,117 ;u -> unsigned dec brts textProcessCmdUDec nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot br textProcessCmdReturn nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;%% textProcessCmdProzent gpci r7,2 ;next 4 + X br drawChar subi r0,32 ;map visible delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r1,1 br textProcessCmdReturn nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;%c textProcessCmdChar rqldi r6,0 addi r6,1 ;next value if exist nop ld r0 gpci r7,2 ;next 4 + X br drawChar subi r0,32 ;map visible delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r4,1 addi r1,1 br textProcessCmdReturn nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;%x textProcessCmdHex push r5 push r3 rqldi r6,0 addi r6,1 ;next value if exist nop ld r5 movei r3,3 ;3 hex digits textProcessCmdHexLoop or r0,r5,r5 nop lsri r0,12 nop cmploi r0,10 brts textProcessCmdHexNoABCDEF nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r0,7 textProcessCmdHexNoABCDEF gpci r7,2 ;next 4 + X br drawChar addi r0,16 ;map visible +48-32 delay slot nop ;delay slot nop ;delay slot nop ;delay slot subi r3,1 brts textProcessCmdHexLoop addi r1,1 ;x++ delay slot muli r5,16 ;r5 << 4 delay slot nop ;delay slot nop ;delay slot rqpop rqpop br textProcessCmdReturn pop r3 ;delay slot pop r5 ;delay slot addi r4,1 ;next input char delay slot nop ;delay slot ;%u textProcessCmdUDec push r5 push r4 push r3 push r7 rqldi r6,0 addi r6,1 ;next value if exist movei r4,$cd ld r5 moveih r4,$cc ;r4 = $cccd movei r7,4 ;5 dec digits textProcessCmdUDecDecodeDigit or r3,r5,r5 mul r5,r5,r4 ;result = value * $cccd nop gmulhi r5 ;result >> 16 nop lsrqi r5,r5,3 ;result >> 3 nop or r0,r5,r5 nop muli r0,10 subi r7,1 brts textProcessCmdUDecDecodeDigit nop ;delay slot sub r0,r3,r0 ;delay slot nop ;delay slot push r0 ;push digit ;delay slot ; movei r3,3 ;4 dec digits with leading zero test movei r4,0 ;leading zero textProcessCmdUDecPrintDigit rqpop nop nop pop r0 nop cmpeq r4,r0 brts textProcessCmdUDecSkipLeadingZero ;skip leading zero nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r4,$ff ;illegal value after first not leading zero gpci r7,2 ;next 4 + X br drawChar addi r0,16 ;map visible +48-32 delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r1,1 textProcessCmdUDecSkipLeadingZero subi r3,1 brts textProcessCmdUDecPrintDigit nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;last digit rqpop nop nop pop r0 gpci r7,2 ;next 4 + X br drawChar addi r0,16 ;map visible +48-32 delay slot nop ;delay slot nop ;delay slot nop ;delay slot addi r1,1 rqpop nop nop pop r7 rqpop rqpop rqpop pop r3 pop r4 pop r5 br textProcessCmdReturn nop ;delay slot nop ;delay slot addi r4,1 ;next input char delay slot nop ;delay slot ;****************************** ;* ;* drawChar ;* ;* r0 value ;* r1 x ;* r2 y ;* ;* trash r0 drawChar push r1 push r2 push r3 push r4 push r5 push r6 push r7 ;destination base (sram base 0) muli r1,8 movei r4,$00 ;destination movei r5,$00 moveih r4,$00 moveih r5,$f0 ;p(0,0) = f000 0000 add r4,r4,r1 addtqi r5,r5,0 movei r1,$00 nop moveih r1,$2d ;720*16 nop mul r1,r1,r2;*y gmulhi r2 add r4,r4,r1 addt r5,r5,r2 ;font source movei r2,$68 ;source movei r3,$01 moveih r2,$7f moveih r3,$e0 ;p(0,0) = e001 7f68 (color) oder e001 5068 muli r0,8 ;value * 8 nop add r2,r2,r0 ;source addtqi r3,r3,0 ; ; movei r7,0 movei r0,15 ;16 [y] dcYloop esadr r3,r2 erqldi 0 erqldi 1 erqldi 2 erqldi 3 erqldi 4 erqldi 5 erqldi 6 erqldi 7 addi r2,8 addtqi r3,r3,0 movei r1,7 ;8 [x] dcXloop eld r6 nop extri r6,15 movets r6,r6,r7 ;t = 1 r6=r6 else r6=r7 (0) esadr r5,r4 est r6,0 subi r1,1 ;x- brts dcXloop addi r4,1 ;delay slot addtqi r5,r5,0 ;delay slot nop ;delay slot nop ;delay slot ; movei r1,$c8 nop moveih r1,$2 ;r1 = 720-8 nop add r4,r4,r1 ;dest + 720-8 addtqi r5,r5,0 ; movei r1,$e8 nop moveih r1,$2 ;r1 = 752-8 nop subi r0,1 ;y- brts dcYloop add r2,r2,r1 ;source + 752-8 delay slot addtqi r3,r3,0 ; delay slot nop ;delay slot nop ;delay slot ; rqpop rqpop rqpop pop r7 pop r6 pop r5 rqpop rqpop nop pop r4 pop r3 rqpop rqpop jmpi r7,0 pop r2 ;delay slot pop r1 ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* ;* r0 value ;* r1 count-1 (8 words)) ;* r3:r2 dest ; memset clearLoop esadr r3,r2 est r0,0 est r0,1 est r0,2 est r0,3 est r0,4 est r0,5 est r0,6 est r0,7 subi r1,1 brts clearLoop addi r2,8 ;delay slot addtqi r3,r3,0 ;delay slot nop ;delay slot nop ;delay slot jmpi r7,0 nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot scanStates word 0 scanToAsciiLUT .stringb "××" ; 00 00 = '×' .stringb "××" ; 01 00 = '×' .stringb "××" ; 02 00 = '×' .stringb "××" ; 03 00 = '×' .stringb "××" ; 04 00 = '×' .stringb "××" ; 05 00 = '×' .stringb "××" ; 06 00 = '×' .stringb "××" ; 07 00 = '×' .stringb "××" ; 08 00 = '×' .stringb "××" ; 09 00 = '×' .stringb "××" ; 0A 00 = '×' .stringb "××" ; 0B 00 = '×' .stringb "××" ; 0C 00 = '×' .stringb "××" ; 0D 00 = '×' .stringb "``" ; 0E 0E = '`' .stringb "××" ; 0F 00 = '×' .stringb "××" ; 10 00 = '×' .stringb "××" ; 11 00 = '×' .stringb "××" ; 12 00 = '×' .stringb "××" ; 13 00 = '×' .stringb "××" ; 14 00 = '×' .stringb "Qq" ; 15 15 = 'Q' .stringb "!1" ; 16 16 = '1' .stringb "××" ; 17 00 = '×' .stringb "××" ; 18 00 = '×' .stringb "××" ; 19 00 = '×' .stringb "Yy" ; 1A 1A = 'Z' .stringb "Ss" ; 1B 1B = 'S' .stringb "Aa" ; 1C 1C = 'A' .stringb "Ww" ; 1D 1D = 'W' .stringb "°2" ; 1E 1E = '2' .stringb "××" ; 1F 00 = '×' .stringb "××" ; 20 00 = '×' .stringb "Cc" ; 21 21 = 'C' .stringb "Xx" ; 22 22 = 'X' .stringb "Dd" ; 23 23 = 'D' .stringb "Ee" ; 24 24 = 'E' .stringb "$4" ; 25 25 = '4' .stringb "§3" ; 26 26 = '3' .stringb "××" ; 27 00 = '×' .stringb "××" ; 28 00 = '×' word $2020 ; 29 29 = ' ' .stringb "Vv" ; 2A 2A = 'V' .stringb "Ff" ; 2B 2B = 'F' .stringb "Tt" ; 2C 2C = 'T' .stringb "Rr" ; 2D 2D = 'R' .stringb "%5" ; 2E 2E = '5' .stringb "××" ; 2F 00 = '×' .stringb "××" ; 30 00 = '×' .stringb "Nn" ; 31 31 = 'N' .stringb "Bb" ; 32 32 = 'B' .stringb "Hh" ; 33 33 = 'H' .stringb "Gg" ; 34 34 = 'G' .stringb "Zz" ; 35 35 = 'Y' .stringb "&6" ; 36 36 = '6' .stringb "××" ; 37 00 = '×' .stringb "××" ; 38 00 = '×' .stringb "××" ; 39 00 = '×' .stringb "Mm" ; 3A 3A = 'M' .stringb "Jj" ; 3B 3B = 'J' .stringb "Uu" ; 3C 3C = 'U' .stringb "/7" ; 3D 3D = '7' .stringb "(8" ; 3E 3E = '8' .stringb "××" ; 3F 00 = '×' .stringb "××" ; 40 00 = '×' .stringb ",," ; 41 41 = ',' .stringb "Kk" ; 42 42 = 'K' .stringb "Ii" ; 43 43 = 'I' .stringb "Oo" ; 44 44 = 'O' .stringb "=0" ; 45 45 = '0' .stringb ")9" ; 46 46 = '9' .stringb "××" ; 47 00 = '×' .stringb "××" ; 48 00 = '×' .stringb ".." ; 49 49 = '.' .stringb "//" ; 4A 4A = '/' .stringb "Ll" ; 4B 4B = 'L' .stringb ";;" ; 4C 4C = ';' .stringb "Pp" ; 4D 4D = 'P' .stringb "--" ; 4E 4E = '-' .stringb "××" ; 4F 00 = '×' .stringb "××" ; 50 00 = '×' .stringb "××" ; 51 00 = '×' .stringb " " ; 52 52 = ' ' .stringb "××" ; 53 00 = '×' .stringb "[[" ; 54 54 = '[' .stringb "==" ; 55 55 = '=' .stringb "××" ; 56 00 = '×' .stringb "××" ; 57 00 = '×' .stringb "××" ; 58 00 = '×' .stringb "××" ; 59 00 = '×' .stringb "××" ; 5A 00 = '×' .stringb "]]" ; 5B 5B = ']' .stringb "××" ; 5C 00 = '×' .stringb "\\" ; 5D 5D = '\' .stringb "××" ; 5E 00 = '×' .stringb "××" ; 5F 00 = '×' .stringb "××" ; 60 00 = '×' .stringb "××" ; 61 00 = '×' .stringb "××" ; 62 00 = '×' .stringb "××" ; 63 00 = '×' .stringb "××" ; 64 00 = '×' .stringb "××" ; 65 00 = '×' .stringb "××" ; 66 00 = '×' .stringb "××" ; 67 00 = '×' .stringb "××" ; 68 00 = '×' .stringb "11" ; 69 69 = '1' .stringb "××" ; 6A 00 = '×' .stringb "44" ; 6B 6B = '4' .stringb "77" ; 6C 6C = '7' .stringb "××" ; 6D 00 = '×' .stringb "××" ; 6E 00 = '×' .stringb "××" ; 6F 00 = '×' .stringb "00" ; 70 70 = '0' .stringb "××" ; 71 00 = '×' .stringb "22" ; 72 72 = '2' .stringb "55" ; 73 73 = '5' .stringb "66" ; 74 74 = '6' .stringb "88" ; 75 75 = '8' .stringb "××" ; 76 00 = '×' .stringb "××" ; 77 00 = '×' .stringb "××" ; 78 00 = '×' .stringb "××" ; 79 00 = '×' .stringb "33" ; 7A 7A = '3' .stringb "××" ; 7B 00 = '×' .stringb "**" ; 7C 7C = '*' .stringb "99" ; 7D 7D = '9' .stringb "××" ; 7E 00 = '×' .stringb "××" ; 7F 00 = '×'