8-Bit Software Online Conversion

:2.t.TETRMAC - Listing

10REM T E T R T E M P 20REM 30REM Questo programma e' diviso in tre parti: 2 in Assembly (la prima da richiamare nella mem. princip. ogni 2 cs tramite tempor. di intervallo e la seconda da inserire in ROM e 40REM richiamare ogni 1 cs tramite polling interrupt (codice &15)) ed una in BASIC (consente una simulazione per la prova dei due programmi in linguaggio macchina). Per assemblare i due 50REM programmi (il primo comincia a &2016 invece che &2000 perche' prima inizializza le variabili, mentre il secondo e' a &2500) eseguire (RUN); per la prova andare alla linea 1320 (tra la 60REM parte in Assembly e quella in BASIC c'e' un END). 70REM 80REM 90REM Prima parte Assembly 100REM 110FORC=0TO2STEP2 120P%=&900 130[ 140OPTC 150.down EQUB 0 160.down1 EQUB 0 170.dtime EQUB 0 180.dtime1 EQUB 0 190.left EQUB 0 200.left1 EQUB 0 210.right EQUB 0 220.right1 EQUB 0 230.change EQUB 0 240.change1 EQUB 0 250.lrtime EQUB 8 260.speed EQUB 0 270.speed1 EQUB 0 280.lflag EQUB 0 290.lflag1 EQUB 0 300.rflag EQUB 0 310.rflag1 EQUB 0 320.cflag EQUB 0 330.cflag1 EQUB 0 340.dflag EQUB 0 350.dflag1 EQUB 0 360.pflag EQUB 0 370.pflag1 EQUB 0 380.pause EQUB 0 390.pause1 EQUB 0 400.ptime EQUB 0 410.ptime1 EQUB 0 420.ctime EQUB 12 430.ultratime EQUB 4 440.lpress EQUB 0 450.screensp EQUB 35 460.screensp1 EQUB 35 470.rightkey EQUB 189 480.rightmov EQUB 16 490.leftkey EQUB 158 500.leftmov EQUB 2 510.changekey EQUB 182 520.changemov EQUB 1 530.downkey EQUB 255 540.downmov EQUB 4 550.pausekey EQUB 200 560.pausemov EQUB 8 570.players EQUB 0 580.device1 EQUB 0 590.device2 EQUB 1 600.player EQUB 0 610.device EQUB 0 620.passage EQUB 0 630.temp0 EQUB -2 640EQUB -1 650EQUB -1 660EQUB -1 670EQUB -1 680LDA #4 690LDX #temp0 MOD 256 700LDY #temp0 DIV 256 710JSR &FFF1 720.intbeg LDA players 730INA 740CMP passage 750BNE again 760JMP endkey 770.again DEA 780STA player 790TAX 800LDA device1,X 810STA device 820TAX 830LDA leftkey,X 840JSR check 850STA lpress 860LDX player 870TAY 880BNE notleft 890INC left,X 900LDA left,X 910CMP lrtime 920BNE notleft1 930STZ left,X 940INC lflag,X 950BRA notleft1 960.notleft LDA lrtime 970DEA 980STA left,X 990.notleft1 LDX device 1000LDA rightkey,X 1010JSR check 1020LDX player 1030TAY 1040BNE notright 1050CMP lpress 1060BEQ notright 1070INC right,X 1080LDA right,X 1090CMP lrtime 1100BNE notright1 1110STZ right,X 1120INC rflag,X 1130BRA notright1 1140.notright LDA lrtime 1150DEA 1160STA right,X 1170.notright1 LDX device 1180LDA changekey,X 1190JSR check 1200LDX player 1210TAY 1220BNE notchange 1230INC change,X 1240LDA change,X 1250CMP ctime 1260BNE notchange1 1270STZ change,X 1280INC cflag,X 1290BRA notchange1 1300.notchange LDA ctime 1310DEA 1320STA change,X 1330.notchange1 LDX device 1340LDA downkey,X 1350JSR check 1360LDX player 1370TAY 1380BNE notdown 1390INC speed,X 1400LDA speed,X 1410CMP ultratime 1420BCS ultras 1430LDA #9 1440STA dtime,X 1450LDA speed,X 1460CMP #1 1470BNE notfirst 1480INC dflag,X 1490.notfirst LDA down,X 1500CMP #9 1510BCC pauschk 1520STZ down,X 1530BRA pauschk 1540.ultras LDA #5 1550STA dtime,X 1560LDA down,X 1570CMP #5 1580BCC pauschk 1590STZ down,X 1600BRA pauschk 1610.notdown LDA screensp,X se non e' premuto speed rimette a default la v elocita' 1620STA dtime,X 1630STZ speed,X 1640.pauschk LDX device 1650LDA pausekey,X 1660JSR check 1670LDX player 1680TAY 1690BNE notpause 1700INC pause,X 1710LDA pause,X 1720CMP ptime,X 1730BNE end 1740STZ pause,X 1750INC pflag,X 1760BRA end 1770.notpause LDA #255 1780STA pause,X 1790.end INC passage 1800JMP intbeg 1810.check LDX device 1820BNE joy 1830TAX 1840LDA #129 1850LDY #255 1860JSR &FFF4 1870CPX #255 1880BEQ kpresd 1890BNE knpresd 1900.joy AND &FE60 1910BEQ kpresd 1920.knpresd LDA #255 1930RTS 1940.kpresd LDA #0 1950RTS 1960.endkey STZ lpress 1970STZ passage 1980RTS 1990] 2000NEXTC 2010REM Seconda parte Assembly 2020REM 2030FORC=4TO6STEP2 2040O%=&2500 2050P%=&802B 2060[ 2070OPTC 2080INC down 2090LDA down 2100CMP dtime 2110BNE scdck 2120INC dflag 2130STZ down 2140.scdck INC down1 2150LDA down1 2160CMP dtime1 2170BNE end1 2180INC dflag1 2190STZ down1 2200.end1 RTS 2210] 2220NEXT C 2230GOTO2480 2240REM Parte B A S I C 2250C%=-1 2260C%=C%+1 2270CALL &2500 2280IF C% MOD 2=0 THEN CALL &2015 2290PRINT"left",?left 2300PRINT"right",?right 2310PRINT"down",?down 2320PRINT"change",?change 2330PRINT"lflag",?lflag 2340PRINT"rflag",?rflag 2350PRINT"cflag",?cflag 2360PRINT"dflag",?dflag 2370PRINT"speed",?speed 2380PRINT"dtime",?dtime 2390PRINT"lpress",?lpress 2400?dflag=0 2410?lflag=0 2420?rflag=0 2430?cflag=0 2440PRINT:GOTO2260 2450REM 2460REM T E T R M A C 2470REM 2480FORC=0TO2STEP2 2490bloctab=&8000 :REM tab. grafica 2500shptable=&8600:REM forme pezzi 2510chgtbl=&86E4 :REM cambi pezzi 2520newtab=&86F7 :REM indice newtock 2530rndtab=&8700 :REM tabella random 2540scrtab=&8800 :REM mappa schermo 2550durtab=&8A00 :REM flags durezza 2560blink1=&8C00 :REM lampeggio1 2570bord=&8CA0 :REM bordi schermo 2580blink2=&8D00 :REM lampeggio2 2590ztab=&8DA0 :REM zona 96 zeri 2600P%=&E00 2610[ 2620OPTC 2630.SCR EQUD 0 rnd scratch 2640EQUW 0 2650.X EQUB 0 posizioni preced. 2660.X1 EQUB 0 dei blocchi del 2670.X2 EQUB 0 pezzo 2680.X3 EQUB 0 2690.X4 EQUB 0 2700.Y EQUB 0 2710.Y1 EQUB 0 2720.Y2 EQUB 0 2730.Y3 EQUB 0 2740.Y4 EQUB 0 2750.Z EQUB 0 tipo di pezzo prec. 2760.Z1 EQUB 0 2770.Z2 EQUB 0 2780.Z3 EQUB 0 2790.Z4 EQUB 0 2800.P EQUB 0 posizioni attuali 2810.P1 EQUB 0 dei blocchi del 2820.P2 EQUB 0 pezzo 2830.P3 EQUB 0 2840.P4 EQUB 0 2850.Q EQUB 0 2860.Q1 EQUB 0 2870.Q2 EQUB 0 2880.Q3 EQUB 0 2890.Q4 EQUB 0 2900.R EQUB 0 tipo di pezzo att. 2910.R1 EQUB 0 2920.R2 EQUB 0 2930.R3 EQUB 0 2940.R4 EQUB 0 2950.O EQUB 0 2960.V EQUB 0 2970.O1 EQUB 0 2980.V1 EQUB 0 2990.apflag EQUB 0 3000.linflag EQUB 0 contat. per controllo linee 3010.lines EQUB 0 linee riempite 3020.lin EQUB 0 linea completa 3030.rndptr EQUB 0 punt. numeri rnd 3040.temp EQUB 0 variabili 3050.temp1 EQUB 0 temporanee 3060.oper1 EQUB 0 fattori per 3070.oper2 EQUB 0 moltiplic. 3080.xoffset EQUB 4 valori x e y 3090.yoffset EQUB 3 della parte sup. 3100.xnext EQUB -2 pos. del next 3110.ynext EQUB 1 tock risp. all' angolo s.s. dello schermo di gioco. 3120.xcount EQUB 4 contatori ciclo 3130.ycount EQUB 2 canc. next 3140.rows EQUB 22 3150.columns EQUB 10 numero colonne 3160LDA #15 setta memoria 3170STA &FE34 3180LDX #0 colori off 3190.vdloop LDA vdu0,X 3200JSR &FFEE 3210INX 3220CPX #24 3230BNE vdloop 3240LDX #com0 MOD 256 disegna schermo 3250LDY #com0 DIV 256 3260JSR &FFF7 3270LDX #com1 MOD 256 3280LDY #com1 DIV 256 3290JSR &FFF7 3300LDX #0 setta colori 3310.vdloop1 LDA vdu10,X 3320JSR &FFEE 3330INX 3340CPX #18 3350BNE vdloop1 3360LDA &FE64 seme per 3370STA SCR+1 generatore 3380STA SCR+4 random 3390LDA #5 rende accessib. 3400STA &F4 RAM Sydeways#5 3410STA &FE30 3420.init0 LDY #0 Riempie tabella 3430.rdomloop JSR random di numeri 3440AND #&07 random 3450CMP #7 3460BEQ rdomloop 3470STA rndtab,Y 3480DEY 3490BNE rdomloop 3500LDX #0 3510.clrscrlp LDA vdu20,X svuota 3520JSR &FFEE schermo 3530INX 3540CPX #7 3550BNE clrscrlp 3560LDA #scrtab DIV 256 inizializza 3570JSR clrall tabella schermo 3580LDA #durtab DIV 256 e tabella 3590JSR clrall di durezza 3600STZ rndptr e punt. random 3610.init STZ speed iniz.vel.pezzo (punto di ritorno dopo caduta pezzo) 3620LDA screensp 3630STA dtime 3640STZ down 3650LDA xnext imp. punt. next 3660SEC 3670SBC #2 3680STA temp 3690LDA ynext 3700DEA 3710STA temp1 3720LDA #2 ciclo grande per 3730STA ycount le 2 linee 3740.clrloop LDA #4 3750STA xcount 3760LDA xnext 3770SEC 3780SBC #2 ciclo corto per 3790STA temp le due colonne 3800.clrloop1 LDA #1 imposta valori 3810STA O di graph per un 3820STA V solo blocco 3830LDA temp1 inserisce le 3840STA V1 coordinate 3850LDA temp 3860STA O1 3870STZ &53 3880JSR zero cancella 3890INC temp 3900DEC xcount doppio riciclo 3910BNE clrloop1 se non fine 3920INC temp1 3930DEC ycount 3940BNE clrloop 3950LDX rndptr carica 3960LDA rndtab+1,X pezzo next 3970TAX 3980LDA newtab,X carica n^ pezzo 3990STA Z 4000LDA xnext carica pos. xy 4010STA X del pezzo 4020LDA ynext 4030STA Y 4040JSR tock calcola pezzo 4050LDA #3 numero cicli 4060STA temp 4070.nxtloop LDX temp 4080LDA #1 un solo pezzo 4090STA O 4100STA V 4110LDA X1,X carica coord. 4120STA O1 4130LDA Y1,X 4140STA V1 4150LDA Z1,X 4160STZ &51 res. sp. lavoro 4170STZ &53 4180JSR nozero dis. blocco 4190DEC temp ricicla se non 4200BPL nxtloop fine 4210LDX rndptr 4220LDA rndtab,X 4230INC rndptr 4240TAX 4250LDA newtab,X 4260STA Z 4270LDA #1 4280STA Y 4290LDA columns pezzo in mezzo 4300LSR A 4310STA X 4320STZ apflag 4330.start JSR tock ritorno dopo ciclo di controllo e disegno 4340JSR legal controlla per 4350BEQ nvr fine partita 4360JMP termine 4370.nvr LDX #14 4380.copyloop LDA X,X 4390STA P,X 4400DEX 4410BPL copyloop 4420.chang LDA cflag premuto change? 4430BEQ lef 4440STZ cflag 4450LDA X controlla se 4460CMP #0 occorre spostare 4470BNE ctrlrgt il pezzo 4480LDA Z a sinistra... 4490CMP #7 4500BEQ lftset 4510CMP #11 4520BEQ lftset 4530CMP #15 4540BEQ lftset 4550BRA ctrlast 4560.lftset INC X 4570BRA ctrlend 4580.ctrlrgt LDA X ...a destra... 4590INA 4600CMP columns 4610BNE ctrlast 4620LDA Z 4630CMP #2 4640BEQ rgtset 4650CMP #5 4660BEQ rgtset 4670CMP #9 4680BEQ rgtset 4690CMP #13 4700BEQ rgtset 4710CMP #17 4720BEQ rgtset 4730CMP #19 4740BEQ rgtset 4750BRA ctrlend 4760.rgtset DEC X 4770BRA ctrlend 4780.ctrlast LDA Z ...controllo 4790CMP #2 speciale per 4800BNE ctrlend pezzo#2 a sin. 4810LDA X che si puo spos- 4820CMP #1 tare di 1 o 2 4830BEQ oneset passi 4840BCS ctrlend 4850INC X 4860.oneset INC X 4870.ctrlend LDX Z controllo lega- 4880DEX litTHEN change 4890LDA chgtbl,X 4900STA Z 4910JSR tock 4920JSR legal 4930BEQ lef 4940LDX #14 non legale, 4950.copyloop1 LDA P,X rimette a po- 4960STA X,X sto le variab. 4970DEX 4980BPL copyloop1 4990.lef LDA lflag left premuto? 5000BEQ righ 5010STZ lflag 5020DEC X controlla leg. 5030DEC X1 del left 5040DEC X2 5050DEC X3 5060DEC X4 5070JSR legal 5080BEQ righ 5090INC X illegale, rimet- 5100INC X1 te a posto le 5110INC X2 var. 5120INC X3 5130INC X4 5140.righ LDA rflag lo stesso per 5150BEQ paus right 5160STZ rflag 5170INC X 5180INC X1 5190INC X2 5200INC X3 5210INC X4 5220JSR legal 5230BEQ paus 5240DEC X 5250DEC X1 5260DEC X2 5270DEC X3 5280DEC X4 5290.paus LDA pflag pause premuto? 5300BEQ dow 5310STZ pflag 5320.pchk LDA pflag si, aspetta 5330BEQ pchk altra pressione 5340STZ pflag azzera var. 5350STZ down dopo la pausa 5360STZ lflag 5370STZ rflag 5380STZ cflag 5390STZ dflag 5400.dow LDA dflag down attivo? 5410BEQ piece 5420STZ dflag 5430INC Y controlla leg. 5440INC Y1 del down 5450INC Y2 5460INC Y3 5470INC Y4 5480JSR legal 5490BEQ piece 5500DEC Y down illegale, 5510DEC Y1 rimetti a posto 5520DEC Y2 var. e appoggia 5530DEC Y3 il pezzo 5540DEC Y4 5550JMP appoggio 5560.piece LDY #3 cancella pos. 5570.deloop LDA Q1,Y prec. 5580STA oper1 5590LDA columns 5600STA oper2 5610JSR multi 5620TXA 5630CLC 5640ADC P1,Y 5650TAX 5660LDA #128 5670STA scrtab,X 5680DEY 5690BPL deloop 5700LDY #3 5710.pieloop LDA Y1,Y piazza pezzo 5720STA oper1 nella nuova 5730LDA columns pos. 5740STA oper2 5750JSR multi 5760TXA 5770CLC 5780ADC X1,Y 5790TAX 5800LDA Z1,Y 5810ORA #128 5820STA scrtab,X 5830DEY 5840BPL pieloop 5850JSR graph dis. schermo 5860LDA apflag pezzo caduto? 5870BEQ goon 5880JMP init si, nuovo pezzo 5890.goon JMP start no, nuovo ciclo 5900.graph LDA rows calcola il 5910STA V numero di pas- 5920STA oper1 saggi necess. 5930LDA columns 5940STA O 5950STA oper2 5960JSR multi 5970DEX 5980.op STZ &50 azzera i punt. 5990STZ &51 di indirizzo 6000STZ &52 6010STZ &53 6020LDA O prepara le var. 6030DEA per il calcolo 6040STA O1 degli indirizzi 6050LDA V 6060DEA 6070STA V1 6080LDA scrtab,X carica blocco 6090BPL dec se bit#7=0, non 6100AND #127 disegnarlo 6110STA scrtab,X azzera bit#7 6120BNE nozero se blocco=0 6130.zero LDA #ztab DIV 256 evita 6140STA &51 calcolo indir. 6150LDA #ztab MOD 256 6160STA &50 6170BRA po52 6180.nozero DEA calcola indir. 6190STA &50 della definiz. 6200ASL &50 del blocco 6210ROL &51 6220ASL &50 6230ROL &51 6240ASL &50 6250ROL &51 6260ASL &50 6270ROL &51 6280LDA &51 6290CLC 6300ADC #bloctab DIV 256 6310STA &51 6320.po52 LDA O1 aggiungi offset 6330CLC della pos.sullo 6340ADC xoffset schermo 6350STA O1 6360LDA V1 6370CLC 6380ADC yoffset 6390STA V1 6400ASL A calcola indir. 6410ASL A grafico 6420ADC V1 6430STA &52 6440ASL &52 6450ROL &53 6460ASL &52 6470ROL &53 6480ASL &52 6490ROL &53 6500LDA &52 6510CLC 6520ADC O1 6530BCC vaben 6540INC &53 6550.vaben STA &52 6560ASL &52 6570ROL &53 6580ASL &52 6590ROL &53 6600ASL &52 6610ROL &53 6620ASL &52 6630ROL &53 6640LDA &53 6650CLC 6660ADC #&30 6670STA &53 6680LDY #15 ciclo per il 6690.gloop LDA (&50),Y disegno del 6700STA (&52),Y blocco 6710DEY 6720BPL gloop 6730.dec DEX decrementa le 6740DEC O variabili 6750BEQ plut se zero, 6760JMP op ritorna 6770.plut DEC V 6780BEQ final 6790LDA columns 6800STA O 6810JMP op 6820.final RTS 6830.appoggio STZ lines azzera #linee 6840LDY #3 controlla se 6850.govloop LDA Y1,Y fine partita 6860CMP #0 6870BNE notover 6880JMP termine 6890.notover DEY 6900BPL govloop 6910LDY #3 6920.durloop LDA Y1,Y attiva flags di 6930STA oper1 durezza approp- 6940LDA columns priati 6950STA oper2 6960JSR multi 6970TXA 6980CLC 6990ADC X1,Y 7000TAX 7010INC durtab,X 7020DEY 7030BPL durloop 7040INC apflag flag app. pezzo 7050.line LDX #0 controlla linee 7060STZ lin 7070.liip LDY columns ogni ciclo una 7080DEY linea 7090.ck LDA durtab,X 7100BNE hard 7110INC linflag 7120.hard INX 7130DEY 7140BPL ck 7150LDA linflag 7160BEQ linea linea completa? 7170STZ linflag no, controlla 7180CPX #220 altra linea 7190BCS endc fine? 7200INC lin 7210BRA liip 7220.endc JMP fuori fine 7230.linea STZ &50 routine per il 7240STZ &51 lampeggio 7250LDA lin calcola indir. 7260CLC di lampeggio 7270ADC yoffset 7280STA temp 7290ASL A 7300ASL A 7310ADC temp 7320STA &50 7330ASL &50 7340ROL &51 7350ASL &50 7360ROL &51 7370ASL &50 7380ROL &51 7390ASL &50 7400ROL &51 7410ASL &50 7420ROL &51 7430ASL &50 7440ROL &51 7450ASL &50 7460ROL &51 7470LDA xoffset aggiungi offset 7480STA temp orizzontale... 7490STZ temp1 7500ASL temp 7510ROL temp1 7520ASL temp 7530ROL temp1 7540ASL temp 7550ROL temp1 7560ASL temp 7570ROL temp1 7580LDA &50 7590CLC 7600ADC temp 7610STA &50 7620LDA &51 7630ADC temp1 7640ADC #&30 ...e della 7650STA &51 memoria video 7660STZ &52 7670LDA #blink1 DIV 256 inizia lamp. 7680STA &53 7690LDA #19 aspetta sinc.vert. 7700JSR &FFF4 7710JSR blink 7720LDA lin routine per scor- 7730INA rimento schermo 7740STA oper1 calcola primo byte 7750LDA columns da scorrere 7760STA oper2 7770JSR multi 7780DEX 7790TXA 7800SEC 7810SBC columns 7820TAY 7830STX temp 7840STY temp1 7850.shftlp1 LDA scrtab,Y loop di 7860ORA #128 scorr. schermo 7870STA scrtab,X 7880DEX 7890DEY 7900CPX #255 7910BNE shftlp1 7920LDX temp 7930LDY temp1 7940.shftlp2 LDA durtab,Y loop di 7950STA durtab,X scorr. flags di 7960DEX durezza 7970DEY 7980CPX #255 7990BNE shftlp2 8000INC lines inc. linee compl. 8010LDA #blink2 DIV 256 lampeggio 8020STA &53 8030LDA #19 8040JSR &FFF4 8050JSR blink 8060LDA #blink1 DIV 256 8070STA &53 8080LDA #19 8090JSR &FFF4 8100JSR blink 8110LDA #blink2 DIV 256 8120STA &53 8130LDA #19 8140JSR &FFF4 8150JSR blink 8160LDA #blink1 DIV 256 8170STA &53 8180LDA #19 8190JSR &FFF4 8200JSR blink 8210LDA #19 8220JSR &FFF4 8230JSR graph disegna schermo 8240JMP line controlla se ci sono altre linee 8250.fuori LDA lines non piu linee 8260BNE sd linee fatte=0? 8270JMP piece si, stesso pezzo 8280.sd JMP init no, nuovo pezzo 8290.termine LDA #14 fine game 8300STA &F4 8310STA &FE30 8320LDA #11 8330STA &FE34 8340RTS 8350.blink LDA columns disegna lamp. 8360ASL A calcola indir. 8370ASL A 8380ASL A 8390ASL A 8400DEA 8410TAY 8420.blinkloop LDA (&52),Y 8430STA (&50),Y 8440DEY 8450CPY #255 8460BNE blinkloop 8470RTS 8480.tock LDA Z routine che da nelle 8490DEA variabili XYZ i va- 8500STA Z1 ri dei blocchi del 8510ASL A pezzo in Z e le loro 8520ADC Z1 posizioni 8530ASL A 8540ASL A 8550TAX 8560LDA X 8570CLC 8580ADC shptable,X 8590STA X1 8600INX 8610LDA X 8620CLC 8630ADC shptable,X 8640STA X2 8650INX 8660LDA X 8670CLC 8680ADC shptable,X 8690STA X3 8700INX 8710LDA X 8720CLC 8730ADC shptable,X 8740STA X4 8750INX 8760LDA Y 8770CLC 8780ADC shptable,X 8790STA Y1 8800INX 8810LDA Y 8820CLC 8830ADC shptable,X 8840STA Y2 8850INX 8860LDA Y 8870CLC 8880ADC shptable,X 8890STA Y3 8900INX 8910LDA Y 8920CLC 8930ADC shptable,X 8940STA Y4 8950INX 8960LDA shptable,X 8970STA Z1 8980INX 8990LDA shptable,X 9000STA Z2 9010INX 9020LDA shptable,X 9030STA Z3 9040INX 9050LDA shptable,X 9060STA Z4 9070RTS 9080.legal LDY #3 cont. di ciclo 9090.legoop LDA X1,Y controllo bordo 9100CMP #255 sinistro 9110BEQ ille 9120CMP columns bordo destro 9130BEQ ille 9140LDA Y1,Y controllo bordo 9150CMP rows inferiore 9160BEQ ille 9170STA oper1 controllo coi 9180LDA columns blocchi gia 9190STA oper2 esistenti 9200JSR multi 9210TXA 9220CLC 9230ADC X1,Y 9240TAX 9250LDA durtab,X 9260BNE ille 9270DEY 9280BPL legoop 9290LDA #0 legale 9300RTS 9310.ille LDA #255 illegale 9320RTS 9330.random SEC routine numeri 9340LDA SCR+1 casuali 9350ADC SCR+4 9360ADC SCR+5 9370STA SCR 9380LDX #4 9390.rndlp LDA SCR,X 9400STA SCR+1,X 9410DEX 9420BPL rndlp 9430RTS 9440.clrall LDX #0 pone tutti 0 nella 9450STA ag+2 pagina contenuta in 9460.ag STZ &1000,X a 9470INX 9480BNE ag 9490RTS 9500.multi PHY moltiplicazione 9510LDA #0 fattori oper1 e 2 9520STA temp prodotto L in X 9530LDX #8 H in A 9540.LOOP LSR oper2 9550BCC NOADD 9560CLC 9570ADC oper1 9580.NOADD ROR A 9590ROR temp 9600DEX 9610BNE LOOP 9620TAY 9630LDX temp 9640PLY 9650RTS 9660.vdu0 EQUB 19:EQUB 0:EQUB 0:EQUB 0: EQUB 0:EQUB 0:EQUB 19:EQUB 1:EQUB 0:EQUB 0:EQUB 0:EQUB 0:EQUB 19:EQUB 2:EQUB 0:E QUB 0:EQUB 0:EQUB 0:EQUB 19:EQUB 3:EQUB 0:EQUB 0:EQUB 0:EQUB 0 9670.com0 EQUS"SRREAD 3000 4000 9000 5" :EQUB 13 9680.com1 EQUS"SRREAD 4000 8000 8000 6" :EQUB 13 9690.vdu10 EQUB 19:EQUB 1:EQUB 1:EQUB 0 :EQUB 0:EQUB 0:EQUB 19:EQUB 2:EQUB 2:EQU B 0:EQUB 0:EQUB 0:EQUB 19:EQUB 3:EQUB 7: EQUB 0:EQUB 0:EQUB 0 9700.vdu20 EQUB 28:EQUB 4:EQUB 24:EQUB 13:EQUB 5:EQUB 12:EQUB 26 9710] 9720NEXTC