mirror of
https://github.com/zellyn/goapple2.git
synced 2024-12-01 21:50:13 +00:00
86 lines
3.1 KiB
Plaintext
86 lines
3.1 KiB
Plaintext
1010 *--------------------------------
|
|
1020 * "NEXT" STATEMENT
|
|
1030 *--------------------------------
|
|
1040 NEXT BNE NEXT.1 VARIABLE AFTER "NEXT"
|
|
1050 LDY #0 FLAG BY SETTING FORPNT+1 = 0
|
|
1060 BEQ NEXT.2 ...ALWAYS
|
|
1070 *--------------------------------
|
|
1080 NEXT.1 JSR PTRGET GET PNTR TO VARIABLE IN (Y,A)
|
|
1090 NEXT.2 STA FORPNT
|
|
1100 STY FORPNT+1
|
|
1110 JSR GTFORPNT FIND FOR-FRAME FOR THIS VARIABLE
|
|
1120 BEQ NEXT.3 FOUND IT
|
|
1130 LDX #ERR.NOFOR NOT THERE, ABORT
|
|
1140 GERR BEQ JERROR ...ALWAYS
|
|
1150 NEXT.3 TXS SET STACK PTR TO POINT TO THIS FRAME,
|
|
1160 INX WHICH TRIMS OFF ANY INNER LOOPS
|
|
1170 INX
|
|
1180 INX
|
|
1190 INX
|
|
1200 TXA LOW BYTE OF ADRS OF STEP VALUE
|
|
1210 INX
|
|
1220 INX
|
|
1230 INX
|
|
1240 INX
|
|
1250 INX
|
|
1260 INX
|
|
1270 STX DEST LOW BYTE ADRS OF FOR VAR VALUE
|
|
1280 LDY /STACK (Y,A) IS ADDRESS OF STEP VALUE
|
|
1290 JSR LOAD.FAC.FROM.YA STEP TO FAC
|
|
1300 TSX
|
|
1310 LDA STACK+9,X
|
|
1320 STA FAC.SIGN
|
|
1330 LDA FORPNT
|
|
1340 LDY FORPNT+1
|
|
1350 JSR FADD ADD TO FOR VALUE
|
|
1360 JSR SETFOR PUT NEW VALUE BACK
|
|
1370 LDY /STACK (Y,A) IS ADDRESS OF END VALUE
|
|
1380 JSR FCOMP2 COMPARE TO END VALUE
|
|
1390 TSX
|
|
1400 SEC
|
|
1410 SBC STACK+9,X SIGN OF STEP
|
|
1420 BEQ .2 BRANCH IF FOR COMPLETE
|
|
1430 LDA STACK+15,X OTHERWISE SET UP
|
|
1440 STA CURLIN FOR LINE #
|
|
1450 LDA STACK+16,X
|
|
1460 STA CURLIN+1
|
|
1470 LDA STACK+18,X AND SET TXTPTR TO JUST
|
|
1480 STA TXTPTR AFTER FOR STATEMENT
|
|
1490 LDA STACK+17,X
|
|
1500 STA TXTPTR+1
|
|
1510 .1 JMP NEWSTT
|
|
1520 .2 TXA POP OFF FOR-FRAME, LOOP IS DONE
|
|
1530 ADC #17 CARRY IS SET, SO ADDS 18
|
|
1540 TAX
|
|
1550 TXS
|
|
1560 JSR CHRGOT CHAR AFTER VARIABLE
|
|
1570 CMP #',' ANOTHER VARIABLE IN NEXT?
|
|
1580 BNE .1 NO, GO TO NEXT STATEMENT
|
|
1590 JSR CHRGET YES, PRIME FOR NEXT VARIABLE
|
|
1600 JSR NEXT.1 (DOES NOT RETURN)
|
|
1610 *--------------------------------
|
|
1620 * EVALUATE EXPRESSION, MAKE SURE IT IS NUMERIC
|
|
1630 *--------------------------------
|
|
1640 FRMNUM JSR FRMEVL
|
|
1650 *--------------------------------
|
|
1660 * MAKE SURE (FAC) IS NUMERIC
|
|
1670 *--------------------------------
|
|
1680 CHKNUM CLC
|
|
1690 .HS 24 DUMMY FOR SKIP
|
|
1700 *--------------------------------
|
|
1710 * MAKE SURE (FAC) IS STRING
|
|
1720 *--------------------------------
|
|
1730 CHKSTR SEC
|
|
1740 *--------------------------------
|
|
1750 * MAKE SURE (FAC) IS CORRECT TYPE
|
|
1760 * IF C=0, TYPE MUST BE NUMERIC
|
|
1770 * IF C=1, TYPE MUST BE STRING
|
|
1780 *--------------------------------
|
|
1790 CHKVAL BIT VALTYP $00 IF NUMERIC, $FF IF STRING
|
|
1800 BMI .2 TYPE IS STRING
|
|
1810 BCS .3 NOT STRING, BUT WE NEED STRING
|
|
1820 .1 RTS TYPE IS CORRECT
|
|
1830 .2 BCS .1 IS STRING AND WE WANTED STRING
|
|
1840 .3 LDX #ERR.BADTYPE TYPE MISMATCH
|
|
1850 JERROR JMP ERROR
|