50 SYS 700 100 *=$0A18 ; $1E52 FOR 128 110 ; SET UP INIT FLIGHT DATA 120 LDX #0 130 ILP LDA IVAL,X 140 STA ALT,X 150 INX 160 CPX #ISZ 170 BNE ILP 180 ; BIG LOOP - RECALCULATE, DISPLAY 190 BLP LDA #$01 200 STA TOG 210 ; WAIT UNTIL RASTER FLYBACK 220 RPL LDA $D012 230 CMP RST 240 STA RST 250 BCS RPL 260 LDA $D011 270 BMI RPL 280 ; IF NO FUEL, THRUST = 0 290 ZLP SED 300 LDA #$30 310 LDX FUE 320 BMI NOF1 330 ; READ KEYBOARD, CHECK 1 TO 9 340 JSR $FFE4 350 CMP #$31 360 BCC NOKY 370 CMP #$3A 380 BCS NOKY 390 ; SET NEW THRUST VALUES 400 NOF1 STA TH2 410 STA $04A8 420 AND #$0F 430 STA TH1 440 LDY #0 450 SEC 460 SBC #5 470 BPL THX 480 LDY #$99 490 THX STA ACC+1 500 STY ACC 510 ; CALCULATE ACCEL, VELOC, ALT 520 NOKY LDX #5 530 FLY CLC 540 LDA ALT,X 550 ADC ALT+2,X 560 STA ALT,X 570 DEX 580 LDA ALT,X 590 ADC ALT+2,X 600 STA ALT,X 610 LDA #0 620 LDY ALT+2,X 630 BPL POZZ 640 LDA #$99 650 POZZ DEX 660 ADC ALT,X 670 STA ALT,X 680 DEX 690 BPL FLY 700 ; FUEL = FUEL - THRUST 710 SEC 720 LDA FUE+2 730 SBC TH1 740 STA FUE+2 750 LDA FUE+1 760 SBC #0 770 STA FUE+1 780 LDA FUE 790 SBC #0 800 BPL GFU 810 ; SET SPECIAL VALUE FOR NO FUEL 820 LDA #$00 830 STA FUE+2 840 STA FUE+1 850 LDA #$F0 860 GFU STA FUE 870 DEC TOG 880 BPL NOKY 890 ; EXIT IF LANDED/TOO HIGH 900 LDA ALT 910 BMI EXIT 920 LDY ALT+1 930 ; SETUP ALTITUDE DISPLAY 940 JSR DIG4 950 LDX #3 960 DGL1 LDA DGS,X 970 STA $430,X 980 DEX 990 BPL DGL1 1000 ; SPECIAL CODE FOR "+/-" VELOCITY 1010 LDY VEL+1 1020 LDA #$2B 1030 LDX VEL 1040 BPL PVL 1050 SEC 1060 LDA #0 1070 SBC VEL+1 1080 TAY 1090 LDA #0 1100 SBC VEL 1110 TAX 1120 LDA #$2D 1130 PVL STA $0458 1140 TXA 1150 ; SETUP VELOCITY DISPLAY 1160 JSR DIG4 1170 LDX #2 1180 DGL2 LDA DGS+1,X 1190 STA $459,X 1200 DEX 1210 BPL DGL2 1220 LDA FUE 1230 LDY FUE+1 1240 ; SETUP FUEL DISPLAY 1250 JSR DIG4 1260 LDX #2 1270 DGL3 LDA DGS+1,X 1280 STA $481,X 1290 DEX 1300 BPL DGL3 1310 ; LOOP UNLESS STOP KEY PRESSED 1320 CLD 1330 JSR $FFE1 1340 BEQ EXIT 1350 JMP BLP 1360 ; EXIT BACK TO BASIC 1370 EXIT CLD 1380 RTS 2000 ; THIS SUBROUTINE SPLITS Y/A 2010 ; INTO 4 DECIMAL DIGITS. 2020 ; NOTE THE RE-ENTRANT CODE. 2030 DIG4 LDX #3 2040 PHA 2050 TYA 2060 JSR DIG2 2070 PLA 2080 DIG2 PHA 2090 AND #$0F 2100 JSR DIG1 2110 PLA 2120 LSR A 2130 LSR A 2140 LSR A 2150 LSR A 2160 DIG1 ORA #$30 2170 STA DGS,X 2180 DEX 2190 RTS 3000 ; HERE ARE THE INITIAL FLIGHT 3010 ; PARAMETERS: 3020 ; ALTITUDE & VELOCY (3 BYTES EACH) 3030 IVAL .BYTE $45,0,0, $99,$98,0 3040 ; ACCEL & FUEL (3 BYTES EACH) 3050 .BYTE $99,$98,0, 8,0,0 3060 ; THRUST AS BINARY AND ASCII 3070 .BYTE 3,$33 4000 ; WORKING VARIABLES, NOT LOADED 4010 ; WITH THE PROGRAM. 4020 ALT *=*+3 ; ALTITUDE 4030 VEL *=*+3 ; VELOCITY 4040 ACC *=*+3 ; ACCELERATION 4050 FUE *=*+3 ; FUEL 4060 TH1 *=*+1 ; THRUST BINARY 4070 TH2 *=*+1 ; THRUST ASCII 4080 ISZ =*-ALT ; SIZE OF INIT TABLE 4090 RST *=*+1 ; RASTER TRACKER 4100 TOG *=*+1 ; TWO-TIMING COUNT 4110 DGS *=*+4 ; DECIMAL DIGITS