8-Bit Software Online Conversion
Robert ROM Image - Listing
10REM Sideways Ram Menu
20REM (C) 1993 Jon Ripley
30REM This program is NOT PD
40REM You may alter this program for
your own purposes
50REM The Copyright remains mine at a
ll times
60DEFFNS="Robert"
70MODE 7
80DIM code% &1000
90FORX=1TO2:PRINTTAB(1,X)CHR$141;CHR$
(126+2*X)"SWRom Generator (C) Jon Ripley
":NEXT
100VDU28,0,24,39,4
110buffer=&700
120tempA=&90
130tempX=&91
140tempY=&92
150add=&93:REM -5
160temp=&96
170temp2=&98
180FORpass=4TO7STEP3
190P%=&8000:O%=code%
200[OPTpass
210JMP language
220JMP service
230EQUB &C2
240EQUB offset MOD 256
250EQUB 1
260.title
270EQUS "Robert+"
280BRK
290.version
300EQUS " 1.00"
310BRK
320.offset
330BRK
340EQUS "(C) Jon Ripley"
350BRK
360.service
370STA tempA
380STX tempX
390STY tempY
400CMP #9
410BEQ help
420CMP #3
430BEQ boot
440CMP #4
450BEQ notrecognised
460JMP restore
470.notrecognised
480JMP unrecognised
490.boot
500JMP bootROM
510.help
520LDA (&F2),Y
530CMP #13
540BNE check
550JSR justhelp
560LDX #255
570.details
580INX
590LDA command,X
600BEQ donecommand
610JSR &FFE3
620JMP details
630.donecommand
640JSR &FFE7
650JMP restore
660.check
670LDX #255
680DEY
690.again
700INX
710INY
720LDA (&F2),Y
730AND #&DF
740CMP com,X
750BEQ again
760LDA com,X
770CMP #&FE
780BEQ mine
790.restore
800LDA tempA
810LDX tempX
820LDY tempY
830.nothelp
840RTS
850.justhelp
860JSR &FFE7
870LDX #&FF
880JSR helploop
890JSR helploop
900JMP &FFE7
910.helploop
920INX
930LDA title,X
940BEQ done
950JSR &FFE3
960JMP helploop
970.done
980RTS
990.mine
1000JSR justhelp
1010JSR print
1020EQUB 14
1030EQUS " Back Reverse text"
1040EQUB 13
1050EQUS " Beep Beeps"
1060EQUB 13
1070EQUS " Double Double height tex
t"
1080EQUB 13
1090BRK
1100JSR print
1110EQUS " Echo Print a text stri
ng"
1120EQUB 13
1130EQUS " Home Home text cursor"
1140EQUB 13
1150BRK
1160JSR print
1170EQUS " Shell Command Shell"
1180EQUB 13
1190EQUS " Small Small text"
1200EQUB 13
1210EQUS " Type Type on all FSs"
1220EQUB 13
1230BRK
1240JSR print
1250EQUS " C+BREAK Load a game"
1260EQUB 13
1270EQUS " S+BREAK Command Shell"
1280EQUB 13
1290EQUB 15
1300BRK
1310RTS
1320.alldone
1330LDA tempA
1340LDX tempX
1350LDY tempY
1360LDA #0
1370RTS
1380.com
1390EQUS "ROBERT"
1400EQUB &FE
1410.command
1420EQUS " Robert"
1430BRK
1440.tsonbrk
1450LDX #&FF
1460.tslp
1470INX
1480LDA title,X
1490JSR &FFE3
1500BNE tslp
1510JSR &FFE7
1520JSR &FFE7
1530JMP alldone
1540.startlang
1550.cSHELL
1560LDA #&8E
1570LDX &F4
1580JSR &FFF4
1590½ No return!!!
1600.bootROM
1610JSR printhead ½ tsonbrk
1620 LDA #13
1630 JSR &FFE3
1640LDA #202
1650LDX #168
1660LDY #0
1670JSR &FFF4
1680LDA #&7A
1690JSR &FFF4
1700STX temp
1710LDA #21
1720LDX #0
1730JSR &FFF4
1740LDX temp
1750CPX #&52
1760BEQ bootchain
1770CPX #&51
1780BEQ startlang
1790JMP restore
1800.bootchain
1810LDA #11
1820JSR &FFEE
1830LDA #21
1840JSR &FFEE
1850LDA #140
1860JSR &FFF4
1870LDA #&8A
1880LDX #0
1890LDY #42
1900JSR &FFF4
1910LDY #ASC"B"
1920JSR &FFF4
1930LDY #ASC"A"
1940JSR &FFF4
1950LDY #ASC"."
1960JSR &FFF4
1970LDY #13
1980JSR &FFF4
1990LDA #&8A
2000LDX #0
2010LDY #ASC"C"
2020JSR &FFF4
2030LDY #ASC"H"
2040JSR &FFF4
2050LDY #ASC"."
2060JSR &FFF4
2070LDY #34
2080JSR &FFF4
2090LDY #34
2100JSR &FFF4
2110LDY #6
2120JSR &FFF4
2130LDY #13
2140JSR &FFF4
2150JMP alldone
2160.printhead
2170LDA #64
2180JSR vdu2
2190EQUB 22
2200EQUB 7
2210EQUB 31
2220EQUB 4
2230EQUB 1
2240EQUB 154
2250EQUB 145
2260EQUB 255
2270EQUB 175
2280EQUB 252
2290EQUB 32
2300EQUB 255
2310EQUB 175
2320EQUB 255
2330EQUB 32
2340EQUB 255
2350EQUB 175
2360EQUB 252
2370EQUB 32
2380EQUB 255
2390EQUB 175
2400EQUB 175
2410EQUB 32
2420EQUB 255
2430EQUB 175
2440EQUB 252
2450EQUB 32
2460EQUB 175
2470EQUB 255
2480EQUB 175
2490EQUB 32
2500EQUB 239
2510EQUB 32
2520EQUB 255
2530EQUB 175
2540EQUB 175
2550EQUB 153
2560EQUB 31
2570EQUB 4
2580EQUB 2
2590EQUB 154
2600EQUB 146
2610EQUB 255
2620EQUB 252
2630EQUB 163
2640EQUB 32
2650EQUB 255
2660EQUB 32
2670EQUB 255
2680EQUB 32
2690EQUB 255
2700EQUB 252
2710EQUB 243
2720EQUB 32
2730EQUB 255
2740EQUB 172
2750EQUB 144
2760EQUB 32
2770EQUB 255
2780EQUB 252
2790EQUB 163
2800EQUB 32
2810EQUB 32
2820EQUB 255
2830EQUB 32
2840EQUB 32
2850EQUB 163
2860EQUB 32
2870EQUB 255
2880EQUB 252
2890EQUB 252
2900EQUB 153
2910EQUB 31
2920EQUB 4
2930EQUB 3
2940EQUB 154
2950EQUB 147
2960EQUB 255
2970EQUB 32
2980EQUB 255
2990EQUB 32
3000EQUB 255
3010EQUB 252
3020EQUB 255
3030EQUB 32
3040EQUB 255
3050EQUB 252
3060EQUB 175
3070EQUB 32
3080EQUB 255
3090EQUB 252
3100EQUB 252
3110EQUB 32
3120EQUB 255
3130EQUB 32
3140EQUB 255
3150EQUB 32
3160EQUB 32
3170EQUB 255
3180EQUB 32
3190EQUB 32
3200EQUB 32
3210EQUB 32
3220EQUB 252
3230EQUB 252
3240EQUB 255
3250EQUB 153
3260EQUB 31
3270EQUB 3
3280EQUB 5
3290EQUB 154
3300EQUB 148
3310EQUB 255
3320EQUB 175
3330EQUB 175
3340EQUB 32
3350EQUB 255
3360EQUB 175
3370EQUB 255
3380EQUB 32
3390EQUB 255
3400EQUB 240
3410EQUB 255
3420EQUB 32
3430EQUB 255
3440EQUB 175
3450EQUB 255
3460EQUB 32
3470EQUB 255
3480EQUB 32
3490EQUB 255
3500EQUB 32
3510EQUB 175
3520EQUB 255
3530EQUB 175
3540EQUB 32
3550EQUB 255
3560EQUB 175
3570EQUB 175
3580EQUB 32
3590EQUB 255
3600EQUB 175
3610EQUB 252
3620EQUB 153
3630EQUB 31
3640EQUB 3
3650EQUB 6
3660EQUB 154
3670EQUB 149
3680EQUB 255
3690EQUB 32
3700EQUB 32
3710EQUB 32
3720EQUB 255
3730EQUB 32
3740EQUB 255
3750EQUB 32
3760EQUB 181
3770EQUB 255
3780EQUB 234
3790EQUB 32
3800EQUB 255
3810EQUB 252
3820EQUB 255
3830EQUB 32
3840EQUB 255
3850EQUB 32
3860EQUB 255
3870EQUB 32
3880EQUB 32
3890EQUB 255
3900EQUB 32
3910EQUB 32
3920EQUB 255
3930EQUB 172
3940EQUB 164
3950EQUB 32
3960EQUB 255
3970EQUB 252
3980EQUB 163
3990EQUB 153
4000EQUB 31
4010EQUB 3
4020EQUB 7
4030EQUB 154
4040EQUB 150
4050EQUB 255
4060EQUB 252
4070EQUB 252
4080EQUB 32
4090EQUB 255
4100EQUB 252
4110EQUB 255
4120EQUB 32
4130EQUB 181
4140EQUB 32
4150EQUB 234
4160EQUB 32
4170EQUB 255
4180EQUB 32
4190EQUB 32
4200EQUB 32
4210EQUB 255
4220EQUB 252
4230EQUB 255
4240EQUB 32
4250EQUB 32
4260EQUB 255
4270EQUB 32
4280EQUB 32
4290EQUB 255
4300EQUB 252
4310EQUB 252
4320EQUB 32
4330EQUB 255
4340EQUB 32
4350EQUB 255
4360EQUB 153
4370EQUB 64
4380RTS
4390.window
4400LDA #64
4410JSR print2
4420EQUB 28
4430EQUB 0
4440EQUB 24
4450EQUB 39
4460EQUB 9
4470EQUB 64
4480RTS
4490.mmain
4500JSR vdu
4510EQUB 12
4520EQUB 31
4530EQUB 5
4540EQUB 1
4550EQUB 131
4560EQUB 11
4570EQUB 8
4580EQUB 130
4590BRK
4600JSR printdbl
4610EQUS "Do you want to either..."
4620BRK
4630JSR vdu
4640EQUB 31
4650EQUB 6
4660EQUB 4
4670EQUB 133
4680EQUB 11
4690EQUB 8
4700EQUB 129
4710BRK
4720JSR printdbl
4730EQUS "1) Load a game,"
4740BRK
4750JSR vdu
4760EQUB 31
4770EQUB 6
4780EQUB 7
4790EQUB 134
4800EQUB 11
4810EQUB 8
4820EQUB 132
4830BRK
4840JSR printdbl
4850EQUS "2) Use BASIC or,"
4860BRK
4870JSR vdu
4880EQUB 31
4890EQUB 6
4900EQUB 10
4910EQUB 131
4920EQUB 11
4930EQUB 8
4940EQUB 132
4950BRK
4960JSR printdbl
4970EQUS "3) Use * commands."
4980BRK
4990JSR vdu
5000EQUB 31
5010EQUB 6
5020EQUB 13
5030EQUB 130
5040EQUB 11
5050EQUB 8
5060EQUB 129
5070BRK
5080JSR printdbl
5090EQUS "Press (1-3) and RETURN:"
5100BRK
5110RTS
5120.language
5130LDA #error DIV 256
5140STA &203
5150LDA #error MOD 256
5160STA &202
5170.langstackset
5180LDX #255
5190TXS
5200CLI
5210JSR fx2001
5220JSR printhead
5230JSR window
5240JSR mmain
5250LDA #255
5260.mmloop
5270STA tempA
5280JSR &FFE0
5290TAX
5300LDA #31
5310JSR &FFEE
5320LDA #31
5330JSR &FFEE
5340LDA #12
5350JSR &FFEE
5360TXA
5370JSR &FFEE
5380LDA #8
5390JSR &FFEE
5400LDA #10
5410JSR &FFEE
5420TXA
5430JSR &FFEE
5440CMP #42
5450BEQ cli
5460CMP #13
5470BNE mmloop
5480LDA tempA
5490CMP #49
5500BEQ loadgame
5510CMP #50
5520BEQ doBASIC
5530CMP #51
5540BEQ cli
5550CMP #42
5560BEQ cli
5570JMP mmloop
5580.doBASIC
5590LDA #12
5600JSR &FFEE
5610LDA #187
5620JSR &FFF4
5630LDA #142
5640JMP &FFF4
5650.loadgame
5660LDA #12
5670JSR &FFEE
5680JSR fx2000
5690JMP bootchain ½JSR
5700JMP doBASIC
5710.fx2001
5720LDA #200
5730LDX #1
5740JMP &FFF4
5750.fx2000
5760LDA #200
5770LDX #0
5780JMP &FFF4
5790.cli
5800LDA #12
5810JSR &FFEE
5820JSR fx2000
5830.stackset
5840LDX #255
5850TXS
5860CLI
5870.shellloop
5880LDA #42
5890STA buffer
5900JSR &FFEE
5910LDX #shellblk MOD 256
5920LDY #shellblk DIV 256
5930LDA #0
5940JSR &FFF1
5950BCS escape
5960LDX #buffer MOD 256
5970LDY #buffer DIV 256
5980JSR &FFF7
5990JMP shellloop
6000.shellblk
6010EQUW buffer+1
6020EQUB 255
6030EQUB 32
6040EQUB 127
6050.escape
6060LDA #126
6070JSR &FFF4
6080BRK
6090EQUB 27
6100EQUS "Escape"
6110BRK
6120.error
6130LDY #1
6140JSR &FFE7
6150.errloop
6160LDA (&FD),Y
6170BEQ enderr
6180JSR &FFEE
6190INY
6200BNE errloop
6210.enderr
6220JSR &FFE7
6230JMP stackset
6240.unrecognised
6250LDX #0
6260.wordlp
6270LDY #0
6280.wdilp
6290INY
6300LDA (&F2),Y
6310CMP #42
6320BEQ wdilp
6330LDA comtab,X
6340BEQ notfound
6350.bytelp
6360LDA (&F2),Y
6370AND #223
6380CMP comtab,X
6390BNE nextword
6400LDA comtab+1,X
6410CMP #13
6420BEQ found
6430INX
6440INY
6450JMP bytelp
6460.nextword
6470INX
6480LDA comtab,X
6490BNE nextword
6500INX
6510JMP wordlp
6520.notfound
6530JMP restore
6540.found
6550INX
6560LDA #&4C
6570STA add
6580LDA comtab+1,X
6590STA add+1
6600STA &80
6610LDA comtab+2,X
6620STA add+2
6630STA &81
6640INY
6650.found2
6660LDA (&F2),Y
6670CMP #13
6680BEQ ok
6690CMP #32
6700BNE ok
6710INY
6720JMP found2
6730.ok
6740LDA comtab+3,X
6750CMP #1
6760BNE found3
6770LDA (&F2),Y
6780CMP #13
6790BEQ found3
6800JMP notfound
6810.found3
6820JSR add
6830JMP alldone
6840.comtab
6850OPT FNcom("BEEP",1)
6860OPT FNcom("SHELL",1)
6870OPT FNcom("HOME",1)
6880OPT FNcom("ECHO",3)
6890OPT FNcom("BACK",3)
6900OPT FNcom("DOUBLE",3)
6910OPT FNcom("TYPE",3)
6920OPT FNcom("SMALL",3)
6930OPT pass
6940BRK
6950.cBEEP
6960LDA #7
6970JMP &FFEE
6980.cHOME
6990LDA #30
7000JMP &FFEE
7010.cECHO
7020.cEClp
7030LDA (&F2),Y
7040CMP #13
7050BEQ cECend
7060CMP #124
7070BEQ cECcc
7080JSR &FFEE
7090INY
7100JMP cEClp
7110.cECend
7120JMP &FFE7
7130.cECcc
7140INY
7150LDA (&F2),Y
7160CMP #124
7170BEQ cECecc
7180SEC
7190SBC #64
7200.cECecc
7210INY
7220CMP #13
7230BEQ cEClf
7240JSR &FFEE
7250JMP cEClp
7260.cEClf
7270JSR &FFE7
7280JMP cEClp
7290.cBACK
7300STY temp
7310.cBKlp
7320LDA (&F2),Y
7330CMP #13
7340BEQ cBKprt
7350INY
7360JMP cBKlp
7370.cBKprt
7380LDA (&F2),Y
7390JSR &FFEE
7400DEY
7410CPY temp
7420BPL cBKprt
7430JMP &FFE7
7440.cDOUBLE
7450LDA &355
7460CMP #7
7470BEQ ttext
7480DEY
7490.cDBLlp
7500INY
7510LDA (&F2),Y
7520STY &100
7530CMP #13
7540BEQ d2
7550STA &101
7560LDA #10
7570LDX #257 MOD256
7580LDY #257 DIV256
7590JSR &FFF1
7600LDA #23
7610JSR &FFEE
7620LDA #255
7630JSR &FFEE
7640LDX #0
7650.d1
7660LDA &102,X
7670JSR &FFEE
7680JSR &FFEE
7690INX
7700CPX #4
7710BNE d1
7720LDA #255
7730JSR &FFEE
7740LDA #8
7750JSR &FFEE
7760LDA #10
7770JSR &FFEE
7780LDA #23
7790JSR &FFEE
7800LDA #255
7810JSR &FFEE
7820.d1
7830LDA &102,X
7840JSR &FFEE
7850JSR &FFEE
7860INX
7870CPX #8
7880BNE d1
7890LDA #255
7900JSR &FFEE
7910LDA #11
7920JSR &FFEE
7930LDY &100
7940JMP cDBLlp
7950.d2
7960JSR &FFE7
7970JMP &FFE7
7980.ttext
7990LDA #141
8000JSR &FFEE
8010LDA #8
8020JSR &FFEE
8030LDA #10
8040JSR &FFEE
8050LDA #141
8060JSR &FFEE
8070.cDBLlp
8080LDA (&F2),Y
8090CMP #13
8100BEQ d2+3
8110JSR &FFEE
8120LDA #11
8130JSR &FFEE
8140LDA #8
8150JSR &FFEE
8160LDA (&F2),Y
8170JSR &FFEE
8180LDA #10
8190JSR &FFEE
8200INY
8210JMP cDBLlp
8220.cTYPE
8230LDA (&F2),Y
8240CMP #13
8250BNE cTYgetfle
8260LDA #13
8270STA &100
8280.cTYopen
8290LDX #256 MOD 256
8300LDY #256 DIV 256
8310LDA #&40
8320JSR &FFCE
8330STY &100
8340CLC
8350.cTYlp
8360JSR &FFD7
8370BCS cTYcl
8380CMP #32
8390BMI cTYcc
8400CMP #127
8410BEQ cTYcc
8420.cTYprt
8430JSR &FFEE
8440JMP cTYlp
8450.cTYcc
8460LDA #46
8470JMP cTYprt
8480.cTYcl
8490LDA #0
8500LDY &100
8510JMP &FFCE
8520.cTYgetfle
8530LDX #0
8540.gcTYlp
8550LDA (&F2),Y
8560STA &100,X
8570CMP #13
8580BEQ cTYopen
8590CMP #32
8600BEQ cTYeon
8610INX
8620INY
8630JMP gcTYlp
8640.cTYeon
8650LDA #13
8660STA &100,X
8670JMP cTYopen
8680.cSMALL
8690DEY
8700STY &100
8710.cSMlp
8720LDY &100
8730INY
8740STY &100
8750LDA (&F2),Y
8760CMP #13
8770BEQ cSMend
8780STA &101
8790LDA #10
8800LDX #257 MOD256
8810LDY #257 DIV256
8820JSR &FFF1
8830LDA #23
8840JSR &FFEE
8850LDA #255
8860JSR &FFEE
8870LDA #0
8880JSR &FFEE
8890LDX #1
8900JSR cSMvdu
8910INX
8920INX
8930JSR cSMvdu
8940INX
8950JSR cSMvdu
8960INX
8970JSR cSMvdu
8980INX
8990INX
9000JSR cSMvdu
9010LDA #0
9020JSR &FFEE
9030JSR &FFEE
9040LDA #255
9050JSR &FFEE
9060JMP cSMlp
9070.cSMvdu
9080LDA &101,X
9090JMP &FFEE
9100.cSMend
9110JMP &FFE7
9120.printdbl
9130PLA
9140STA temp
9150PLA
9160STA temp+1
9170LDA #141
9180JSR &FFEE
9190LDA #10
9200JSR &FFEE
9210LDA #8
9220JSR &FFEE
9230LDA #141
9240JSR &FFEE
9250LDY #0
9260BEQ pd2
9270.pd
9280LDA (temp),Y
9290BEQ pd1
9300TAX
9310JSR &FFEE
9320LDA #11
9330JSR &FFEE
9340LDA #8
9350JSR &FFEE
9360TXA
9370JSR &FFEE
9380LDA #10
9390JSR &FFEE
9400.pd2
9410INC temp
9420BNE pd
9430INC temp+1
9440BNE pd
9450.pd1
9460LDA temp+1
9470PHA
9480LDA temp
9490PHA
9500RTS
9510.print
9520LDA #0
9530.print2
9540STA temp2
9550PLA
9560STA temp
9570PLA
9580STA temp+1
9590LDY #0
9600BEQ p2
9610.p
9620LDA (temp),Y
9630CMP temp2
9640BEQ p1
9650JSR &FFE3
9660.p2
9670INC temp
9680BNE p
9690INC temp+1
9700BNE p
9710.p1
9720LDA temp+1
9730PHA
9740LDA temp
9750PHA
9760RTS
9770.vdu
9780LDA #0
9790.vdu2
9800STA temp2
9810PLA
9820STA temp
9830PLA
9840STA temp+1
9850LDY #0
9860BEQ v2
9870.v
9880LDA (temp),Y
9890CMP temp2
9900BEQ v1
9910JSR &FFEE
9920.v2
9930INC temp
9940BNE v
9950INC temp+1
9960BNE v
9970.v1
9980LDA temp+1
9990PHA
10000LDA temp
10010PHA
10020RTS
10030.prthex
10040PHA
10050LSR A
10060LSR A
10070LSR A
10080LSR A
10090JSR prthex2
10100PLA
10110.prthex2
10120AND #15
10130SED
10140CLC
10150ADC #&90
10160ADC #&40
10170CLD
10180JMP &FFEE
10190]
10200NEXT
10210CLS
10220PRINT"(S)ave or (I)nstall:";
10230REPEATA$=GET$:UNTILINSTR("SsIi",A$)
10240PRINTA$
10250IF INSTR("Ss",A$) INPUT'"Filename:"
A$:OSCLI"Save "+A$+" "+STR$÷code%+" "+ST
R$÷O% ELSE INPUT"Which Rom (0-15/W-Z):"i
d$:OSCLI "SRWRITE "+STR$÷code%+" "+STR$÷
O%+" 8000 "+id$:PRINT"Press CTRL-Break t
o install.":END
10260END
10270DEFFNcom(c$,F%)
10280[OPT pass
10290EQUS c$
10300EQUB 13
10310EQUW EVAL("c"+c$)
10320EQUB F%
10330BRK
10340]:=0