diff options
Diffstat (limited to 'assembly/rrxing2/ui.S')
| -rw-r--r-- | assembly/rrxing2/ui.S | 392 |
1 files changed, 388 insertions, 4 deletions
diff --git a/assembly/rrxing2/ui.S b/assembly/rrxing2/ui.S index ba1611a..d6c8cd0 100644 --- a/assembly/rrxing2/ui.S +++ b/assembly/rrxing2/ui.S @@ -1,3 +1,8 @@ +# Railroad Crossing 2 for RVController - User Interface +# A product of Scheiße & Broken Signalling Systems, a Cheapie Systems company +# This is free and unencumbered software released into the public domain. +# See http://unlicense.org/ for more information + # UI Pages # Page 0: Idle/Active Screen # Page 1: Main Menu @@ -8,6 +13,16 @@ # Page 6: Extension Time Adjustment # Page 7: Invalid Input Message for Time Adjustments # Page 8: Diagnostics Menu +# Page 9: Output Test Menu +# Page 10: Road Signal Test +# Page 11: Rail Signal Test +# Page 12: Bell Test +# Page 13: Gate Test +# Page 14: Statistics +# Page 15: About 1 +# Page 16: About 2 +# Page 17: About 3 +# Page 18: About 4 mainloop: la t0,uipage @@ -128,12 +143,17 @@ bne a0,t0,1f la t1,uipage li t2,3 sb t2,0(t1) # User entered '2', go to timing adjustment (page 3) -1:li t0,'3' +1: li t0,'3' bne a0,t0,1f la t1,uipage li t2,8 sb t2,0(t1) # User entered '3', go to diagnostics (page 8) -1:li t0,'0' +1: li t0,'4' +bne a0,t0,1f +la t1,uipage +li t2,15 +sb t2,0(t1) # User entered '4', go to about 1 (page 15) +1: li t0,'0' bne a0,t0,1f la t1,uipage sb x0,0(t1) # User entered '0', go to idle screen (page 0) @@ -451,6 +471,357 @@ uihandlediagnostics: lpad 9 li a7,132 ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la t1,uipage +li t0,9 +sb t0,0(t1) # User entered '1', go to output test (page 9) +1: li t0,'2' +bne a0,t0,1f +la t1,uipage +li t0,14 +sb t0,0(t1) # User entered '1', go to statistics (page 14) +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,1 +sb t0,0(t1) # User entered '0', go to main menu (page 1) +1: ret + +.align 2 +uidrawoutputtest: +lpad 10 +la a0,uioutputtest +li a7,4 +ecall +ret + +.align 2 +uihandleoutputtest: +lpad 10 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la t1,uipage +li t0,10 +sb t0,0(t1) # User entered '1', go to light test (page 10) +1: li t0,'2' +bne a0,t0,1f +la t1,uipage +li t0,11 +sb t0,0(t1) # User entered '2', go to signal test (page 11) +1: li t0,'3' +bne a0,t0,1f +la t1,uipage +li t0,12 +sb t0,0(t1) # User entered '3', go to bell test (page 12) +1: li t0,'4' +bne a0,t0,1f +la t1,uipage +li t0,13 +sb t0,0(t1) # User entered '4', go to gate test (page 13) +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,8 +sb t0,0(t1) # User entered '0', go to diagnostics (page 8) +1: ret + +.align 2 +uidrawlighttest: +lpad 11 +la a0,uilighttest +li a7,4 +ecall +ret + +.align 2 +uihandlelighttest: +lpad 11 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la a0,lightchannel +la a1,lightoffmsg +li a7,129 +ecall # User entered '1', command light to off +1: li t0,'2' +bne a0,t0,1f +la a0,lightchannel +la a1,lightredmsg +li a7,129 +ecall # User entered '2', command light to red +1: li t0,'3' +bne a0,t0,1f +la a0,lightchannel +la a1,lightyellowmsg +li a7,129 +ecall # User entered '3', command light to yellow +1: li t0,'4' +bne a0,t0,1f +la a0,lightchannel +la a1,lightgreenmsg +li a7,129 +ecall # User entered '4', command light to green +1: li t0,'5' +bne a0,t0,1f +la a0,lightchannel +la a1,lightflashredmsg +li a7,129 +ecall # User entered '5', command light to flashing red +1: li t0,'6' +bne a0,t0,1f +la a0,lightchannel +la a1,lightflashyellowmsg +li a7,129 +ecall # User entered '6', command light to flashing yellow +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,9 +sb t0,0(t1) # User entered '0', go to output test (page 9) +1: ret + +.align 2 +uidrawsignaltest: +lpad 12 +la a0,uisignaltest +li a7,4 +ecall +ret + +.align 2 +uihandlesignaltest: +lpad 12 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la a0,signalchannel +la a1,lightoffmsg +li a7,129 +ecall # User entered '1', command signal to off +1: li t0,'2' +bne a0,t0,1f +la a0,signalchannel +la a1,lightredmsg +li a7,129 +ecall # User entered '2', command signal to red +1: li t0,'3' +bne a0,t0,1f +la a0,signalchannel +la a1,lightyellowmsg +li a7,129 +ecall # User entered '3', command signal to yellow +1: li t0,'4' +bne a0,t0,1f +la a0,signalchannel +la a1,lightgreenmsg +li a7,129 +ecall # User entered '4', command signal to green +1: li t0,'5' +bne a0,t0,1f +la a0,signalchannel +la a1,lightflashredmsg +li a7,129 +ecall # User entered '5', command signal to flashing red +1: li t0,'6' +bne a0,t0,1f +la a0,signalchannel +la a1,lightflashyellowmsg +li a7,129 +ecall # User entered '6', command signal to flashing yellow +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,9 +sb t0,0(t1) # User entered '0', go to output test (page 9) +1: ret + +.align 2 +uidrawbelltest: +lpad 13 +la a0,uibelltest +li a7,4 +ecall +ret + +.align 2 +uihandlebelltest: +lpad 13 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la a0,bellchannel +la a1,belloffmsg +li a7,129 +ecall # User entered '1', command bell to off +1: li t0,'2' +bne a0,t0,1f +la a0,bellchannel +la a1,bellonmsg +li a7,129 +ecall # User entered '2', command bell to on +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,9 +sb t0,0(t1) # User entered '0', go to output test (page 9) +1: ret + +.align 2 +uidrawgatetest: +lpad 14 +la a0,uigatetest +li a7,4 +ecall +ret + +.align 2 +uihandlegatetest: +lpad 14 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la a0,gatechannel +la a1,gateupmsg +li a7,129 +ecall # User entered '1', command gate to up +1: li t0,'2' +bne a0,t0,1f +la a0,gatechannel +la a1,gatedownmsg +li a7,129 +ecall # User entered '2', command gate to down +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,9 +sb t0,0(t1) # User entered '0', go to output test (page 9) +1: ret + +.align 2 +uidrawstatistics: +lpad 15 +cm.push {ra},-16 +la a0,uistatistics+21 +rdcycle a1 +call hexdump +la a0,uistatistics+39 +rdtime a1 +call hexdump +la a0,uistatistics+57 +rdinstret a1 +call hexdump +la a0,uistatistics +li a7,4 +ecall +cm.popret {ra},16 + +.align 2 +uihandlestatistics: +lpad 15 +li a7,132 +ecall # Read one character of input +li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,8 +sb t0,0(t1) # User entered '0', go to diagnostics (page 8) +1: ret + +.align 2 +uidrawabout1: +lpad 16 +la a0,uiabout1 +li a7,4 +ecall +ret + +.align 2 +uihandleabout1: +lpad 16 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la t1,uipage +li t0,16 +sb t0,0(t1) # User entered '1', go to about 2 (page 16) +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,1 +sb t0,0(t1) # User entered '0', go to main menu (page 1) +1: ret + +.align 2 +uidrawabout2: +lpad 17 +la a0,uiabout2 +li a7,4 +ecall +ret + +.align 2 +uihandleabout2: +lpad 17 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la t1,uipage +li t0,17 +sb t0,0(t1) # User entered '1', go to about 3 (page 17) +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,1 +sb t0,0(t1) # User entered '0', go to main menu (page 1) +1: ret + +.align 2 +uidrawabout3: +lpad 18 +la a0,uiabout3 +li a7,4 +ecall +ret + +.align 2 +uihandleabout3: +lpad 18 +li a7,132 +ecall # Read one character of input +li t0,'1' +bne a0,t0,1f +la t1,uipage +li t0,18 +sb t0,0(t1) # User entered '1', go to about 4 (page 18) +1: li t0,'0' +bne a0,t0,1f +la t1,uipage +li t0,1 +sb t0,0(t1) # User entered '0', go to main menu (page 1) +1: ret + +.align 2 +uidrawabout4: +lpad 19 +la a0,uiabout4 +li a7,4 +ecall +ret + +.align 2 +uihandleabout4: +lpad 19 +li a7,132 +ecall # Read one character of input li t0,'0' bne a0,t0,1f la t1,uipage @@ -459,19 +830,32 @@ sb t0,0(t1) # User entered '0', go to main menu (page 1) 1: ret uidrawpointers: .word uidrawidle,uidrawmainmenu,uidrawcountryselect,uidrawadjusttiming,uidrawgatedropdelay,uidrawinitialtime,uidrawextensiontime,uidrawinvalidinput,uidrawdiagnostics +.word uidrawoutputtest,uidrawlighttest,uidrawsignaltest,uidrawbelltest,uidrawgatetest,uidrawstatistics,uidrawabout1,uidrawabout2,uidrawabout3,uidrawabout4 + uihandlepointers: .word uihandleidle,uihandlemainmenu,uihandlecountryselect,uihandleadjusttiming,uihandlegatedropdelay,uihandleinitialtime,uihandleextensiontime,uihandleinvalidinput,uihandlediagnostics +.word uihandleoutputtest,uihandlelighttest,uihandlesignaltest,uihandlebelltest,uihandlegatetest,uihandlestatistics,uihandleabout1,uihandleabout2,uihandleabout3,uihandleabout4 uipage: .byte 0 uiidle: .asciz "\nRailroad Crossing 2\nfor RVController\nMode: ??\n\nPress 'm' for menu\n'a' to activate now" uiactive: .asciz "\nRailroad Crossing 2\nfor RVController\nMode: ??\nCrossing is active\n\nPress 'm' for menu" -uimainmenu: .asciz "\nMAIN MENU\n1: Change Country\n2: Adjust Timing\n3: Diagnostics\n\n0: Exit" +uimainmenu: .asciz "\nMAIN MENU\n1: Change Country\n2: Adjust Timing\n3: Diagnostics\n4: About\n0: Exit" uicountryselect: .asciz "\nCHANGE COUNTRY\n1: Germany\n2: United Kingdom\n3: United States\n\n0: Cancel" uiadjusttiming: .asciz "\nADJUST TIMING\n1: Gate Drop Delay\n2: Init. Active Time\n3: Extension Time\n\n0: Back" uigatedropdelay: .asciz "\nGATE DROP DELAY\n\nCurrent: XX sec\n\nEnter new time or\n'c' to cancel:" uiinitialtime: .asciz "\nINIT. ACTIVE TIME\n\nCurrent: XX sec\n\nEnter new time or\n'c' to cancel:" uiextensiontime: .asciz "\nEXTENSION TIME\n\nCurrent: XX sec\n\nEnter new time or\n'c' to cancel:" uiinvalidinput: .asciz "\nInvalid entry\n\nPress any key\n\n\n" -uidiagnostics: .asciz "\nDIAGNOSTICS\n1: Output Test\n\n\n\n0: Back" +uidiagnostics: .asciz "\nDIAGNOSTICS\n1: Output Test\n2: Statistics\n\n\n0: Back" +uioutputtest: .asciz "\nOUTPUT TEST\n1: Road Signal\n2: Rail Signal\n3: Bell\n4: Gate\n0: Back" +uilighttest: .asciz "\nROAD SIGNAL TEST\n1: Off | 2: Red\n3: Yellow | 4: Green\n5: Flash Red\n6: Flash Yellow\n0: Back" +uisignaltest: .asciz "\nRAIL SIGNAL TEST\n1: Off | 2: Red\n3: Yellow | 4: Green\n5: Flash Red\n6: Flash Yellow\n0: Back" +uibelltest: .asciz "\nBELL TEST\n1: Off\n2: On\n\n\n0: Back" +uigatetest: .asciz "\nGATE TEST\n1: Up\n2: Down\n\n\n0: Back" +uistatistics: .asciz "\nSTATISTICS\n cycle: XXXXXXXX\n time: XXXXXXXX\ninstret: XXXXXXXX\n\n0: Back" +uiabout1: .asciz "\nABOUT\nRailroad Crossing 2\nfor RVController\n\n\n1: Next | 0: Exit" +uiabout2: .asciz "\nA product of\nScheiße & Broken\nSignalling Systems,\na Cheapie Systems\ncompany\n1: Next | 0: Exit" +uiabout3: .asciz "\nThis is free and\nunencumbered\nsoftware released\ninto the public\ndomain\n1: Next | 0: Exit" +uiabout4: .asciz "\nFor full license\ntext, see the\nincluded LICENSE\nfile, or visit\nunlicense.org\n0: Exit" uide: .asciz "DE" uiuk: .asciz "UK" uius: .asciz "US" |
