Listing of file='CARACE.SRC;01' on disk='vmedia/ncc_23-sector.ccvf'
ORG 9000H START: NOP ;SPACE FOR JUMP NOP NOP LXI H,0 ;EXECUTED ONCE ONLY SHLD S1ST SHLD S2ND SHLD S3RD LXI H,N1ST MVI B,18 START1: MVI M,32 INX H MVI M,7 INX H DCR B JNZ START1 MVI A,0C3H STA START LXI H,START2 SHLD START+1 START2: MVI A,31 STA 33247 MVI A,201 STA 33221 LXI SP,8FF0H LXI H,TITLE CALL OS MVI A,1 CALL CI XRA A STA 33278 JMP SETUP SEED: DS 2 LFED: DS 1 OLDI: DS 1 USPOS: DS 2 USDI: DS 1 OILFG: DS 1 SCORE: DS 2 S1ST: DS 2 S2ND: DS 2 S3RD: DS 2 N1ST: DS 12 N2ND: DS 12 N3RD: DS 12 X1ST EQU 76A2H X2ND EQU 77A2H X3RD EQU 78A2H OS EQU 182AH BASOUT EQU 17C8H CMPHD EQU 1883H MOVDH EQU 1871H SETUP: LXI H,7DDEH SHLD USPOS XRA A STA OLDI STA USDI MVI A,32 STA OILFG LXI H,0 SHLD SCORE MVI A,10 STA LFED LXI H,MSG00 CALL OS CALL PRSCOR JMP MAIN PRSCOR: LXI H,HIGH1 CALL OS LHLD S1ST CALL DISPHL LXI H,N1ST LXI D,X1ST MVI B,12 CALL MOVDH LXI H,HIGH2 CALL OS LHLD S2ND CALL DISPHL LXI H,N2ND LXI D,X2ND MVI B,12 CALL MOVDH LXI H,HIGH3 CALL OS LHLD S3RD CALL DISPHL LXI H,N3RD LXI D,X3RD MVI B,12 CALL MOVDH LXI H,COFF ;3,64,0 CALL OS RET MAIN: CALL SCROLL CALL MOVUS CALL ERRTOP CALL ROAD CALL CARS CALL INKEY CALL OIL JMP MAIN OIL: LDA SCORE CPI 255 JNZ OIL5 MVI A,'.' STA OILFG RET OIL5: CPI 30 RNZ MVI A,32 STA OILFG RET CARS: MVI A,10 CALL RANDOM CPI 2 RNZ MVI A,7 CALL RANDOM INR A MOV B,A LDA LFED ADD B ADD A ADI 40H MOV L,A MVI H,70H ;HL=>ADDRESS OF CAR MVI M,'*' INX H INX H MVI M,'*' RET MOVUS: LHLD USPOS LDA USDI MOV B,A XRA A STA USDI MOV A,B ORA A JZ PRNUS DCR A JZ MOVUR MOVUL: MOV A,L ANI 127 CPI 67 JC PRNUS DCX H DCX H JMP PRNUS MOVUR: MOV A,L ANI 127 CPI 123 JNC PRNUS INX H INX H PRNUS: MOV A,M CPI ':' JZ CRASH CPI '*' JZ CRASH INX H INX H MOV A,M CPI ':' JZ CRASH CPI '*' JZ CRASH DCX H DCX H SHLD USPOS MVI M,'~' INX H MVI M,7 INX H MVI M,'|' INX H MVI M,7 LXI H,7EACH ;INC SCORE CALL INCREM LHLD SCORE INX H SHLD SCORE MVI A,10101010B OUT 6 RET CRASH: LXI H,MSG01 CALL OS MVI B,255 CRASH2: MOV C,B CRASH3: DCR C JNZ CRASH3 MVI A,10101010B OUT 6 DCR B JNZ CRASH2 LHLD SCORE ;DE=OUR SCORE XCHG LHLD S1ST CALL CMPHD JNC HSCR2 LHLD S2ND ;ROLL DOWN SCORES SHLD S3RD LXI H,N2ND LXI D,N3RD MVI B,12 CALL MOVDH LHLD S1ST SHLD S2ND LXI H,N1ST LXI D,N2ND MVI B,12 CALL MOVDH LHLD SCORE SHLD S1ST LXI H,M1ST CALL OS LXI H,N1ST JMP HSCR9 HSCR2: LHLD S2ND CALL CMPHD JNC HSCR3 LHLD S2ND SHLD S3RD LXI H,N2ND LXI D,N3RD MVI B,12 CALL MOVDH LHLD SCORE SHLD S2ND LXI H,M2ND CALL OS LXI H,N2ND JMP HSCR9 HSCR3: LHLD S3RD CALL CMPHD JNC HSCR99 LHLD SCORE SHLD S3RD LXI H,M3RD CALL OS LXI H,N3RD HSCR9: PUSH H LXI H,HIMSG CALL OS POP H MVI B,0 HSCR91: MVI A,1 ;60 SEC INKEY CALL CI ORA A JZ HSCR6 CPI 13 JZ HSCR6 CPI 26 JZ HSCR5 CPI 65 JC HSCR91 CPI 91 JNC HSCR91 MOV C,A MOV A,B CPI 6 JZ HSCR91 MOV A,C MOV M,A INX H MVI M,7 INX H INR B CALL BASOUT MVI A,32 CALL BASOUT JMP HSCR91 HSCR5: MOV A,B ORA A JZ HSCR91 DCR B DCX H DCX H MVI A,26 CALL BASOUT MVI A,26 CALL BASOUT MVI A,'_' CALL BASOUT MVI A,26 CALL BASOUT JMP HSCR91 HSCR6: MOV A,B CPI 6 JZ HSCR99 MOV A,B HSCR7: MVI M,32 INX H MVI M,7 INX H PUSH PSW MVI A,32 CALL BASOUT MVI A,32 CALL BASOUT POP PSW INR A CPI 6 JNZ HSCR7 HSCR99: POP H LXI H,MSG03 CALL OS HSCR9A: MVI A,45 ;15 SEC INKEY CALL CI CPI 13 JNZ HSCR9A JMP SETUP ;DRAWS ONE LINE OF ROADWAY ROAD: MVI A,3 CALL RANDOM DCR A ;A=-1,0,1 MOV B,A LDA OLDI ;LAST DIRECTION ADD B CPI -2 JZ ROAD CPI 2 JZ ROAD ;A=NEWDI STA OLDI LXI H,6040H MOV B,A LDA LFED ADD B MOV B,A ;B=NEW LFED ORA A JZ LOOP2 ;0-22 BOUNDARIES CPI 22 JNZ LOOP3 LOOP2: LDA LFED MOV B,A LOOP3: INX H INX H DCR A JNZ LOOP3 MOV A,B STA LFED MVI M,':' LXI D,20 DAD D MVI M,':' RET SCROLL: DI ;FASTER LXI H,6FFEH LXI D,6F7EH LXI B,03C1H SCROL5: LDAX D MOV M,A DCX H DCX H DCX D DCX D MOV A,L ANI 127 CPI 64 JZ SCROL7 SCROL6: DCX B MOV A,B ORA C JNZ SCROL5 EI ;SLOWER RET SCROL7: PUSH B LXI B,-66 DAD B XCHG DAD B XCHG POP B JMP SCROL6 ERRTOP: LXI H,7040H ;ERASES THE TOP LINE MVI B,32 LDA OILFG MOV C,A ERRTP5: MOV M,C INX H MVI M,7 INX H DCR B JNZ ERRTP5 RET INKEY: LDA 33279 CPI 50H JZ INKEY LDA 33278 CPI 1 JZ BASOUT CPI 27 JZ START2 CPI 146 JNZ INKLR LXI H,N1ST MVI B,18 INKEY1: MVI M,32 INX H MVI M,7 INX H DCR B JNZ INKEY1 LXI H,0 SHLD S1ST SHLD S2ND SHLD S3RD LXI H,MSG07 CALL OS XRA A STA 33278 INKLR: MVI A,5 OUT 7 IN 1 ANI 32 JNZ INKEYR MVI A,6 ;CHECK FOR BOTH KEYS DOWN OUT 7 IN 1 ANI 32 RZ MVI A,-1 STA USDI RET INKEYR: MVI A,6 OUT 7 IN 1 ANI 32 RNZ MVI A,1 STA USDI RET CI: STA 33209 XRA A STA 33278 CI5: LDA 33209 ORA A RZ LDA 33278 ORA A JZ CI5 RET INCREM: MOV A,M CPI '9' JZ INCRM5 CPI ' ' JZ INCRM8 INR M RET INCRM5: MVI M,'0' DCX H DCX H JMP INCREM INCRM8: MVI M,'1' RET RANDOM: PUSH H PUSH B MOV B,A RNDOM1: LHLD SEED MVI C,8 RNDOM2: MOV A,H RRC XRA H RRC RRC XRA H RRC XRA C RRC RRC RRC XRI 1 ANI 1 DAD H ADD L MOV L,A DCR C JNZ RNDOM2 SHLD SEED MOV A,H ADD L MOV H,A MOV A,B RNDOM3: MOV L,A ADD B CMP B JNC RNDOM3 MOV A,H CMP L JNC RNDOM1 RNDOM4: CMP B JC RNDOM5 SUB B JMP RNDOM4 RNDOM5: POP B POP H RET DISPHL: MVI B,0 XCHG DISPH3: LXI H,-1000 DAD D JNC DISPH5 INR B XCHG JMP DISPH3 DISPH5: MOV A,B ORI '0' CALL BASOUT MVI B,0 DISPH7: LXI H,-100 DAD D JNC DISPH8 INR B XCHG JMP DISPH7 DISPH8: MOV A,B ORI '0' CALL BASOUT MOV A,E MVI B,0 DISPH9: CPI 10 JC DISPHA SUI 10 INR B JMP DISPH9 DISPHA: MOV C,A MOV A,B ORI '0' CALL BASOUT MOV A,C ORI '0' CALL BASOUT RET TITLE: DB 6,6,12,27,24,15,30,3,25,2 DB 'te ~| nd ~| te ne',3,25,3 DB 'v',127,' no n| no v',127,' {',29,'j' DB 3,50,0,6,6,'V1.0 ',6,1,'BY G.EPPS' DB 6,2,3,10,7 DB 'HOW FAR CAN YOU DRIVE WITHOUT CRASHING ?' DB 6,3,3,20,20 DB 'USE: ',6,2,'<gg',6,3,' TO MOVE LEFT' DB 6,2,3,30,22,'gg>',6,3,' TO MOVE RIGHT' DB 6,1,3,30,24,'<ESC>',6,3,' TO END GAME' DB 6,6,3,20,27,'[COMMAND] - [R] ',6,3,'TO RESET HIGH-SCORES' DB 6,7,3,13,10,'DODGE OTHER CARS, KEEP WITHIN ROAD BOUNDARIES' DB 3,19,12,'WATCH FOR FOG-PATCHES' DB 6,5,3,20,15,'<< HIT ANY KEY TO START >>' DB 6,7,3,64,0,239 MSG00: DB 6,7,12,14,29,6,5,3,9,2,'C A R A C E',15 DB 3,2,5,6,2,'BY GARRY EPPS 27/9/81' DB 3,31,0,27,10,237,32,'n',238,27,24 DB 3,3,10,6,7,'HIGH SCORES TO DATE:' DB 3,2,29,6,3,'CURRENT SCORE > 00000' DB 8,6,7,237,32,9,9,9,9,25 DB '.........: :.........',13,10,238 DB 3,47,27,6,7,'~|',239 MSG01: DB 6,65,3,10,31,'CRASH-CRASH-CRASH',6,7,3,64,0,239 MSG03: DB 6,6,3,2,7,'HIT <RETURN> TO RESTART >',6,7,239 MSG07: DB 6,7,3,12,13,'0000 ' DB 3,12,15,'0000 ' DB 3,12,17,'0000 ',3,64,0,239 HIGH1: DB 3,6,13,'1ST - ',239 HIGH2: DB 3,6,15,'2ND - ',239 HIGH3: DB 3,6,17,'3RD - ',239 COFF: DB 3,64,0,239 HIMSG: DB 3,0,26,'ENTER YOUR NAME BELOW.' DB 3,5,27,'_ _ _ _ _ _',3,5,27,239 M1ST: DB 3,5,22,'CONGRATULATIONS:' DB 3,1,23,'YOU GOT THE HIGHEST' DB 3,4,24,'SCORE TODAY.',239 M2ND: DB 3,5,22,'CONGATULTIONS:' DB 3,1,23,'YOU GOT THE 2ND HIGHEST' DB 3,4,24,'SCORE TODAY.',239 M3RD: DB 3,5,22,'CONGRATULTIONS:' DB 3,1,23,'YOU GOT THE 3RD HIGHEST' DB 3,4,24,'SCORE TODAY.',239 END START