basic2.inc
1:
2: .segment "HEADER"
3:
4: BASIC_START:
5:
6: bRESTART:
7: .addr LE394
8: .addr LE37B
9: .byte "CBMBASIC"
10:
11:
12:
13:
14:
15:
16: .segment "VECTORS"
17:
18: .segment "KEYWORDS"
19:
20: CONFIG_FILE=1
21: CONFIG_CBM_ALL=1
22: CONFIG_2=1
23:
24: .include "token.s"
25:
26: .segment "VECTORS"
27:
28: bSTMDSP = TOKEN_ADDRESS_TABLE
29: bFUNDSP = UNFNC
30:
31:
32:
33:
34:
35:
36:
37:
38: bOPTAB = MATHTBL
39:
40:
41:
42: bRESLST = TOKEN_NAME_TABLE
43:
44:
45:
46:
47:
48:
49: TokPi = $FF
50:
51:
52: .segment "ERROR"
53:
54:
55:
56:
57: ErrTooManyFiles = 1
58: ErrFileOpen = 2
59: ErrFileNotOpen = 3
60: ErrFileNotFound = 4
61: ErrDeviceNotPresent = 5
62: ErrNotInputFile = 6
63: ErrNotOutputFile = 7
64: ErrMissingFileName = 8
65: ErrIllegalDeviceNumber = 9
66: ErrNextWithoutFor = 10
67: ErrSyntax = 11
68: ErrReturnWithoutGosub = 12
69: ErrOutOfData = 13
70: ErrIllegalQuantity = 14
71: ErrOverflow = 15
72: ErrOutOfMemory = 16
73: ErrUndefinedStatement = 17
74: ErrBadSubscript = 18
75: ErrRedimdArray = 19
76: ErrDivisionByZero = 20
77: ErrIllegalDirect = 21
78: ErrTypeMismatch = 22
79: ErrStringTooLong = 23
80: ErrFileData = 24
81: ErrFormulaTooComplex = 25
82: ErrCantContinue = 26
83: ErrUndefdFunction = 27
84: ErrVerify = 28
85: ErrLoad = 29
86: ErrBreak = 30
87:
88:
89: bERRTAB:
90: StrTooManyFiles:
91: htasc "TOO MANY FILES"
92: StrFileOpen:
93: htasc "FILE OPEN"
94: StrFileNotOpen:
95: htasc "FILE NOT OPEN"
96: StrFileNotFound:
97: htasc "FILE NOT FOUND"
98: StrDeviceNotPresent:
99: htasc "DEVICE NOT PRESENT"
100: StrNotInputFile:
101: htasc "NOT INPUT FILE"
102: StrNotOutputFile:
103: htasc "NOT OUTPUT FILE"
104: StrMissingFileName:
105: htasc "MISSING FILE NAME"
106: StrIllegalDeviceNumber:
107: htasc "ILLEGAL DEVICE NUMBER"
108: StrNextWithoutFor:
109: htasc "NEXT WITHOUT FOR"
110: StrSyntax:
111: htasc "SYNTAX"
112: StrReturnWithoutGosub:
113: htasc "RETURN WITHOUT GOSUB"
114: StrOutOfData:
115: htasc "OUT OF DATA"
116: StrIllegalQuantity:
117: htasc "ILLEGAL QUANTITY"
118: StrOverflow:
119: htasc "OVERFLOW"
120: StrOutOfMemory:
121: htasc "OUT OF MEMORY"
122: StrUndefinedStatement:
123: htasc "UNDEF'D STATEMENT"
124: StrBadSubscript:
125: htasc "BAD SUBSCRIPT"
126: StrRedimdArray:
127: htasc "REDIM'D ARRAY"
128: StrDivisionByZero:
129: htasc "DIVISION BY ZERO"
130: StrIllegalDirect:
131: htasc "ILLEGAL DIRECT"
132: StrTypeMismatch:
133: htasc "TYPE MISMATCH"
134: StrStringTooLong:
135: htasc "STRING TOO LONG"
136: StrFileData:
137: htasc "FILE DATA"
138: StrFormulaTooComplex:
139: htasc "FORMULA TOO COMPLEX"
140: StrCantContinue:
141: htasc "CAN'T CONTINUE"
142: StrUndefdFunction:
143: htasc "UNDEF'D FUNCTION"
144: StrVerify:
145: htasc "VERIFY"
146: StrLoad:
147: htasc "LOAD"
148:
149:
150:
151: bERRPTR:
152: .addr StrTooManyFiles
153: .addr StrFileOpen
154: .addr StrFileNotOpen
155: .addr StrFileNotFound
156: .addr StrDeviceNotPresent
157: .addr StrNotInputFile
158: .addr StrNotOutputFile
159: .addr StrMissingFileName
160: .addr StrIllegalDeviceNumber
161: .addr StrNextWithoutFor
162: .addr StrSyntax
163: .addr StrReturnWithoutGosub
164: .addr StrOutOfData
165: .addr StrIllegalQuantity
166: .addr StrOverflow
167: .addr StrOutOfMemory
168: .addr StrUndefinedStatement
169: .addr StrBadSubscript
170: .addr StrRedimdArray
171: .addr StrDivisionByZero
172: .addr StrIllegalDirect
173: .addr StrTypeMismatch
174: .addr StrStringTooLong
175: .addr StrFileData
176: .addr StrFormulaTooComplex
177: .addr StrCantContinue
178: .addr StrUndefdFunction
179: .addr StrVerify
180: .addr StrLoad
181: .addr StrBreak
182:
183: bOKK: .byte $0D,"OK",$0D,$00
184:
185: .segment "CODE"
186:
187: StrError:
188: .if CompileComputer >= C64_GENERAL
189: .byte ' '
190: .else
191: .byte $0D
192: .endif
193: .byte " ERROR"
194: .byte $00
195:
196: StrIn:
197: .byte " IN "
198: .byte $00
199:
200: StrReady:
201: .byte $0D,$0A
202: .byte "READY."
203: .byte $0D,$0A,$00
204:
205: StrCrBreak:
206: .byte $0D,$0A
207: StrBreak:
208: .byte "BREAK"
209: .byte $00
210:
211: .byte $A0
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240: bFNDFOR:
241: tsx
242: inx
243: inx
244: inx
245: inx
246: @Loop:
247:
248: lda lSTACK + 1,x
249: cmp #TokFor
250: bne @Ret
251:
252:
253: lda zFORPNT + 1
254: bne @TestVar
255:
256:
257:
258: lda lSTACK + 2,x
259: sta zFORPNT
260: lda lSTACK + 3,x
261: sta zFORPNT + 1
262:
263:
264:
265:
266:
267: @TestVar:
268: cmp lSTACK + 3,x
269: bne @UnWind
270: lda zFORPNT
271: cmp lSTACK + 2,x
272: beq @Ret
273:
274:
275:
276:
277: @UnWind:
278:
279: txa
280: clc
281: adc #18
282: tax
283:
284:
285:
286:
287:
288: bne @Loop
289:
290: @Ret: rts
291:
292:
293: bBLTU: jsr bREASON
294: sta zSTREND
295: sty zSTREND + 1
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307: MoveMem:
308:
309: @OldBegin = zTEMP_5F
310: @OldEndP1 = zTEMP_5A
311: @NewEndP1 = zTEMP_58
312:
313:
314:
315:
316: sec
317: lda @OldEndP1
318: sbc @OldBegin
319: sta zINDEX
320: tay
321: lda @OldEndP1 + 1
322: sbc @OldBegin + 1
323: tax
324:
325: inx
326: tya
327: beq @SkipPartialPage
328:
329:
330:
331:
332:
333:
334: lda @OldEndP1
335: sec
336: sbc zINDEX
337: sta @OldEndP1
338: bcs @CalcNewEnd
339: dec @OldEndP1 + 1
340: sec
341:
342: @CalcNewEnd:
343: lda @NewEndP1
344: sbc zINDEX
345: sta @NewEndP1
346: bcs @ProcessNextPage
347: dec @NewEndP1 + 1
348: bcc @ProcessNextPage
349:
350:
351: @Loop:
352: lda (@OldEndP1),y
353: sta (@NewEndP1),y
354: @ProcessNextPage:
355: dey
356: bne @Loop
357:
358:
359: lda (@OldEndP1),y
360: sta (@NewEndP1),y
361:
362: @SkipPartialPage:
363:
364:
365:
366: dec @OldEndP1 + 1
367: dec @NewEndP1 + 1
368: dex
369: bne @ProcessNextPage
370: rts
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388: bGETSTK:
389:
390: asl a
391: adc #$3E
392: bcs bOMERR
393: sta zINDEX
394:
395:
396: tsx
397: cpx zINDEX
398: bcc bOMERR
399: rts
400:
401: bREASON:
402: cpy zFRETOP + 1
403: bcc @Ret
404: bne @LA412
405: cmp zFRETOP
406: bcc @Ret
407:
408:
409:
410: @SAVE_AREA_SIZE = zFACEXP - zTEMPF1
411:
412: @LA412: pha
413: ldx #@SAVE_AREA_SIZE - 1
414: tya
415: @LA416: pha
416: lda zTEMPF1,x
417: dex
418: bpl @LA416
419:
420: jsr bGARBAG
421:
422:
423: ldx #-(@SAVE_AREA_SIZE - 1)
424: @LA421: pla
425: sta zTEMPF1 + @SAVE_AREA_SIZE,x
426: inx
427: bmi @LA421
428: pla
429: tay
430: pla
431: cpy zFRETOP + 1
432: bcc @Ret
433: bne bOMERR
434: cmp zFRETOP
435: bcs bOMERR
436: @Ret: rts
437:
438: bOMERR: ldx #ErrOutOfMemory
439: bERROR: jmp (lIERROR)
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453: ErrorOut:
454: txa
455: asl a
456: tax
457: lda bERRPTR - 2,x
458: sta zINDEX
459: lda bERRPTR - 1,x
460: sta zINDEX + 1
461:
462: jsr kCLRCHN
463:
464: lda #0
465: sta z13
466: jsr bCRDO
467:
468: jsr LAB45
469:
470:
471:
472: ldy #0
473: @Loop: lda (zINDEX),y
474: pha
475: and #$7F
476: jsr LAB47
477: iny
478: pla
479: bpl @Loop
480:
481: jsr LA67A
482:
483:
484:
485: lda #<StrError
486: ldy #>StrError
487:
488: bERRFIN:jsr bSTROUT
489:
490: ldy zCURLIN + 1
491: iny
492: beq bREADY
493: jsr bINPRT
494:
495: bREADY: lda #<StrReady
496: ldy #>StrReady
497: jsr bSTROUT
498: lda #$80
499: jsr kSETMSG
500:
501: bMAIN: jmp (lIMAIN)
502: IMAIN: jsr bINLIN
503: stx zTXTPTR
504: sty zTXTPTR + 1
505: jsr zCHRGET
506: tax
507: beq bMAIN
508: ldx #$FF
509: stx zCURLIN + 1
510: bcc bMAIN1
511: jsr bCRUNCH
512: jmp bGONE
513: bMAIN1: jsr bLINGET
514: jsr bCRUNCH
515: bINSLIN:sty zCOUNT
516:
517: @58 = zTEMPF1 + 1
518: @5A = zTEMPF1 + 3
519:
520: @5F = zTEMPF2 + 3
521:
522: jsr bFNDLIN
523: bcc @LA4ED
524: ldy #1
525: lda (@5F),y
526: sta zINDEX + 1
527: lda zVARTAB
528: sta zINDEX
529: lda @5F + 1
530: sta zINDEX2 + 1
531: lda @5F
532: dey
533: sbc (@5F),y
534: clc
535: adc zVARTAB
536: sta zVARTAB
537: sta zINDEX2
538: lda zVARTAB + 1
539: adc #-1
540: sta zVARTAB + 1
541: sbc @5F + 1
542: tax
543: sec
544: lda @5F
545: sbc zVARTAB
546: tay
547: bcs @LA4D7
548: inx
549: dec zINDEX2 + 1
550: @LA4D7:
551: clc
552: adc zINDEX
553: bcc @LA4DF
554: dec zINDEX + 1
555: clc
556: @LA4DF:
557: lda (zINDEX),y
558: sta (zINDEX2),y
559: iny
560: bne @LA4DF
561: inc zINDEX + 1
562: inc zINDEX2 + 1
563: dex
564: bne @LA4DF
565: @LA4ED:
566: jsr LA659
567: jsr bLINKPRG
568: lda lBUF
569: beq bMAIN
570: clc
571: lda zVARTAB
572: sta @5A
573: adc zCOUNT
574: sta @58
575: ldy zVARTAB + 1
576: sty @5A + 1
577: bcc @LA508
578: iny
579: @LA508:
580: sty @58 + 1
581: jsr bBLTU
582: lda zLINNUM
583: ldy zLINNUM + 1
584: sta lBUF - 2
585: sty lBUF - 1
586: lda zSTREND
587: ldy zSTREND + 1
588: sta zVARTAB
589: sty zVARTAB + 1
590: ldy zCOUNT
591: dey
592: @LA522:
593: lda lBUF - 4,y
594: sta (@5F),y
595: dey
596: bpl @LA522
597: LA52A: jsr LA659
598: jsr bLINKPRG
599: jmp bMAIN
600: bLINKPRG:
601: lda zTXTTAB
602: ldy zTXTTAB + 1
603: sta zINDEX
604: sty zINDEX + 1
605: clc
606: @LA53C:
607: ldy #1
608: lda (zINDEX),y
609: beq @Ret
610: ldy #4
611: @LA544:
612: iny
613: lda (zINDEX),y
614: bne @LA544
615: iny
616: tya
617: adc zINDEX
618: tax
619: ldy #0
620: sta (zINDEX),y
621: lda zINDEX + 1
622: adc #0
623: iny
624: sta (zINDEX),y
625: stx zINDEX
626: sta zINDEX + 1
627: bcc @LA53C
628: @Ret: rts
629:
630: bINLIN: ldx #0
631: @LA562: jsr bCHIN
632: cmp #ASC_CR
633: beq @LA576
634: sta lBUF,x
635: inx
636: cpx #END_lBUF - lBUF
637: bcc @LA562
638: ldx #ErrStringTooLong
639: jmp bERROR
640:
641: @LA576: jmp bSTREND
642:
643: bCRUNCH:jmp (lICRNCH)
644: LA57C: ldx zTXTPTR
645: ldy #$04
646: sty zGARBFL
647: LA582: lda lBUF,x
648: bpl @LA58E
649: cmp #TokPi
650: beq LA5C9
651: inx
652: bne LA582
653: @LA58E:
654: cmp #' '
655: beq LA5C9
656: sta zENDCHR
657: cmp #'"'
658: beq LA5EE
659: bit zGARBFL
660: bvs LA5C9
661: cmp #'?'
662: bne @LA5A4
663: lda #TokPrint
664: bne LA5C9
665: @LA5A4:
666: cmp #'0'
667: bcc @LA5AC
668: cmp #'<'
669: bcc LA5C9
670: @LA5AC:
671: sty zFBUFPT
672: ldy #0
673: sty zCOUNT
674: dey
675: stx zTXTPTR
676: dex
677: LA5B6: iny
678: inx
679: LA5B8: lda lBUF,x
680: sec
681: sbc bRESLST,y
682: beq LA5B6
683: cmp #$80
684: bne LA5F5
685: ora zCOUNT
686: LA5C7: ldy zFBUFPT
687: LA5C9: inx
688: iny
689: sta lBUF - 5,y
690: lda lBUF - 5,y
691: beq LA609
692: sec
693: sbc #$3A
694: beq @LA5DC
695: cmp #$49
696: bne @LA5DE
697: @LA5DC:
698: sta zGARBFL
699: @LA5DE:
700: sec
701: sbc #$55
702: bne LA582
703: JDLA5E3:
704: sta zENDCHR
705: LA5E5: lda lBUF,x
706: beq LA5C9
707: cmp zENDCHR
708: beq LA5C9
709: LA5EE: iny
710: sta lBUF - 5,y
711: inx
712: bne LA5E5
713: LA5F5: ldx zTXTPTR
714: inc zCOUNT
715: @LA5F9: iny
716: lda bRESLST - 1,y
717: bpl @LA5F9
718: lda bRESLST,y
719: bne LA5B8
720: lda lBUF,x
721: bpl LA5C7
722: LA609: sta lBUF - 3,y
723: dec zTXTPTR + 1
724: lda #<lBUF - 1
725: sta zTXTPTR
726: rts
727:
728: bFNDLIN:lda zTXTTAB
729: ldx zTXTTAB + 1
730: LA617: ldy #1
731: sta zTEMP_5F
732: stx zTEMP_5F + 1
733: lda (zTEMP_5F),y
734: beq @RetSuccess
735: iny
736: iny
737: lda zLINNUM + 1
738: cmp (zTEMP_5F),y
739: bcc @Ret
740: beq @LA62E
741: dey
742: bne @LA637
743: @LA62E:
744: lda zLINNUM
745: dey
746: cmp (zTEMP_5F),y
747: bcc @Ret
748: beq @Ret
749: @LA637:
750: dey
751: lda (zTEMP_5F),y
752: tax
753: dey
754: lda (zTEMP_5F),y
755: bcs LA617
756: @RetSuccess:
757: clc
758: @Ret: rts
759:
760: RetA641 = @Ret
761:
762: bSCRTCH:bne RetA641
763: LA644: lda #0
764: tay
765: sta (zTXTTAB),y
766: iny
767: sta (zTXTTAB),y
768: lda zTXTTAB
769: clc
770: adc #<2
771: sta zVARTAB
772: lda zTXTTAB + 1
773: adc #>2
774: sta zVARTAB + 1
775:
776: LA659: jsr bSTXPT
777: lda #0
778:
779: bCLEAR: bne RetA68D
780: LA660: jsr kCLALL
781: LA663: lda zMEMSIZ
782: ldy zMEMSIZ + 1
783: sta zFRETOP
784: sty zFRETOP + 1
785: lda zVARTAB
786: ldy zVARTAB + 1
787: sta zARYTAB
788: sty zARYTAB + 1
789: sta zSTREND
790: sty zSTREND + 1
791: LA677: jsr bRESTOR
792:
793: LA67A: ldx #zTEMPST
794: stx zTEMPPT
795: pla
796: tay
797: pla
798: ldx #-6
799: txs
800: pha
801: tya
802: pha
803: lda #0
804: sta zOLDTXT + 1
805: sta zINTALLOWED
806: RetA68D:
807: rts
808:
809: bSTXPT: clc
810: lda zTXTTAB
811: adc #<-1
812: sta zTXTPTR
813: lda zTXTTAB + 1
814: adc #>-1
815: sta zTXTPTR + 1
816: rts
817:
818: bLIST: bcc LA6A4
819: beq LA6A4
820: cmp #TokMinus
821: bne RetA68D
822: LA6A4:
823: jsr bLINGET
824: jsr bFNDLIN
825: jsr zCHRGOT
826: beq @LA6BB
827: cmp #TokMinus
828: bne RetA641
829: jsr zCHRGET
830: jsr bLINGET
831: bne RetA641
832: @LA6BB:
833: pla
834: pla
835: lda zLINNUM
836: ora zLINNUM + 1
837: bne LA6C9
838: JDLA6C3:
839: lda #-1
840: sta zLINNUM
841: sta zLINNUM + 1
842: LA6C9: ldy #1
843: sty zGARBFL
844: lda (zTEMP_5F),y
845: beq LA714
846: jsr bSTOP
847: JDLA6D4:
848: jsr bCRDO
849: iny
850: lda (zTEMP_5F),y
851: tax
852: iny
853: lda (zTEMP_5F),y
854: cmp zLINNUM + 1
855: bne @LA6E6
856: cpx zLINNUM
857: beq @LA6E8
858: @LA6E6: bcs LA714
859: @LA6E8: sty zFORPNT
860: jsr LBDCD
861: lda #' '
862: LA6EF: ldy zFORPNT
863: and #$7F
864: LA6F3: jsr LAB47
865: cmp #'"'
866: bne LA700
867: lda zGARBFL
868: eor #$FF
869: sta zGARBFL
870: LA700: iny
871: beq LA714
872: lda (zTEMP_5F),y
873: bne bQPLOP
874: tay
875: lda (zTEMP_5F),y
876: tax
877: iny
878: lda (zTEMP_5F),y
879: stx zTEMP_5F
880: sta zTEMP_5F + 1
881: bne LA6C9
882: LA714:
883: .if CompileComputer >= C64_GENERAL
884: jmp ReadyVector
885: .else
886: jmp bREADY
887: .endif
888:
889: bQPLOP: jmp (lIQPLOP)
890: LA71A: bpl LA6F3
891: cmp #TokPi
892: beq LA6F3
893: bit zGARBFL
894: bmi LA6F3
895: sec
896: sbc #$7F
897: tax
898: sty zFORPNT
899: ldy #$FF
900: @LA72C:
901: dex
902: beq @LA737
903: @LA72F:
904: iny
905: lda bRESLST,y
906: bpl @LA72F
907: bmi @LA72C
908: @LA737:
909: iny
910: lda bRESLST,y
911: bmi LA6EF
912: jsr LAB47
913: bne @LA737
914:
915: bFOR: lda #$80
916: sta zINTALLOWED
917: jsr bLET
918: jsr bFNDFOR
919: bne @LA753
920: txa
921: adc #$0F
922: tax
923: txs
924: @LA753:
925: pla
926: pla
927: lda #$09
928: jsr bGETSTK
929: jsr bDATAN
930: clc
931: tya
932: adc zTXTPTR
933: pha
934: lda zTXTPTR + 1
935: adc #0
936: pha
937: lda zCURLIN + 1
938: pha
939: lda zCURLIN
940: pha
941: lda #TokTo
942: jsr LAEFF
943: jsr LAD8D
944: jsr bFRMNUM
945: lda zFACSGN
946: ora #$7F
947: and zFACHO
948: sta zFACHO
949: lda #<@LA78B
950: ldy #>@LA78B
951: sta zINDEX
952: sty zINDEX + 1
953: jmp LAE43
954:
955: @LA78B:
956: lda #<bFPTABL
957: ldy #>bFPTABL
958: jsr bMOVFM
959: jsr zCHRGOT
960: cmp #TokStep
961: bne @LA79F
962: jsr zCHRGET
963: jsr bFRMNUM
964: @LA79F:
965: jsr bSIGN
966: jsr LAE38
967: lda zFORPNT + 1
968: pha
969: lda zFORPNT
970: pha
971: lda #TokFor
972: pha
973: bNEWSTT:jsr bSTOP
974: lda zTXTPTR
975: ldy zTXTPTR + 1
976: cpy #>lBUF
977: nop
978: beq @LA7BE
979: sta zOLDTXT
980: sty zOLDTXT + 1
981: @LA7BE:
982: ldy #0
983: lda (zTXTPTR),y
984: bne LA807
985:
986: bCKEOL: ldy #2
987: lda (zTXTPTR),y
988: clc
989: bne @LA7CE
990: jmp LA84B
991: @LA7CE:
992: iny
993: lda (zTXTPTR),y
994: sta zCURLIN
995: iny
996: lda (zTXTPTR),y
997: sta zCURLIN + 1
998: tya
999: adc zTXTPTR
1000: sta zTXTPTR
1001: bcc bGONE
1002: inc zTXTPTR + 1
1003:
1004: bGONE: jmp (lIGONE)
1005: LA7E4: jsr zCHRGET
1006: jsr bGONE3
1007: jmp bNEWSTT
1008: bGONE3: beq RetA82B
1009: LA7EF: sbc #TokEnd
1010: bcc @LA804
1011: cmp #TokTab - TokEnd
1012: bcs LA80E
1013: asl a
1014: tay
1015: lda bSTMDSP + 1,y
1016: pha
1017: lda bSTMDSP,y
1018: pha
1019: jmp zCHRGET
1020: @LA804:
1021: jmp bLET
1022:
1023: LA807: cmp #':'
1024: beq bGONE
1025: LA80B: jmp bSYNERR
1026:
1027: LA80E: cmp #TokGo - $80
1028: bne LA80B
1029: jsr zCHRGET
1030: lda #TokTo
1031: jsr LAEFF
1032: jmp bGOTO
1033: bRESTOR:sec
1034: lda zTXTTAB
1035: sbc #1
1036: ldy zTXTTAB + 1
1037: bcs LA827
1038: dey
1039: LA827: sta zDATPTR
1040: sty zDATPTR + 1
1041: RetA82B:
1042: rts
1043:
1044: bSTOP: jsr kSTOP
1045: bSTOP2: bcs LA832
1046: bEND: clc
1047: LA832: bne RetA870
1048: lda zTXTPTR
1049: ldy zTXTPTR + 1
1050: ldx zCURLIN + 1
1051: inx
1052: beq @LA849
1053: sta zOLDTXT
1054: sty zOLDTXT + 1
1055: lda zCURLIN
1056: ldy zCURLIN + 1
1057: sta zOLDLIN
1058: sty zOLDLIN + 1
1059: @LA849:
1060: pla
1061: pla
1062:
1063: LA84B: lda #<StrCrBreak
1064: ldy #>StrCrBreak
1065: bcc LA854
1066: jmp bERRFIN
1067:
1068: LA854:
1069: .if CompileComputer >= C64_GENERAL
1070: jmp ReadyVector
1071: .else
1072: jmp bREADY
1073: .endif
1074:
1075: bCONT: bne RetA870
1076: ldx #ErrCantContinue
1077: ldy zOLDTXT + 1
1078: bne @LA862
1079: jmp bERROR
1080:
1081: @LA862:
1082: lda zOLDTXT
1083: sta zTXTPTR
1084: sty zTXTPTR + 1
1085: lda zOLDLIN
1086: ldy zOLDLIN + 1
1087: sta zCURLIN
1088: sty zCURLIN + 1
1089: RetA870:
1090: rts
1091:
1092: bRUN: php
1093: lda #0
1094: jsr kSETMSG
1095: plp
1096: bne @LA87D
1097: jmp LA659
1098:
1099: @LA87D:
1100: jsr LA660
1101: jmp LA897
1102:
1103: bGOSUB: lda #3
1104: jsr bGETSTK
1105: lda zTXTPTR + 1
1106: pha
1107: lda zTXTPTR
1108: pha
1109: lda zCURLIN + 1
1110: pha
1111: lda zCURLIN
1112: pha
1113: lda #TokGosub
1114: pha
1115:
1116: LA897: jsr zCHRGOT
1117: jsr bGOTO
1118: jmp bNEWSTT
1119:
1120: bGOTO: jsr bLINGET
1121: jsr LA909
1122: sec
1123: lda zCURLIN
1124: sbc zLINNUM
1125: lda zCURLIN + 1
1126: sbc zLINNUM + 1
1127: bcs @LA8BC
1128: tya
1129: sec
1130: adc zTXTPTR
1131: ldx zTXTPTR + 1
1132: bcc @LA8C0
1133: inx
1134: bcs @LA8C0
1135: @LA8BC:
1136: lda zTXTTAB
1137: ldx zTXTTAB + 1
1138: @LA8C0:
1139: jsr LA617
1140: bcc LA8E3
1141: lda zTEMP_5F
1142: sbc #<1
1143: sta zTXTPTR
1144: lda zTEMP_5F + 1
1145: sbc #>0
1146: sta zTXTPTR + 1
1147: RetA8D1:
1148: rts
1149:
1150: bRETURN:bne RetA8D1
1151: lda #-1
1152: sta zFORPNT + 1
1153: jsr bFNDFOR
1154: txs
1155: cmp #TokGosub
1156: beq LA8EB
1157: ldx #ErrReturnWithoutGosub
1158: .byte ASM_BIT3
1159: LA8E3: ldx #ErrUndefinedStatement
1160: jmp bERROR
1161: LA8E8: jmp bSYNERR
1162: LA8EB: pla
1163: pla
1164: sta zCURLIN
1165: pla
1166: sta zCURLIN + 1
1167: pla
1168: sta zTXTPTR
1169: pla
1170: sta zTXTPTR + 1
1171:
1172: bDATA: jsr bDATAN
1173: LA8FB: tya
1174:
1175: JDLA8FC:
1176: clc
1177: adc zTXTPTR
1178: sta zTXTPTR
1179: bcc RetA905
1180: inc zTXTPTR + 1
1181: RetA905:
1182: rts
1183:
1184: bDATAN: ldx #':'
1185: .byte ASM_BIT3
1186: LA909: ldx #0
1187: stx zCHARAC
1188: ldy #0
1189: sty zENDCHR
1190: LA911:
1191: lda zENDCHR
1192: ldx zCHARAC
1193: sta zCHARAC
1194: JDLA917:
1195: stx zENDCHR
1196: @LA919:
1197: lda (zTXTPTR),y
1198: beq RetA905
1199: cmp zENDCHR
1200: beq RetA905
1201: iny
1202: cmp #'"'
1203: bne @LA919
1204: beq LA911
1205:
1206:
1207: bIF: jsr bFRMEVL
1208: jsr zCHRGOT
1209: cmp #TokGoto
1210: beq @LA937
1211: lda #TokThen
1212: jsr LAEFF
1213: @LA937:
1214: lda zFACEXP
1215: bne LA940
1216:
1217: bREM: jsr LA909
1218: beq LA8FB
1219: LA940: jsr zCHRGOT
1220: bcs @LA948
1221: jmp bGOTO
1222:
1223: @LA948:
1224: jmp bGONE3
1225:
1226: bONGOTO:jsr LB79E
1227: pha
1228: cmp #TokGosub
1229: beq LA957
1230: LA953: cmp #TokGoto
1231: bne LA8E8
1232: LA957: dec zFACHO + 3
1233: bne @LA95F
1234: pla
1235: jmp LA7EF
1236: @LA95F:
1237: jsr zCHRGET
1238: jsr bLINGET
1239: cmp #','
1240: beq LA957
1241: pla
1242: RetA96A:
1243: rts
1244:
1245: bLINGET:ldx #0
1246: stx zLINNUM
1247: stx zLINNUM + 1
1248: @LA971:
1249: bcs RetA96A
1250: sbc #'0' - 1
1251: sta zCHARAC
1252: lda zLINNUM + 1
1253: sta zINDEX
1254: cmp #>6400
1255: bcs LA953
1256: lda zLINNUM
1257: asl a
1258: rol zINDEX
1259: asl a
1260: rol zINDEX
1261: adc zLINNUM
1262: sta zLINNUM
1263: lda zINDEX
1264: adc zLINNUM + 1
1265: sta zLINNUM + 1
1266: asl zLINNUM
1267: rol zLINNUM + 1
1268: lda zLINNUM
1269: adc zCHARAC
1270: sta zLINNUM
1271: bcc @LA99F
1272: inc zLINNUM + 1
1273: @LA99F:
1274: jsr zCHRGET
1275: jmp @LA971
1276:
1277: bLET: jsr bPTRGET
1278: sta zFORPNT
1279: sty zFORPNT + 1
1280: lda #TokEqual
1281: jsr LAEFF
1282: lda zINTFLG
1283: pha
1284: lda zVALTYP
1285: pha
1286: jsr bFRMEVL
1287: pla
1288: rol a
1289: jsr LAD90
1290: bne bPUTSTR
1291: pla
1292: LA9C2: bpl bPTFLPT
1293:
1294: bPUTINT:jsr bROUND
1295: jsr bAYINT
1296: ldy #0
1297: lda zFACHO + 2
1298: sta (zFORPNT),y
1299: iny
1300: lda zFACHO + 3
1301: sta (zFORPNT),y
1302: rts
1303: bPTFLPT:jmp LBBD0
1304:
1305: bPUTSTR:pla
1306: LA9DA: ldy zFORPNT + 1
1307: cpy #>bTI
1308: bne bGETSPT
1309: jsr LB6A6
1310: bPUTTIM:cmp #6
1311: bne @LAA24
1312: ldy #0
1313: sty zFACEXP
1314: sty zFACSGN
1315: @LA9ED:
1316: sty zFBUFPT
1317: jsr @LAA1D
1318: jsr bMUL10
1319: inc zFBUFPT
1320: ldy zFBUFPT
1321: jsr @LAA1D
1322: jsr bMOVAF
1323: tax
1324: beq @LAA07
1325: inx
1326: txa
1327: jsr LBAED
1328: @LAA07:
1329: ldy zFBUFPT
1330: iny
1331: cpy #6
1332: bne @LA9ED
1333: jsr bMUL10
1334: jsr bQINT
1335: ldx zFACHO + 2
1336: ldy zFACHO + 1
1337: lda zFACHO + 3
1338: jmp kSETTIM
1339:
1340: @LAA1D:
1341: lda (zINDEX),y
1342: jsr zCHRGOT_SPACE
1343: bcc @LAA27
1344: @LAA24:
1345: jmp bIQERR
1346:
1347: @LAA27:
1348: sbc #'0' - 1
1349: jmp LBD7E
1350:
1351: bGETSPT:ldy #2
1352: lda (zFACHO + 2),y
1353: cmp zFRETOP + 1
1354: bcc @LAA4B
1355: bne @LAA3D
1356: dey
1357: lda (zFACHO + 2),y
1358: cmp zFRETOP
1359: bcc @LAA4B
1360: @LAA3D:
1361: ldy zFACHO + 3
1362: cpy zVARTAB + 1
1363: bcc @LAA4B
1364: bne @LAA52
1365: lda zFACHO + 2
1366: cmp zVARTAB
1367: bcs @LAA52
1368: @LAA4B:
1369: lda zFACHO + 2
1370: ldy zFACHO + 3
1371: jmp @LAA68
1372:
1373: @LAA52:
1374: ldy #0
1375: lda (zFACHO + 2),y
1376: jsr LB475
1377: lda zTEMP_50
1378: ldy zTEMP_50 + 1
1379: sta zARISGN
1380: sty zFACOV
1381: jsr bMOVINS
1382: lda #<zFAC
1383: ldy #>zFAC
1384: @LAA68:
1385: sta zTEMP_50
1386: sty zTEMP_50 + 1
1387: jsr bFREFAC
1388: ldy #0
1389: lda (zTEMP_50),y
1390: sta (zFORPNT),y
1391: iny
1392: lda (zTEMP_50),y
1393: sta (zFORPNT),y
1394: iny
1395: lda (zTEMP_50),y
1396: sta (zFORPNT),y
1397: rts
1398:
1399: bPRINTN:jsr bCMD
1400: jmp LABB5
1401:
1402: bCMD: jsr LB79E
1403: beq @LAA90
1404: lda #','
1405: jsr LAEFF
1406: @LAA90:
1407: php
1408: stx z13
1409: jsr bCKOUT
1410: plp
1411: jmp bPRINT
1412:
1413: bSTRDON:jsr LAB21
1414:
1415: LAA9D: jsr zCHRGOT
1416:
1417: bPRINT: beq bCRDO
1418: LAAA2: beq RetAAE7
1419: cmp #TokTab
1420: beq LAAF8
1421: cmp #TokSpc
1422: clc
1423: beq LAAF8
1424: cmp #','
1425: beq bCOMPRT
1426: cmp #';'
1427: beq LAB13
1428: jsr bFRMEVL
1429: bVAROP: bit zVALTYP
1430: bmi bSTRDON
1431: jsr bFOUT
1432: jsr bSTRLIT
1433: jsr LAB21
1434: jsr bOUTSPC
1435: bne LAA9D
1436: bSTREND:lda #0
1437: sta lBUF,x
1438: ldx #<(lBUF - 1)
1439: ldy #>(lBUF - 1)
1440: lda z13
1441: bne RetAAE7
1442:
1443:
1444:
1445:
1446:
1447:
1448:
1449:
1450:
1451:
1452: bCRDO: lda #ASC_CR
1453: jsr LAB47
1454: bit z13
1455: bpl LAAE5
1456: lda #ASC_LF
1457: jsr LAB47
1458: LAAE5: eor #$FF
1459: RetAAE7:
1460: rts
1461:
1462: bCOMPRT:sec
1463: jsr kPLOT
1464: tya
1465: sec
1466: @LAAEE:
1467: sbc #EDITOR_TAB
1468: bcs @LAAEE
1469: eor #$FF
1470: adc #$01
1471: bne LAB0E
1472: LAAF8: php
1473: sec
1474: jsr kPLOT
1475: sty zTRMPOS
1476: jsr bGTBYTC
1477: cmp #')'
1478: bne LAB5F
1479: plp
1480: bcc LAB0F
1481: txa
1482: sbc zTRMPOS
1483: bcc LAB13
1484: LAB0E: tax
1485: LAB0F: inx
1486: LAB10: dex
1487: bne LAB19
1488: LAB13: jsr zCHRGET
1489: jmp LAAA2
1490:
1491: LAB19: jsr bOUTSPC
1492: bne LAB10
1493:
1494: bSTROUT:jsr bSTRLIT
1495:
1496: LAB21: jsr LB6A6
1497: tax
1498: ldy #0
1499: inx
1500: @LAB28:
1501: dex
1502: beq RetAAE7
1503: lda (zINDEX),y
1504: jsr LAB47
1505: iny
1506: cmp #ASC_CR
1507: bne @LAB28
1508: jsr LAAE5
1509: jmp @LAB28
1510:
1511: bOUTSPC:lda z13
1512: beq @LAB42
1513: lda #' '
1514: .byte ASM_BIT3
1515: @LAB42:
1516: lda #ASC_CURSORLEFTRIGHT
1517: .byte ASM_BIT3
1518:
1519:
1520: LAB45: lda #'?'
1521:
1522: LAB47: jsr bCHOUT
1523: and #$FF
1524: rts
1525:
1526: bDOAGIN:lda zSUBFLG
1527: beq LAB62
1528: bmi @LAB57
1529: ldy #$FF
1530: bne @LAB5B
1531:
1532: @LAB57:
1533: lda zDATLIN
1534: ldy zDATLIN + 1
1535: @LAB5B:
1536: sta zCURLIN
1537: sty zCURLIN + 1
1538: LAB5F: jmp bSYNERR
1539: LAB62: lda z13
1540: beq @LAB6B
1541: ldx #ErrFileData
1542: jmp bERROR
1543:
1544: @LAB6B:
1545: lda #<StrRedoFromStart
1546: ldy #>StrRedoFromStart
1547: jsr bSTROUT
1548: lda zOLDTXT
1549: ldy zOLDTXT + 1
1550: sta zTXTPTR
1551: sty zTXTPTR + 1
1552: rts
1553:
1554: bGET: jsr bERRDIR
1555: cmp #'#'
1556: bne @LAB92
1557: jsr zCHRGET
1558: jsr LB79E
1559: lda #','
1560: jsr LAEFF
1561: stx z13
1562: jsr bCKIN
1563: @LAB92:
1564: ldx #<(lBUF + 1)
1565: ldy #>(lBUF + 1)
1566: lda #0
1567: sta lBUF + 1
1568: lda #$40
1569: jsr LAC0F
1570: ldx z13
1571: bne LABB7
1572: rts
1573:
1574: bINPUTN:jsr LB79E
1575: lda #','
1576: jsr LAEFF
1577: stx z13
1578: jsr bCKIN
1579: jsr LABCE
1580: LABB5: lda z13
1581: LABB7: jsr kCLRCHN
1582: ldx #0
1583: stx z13
1584: rts
1585: bINPUT: cmp #'"'
1586: bne LABCE
1587: jsr LAEBD
1588: lda #';'
1589: jsr LAEFF
1590: jsr LAB21
1591: LABCE: jsr bERRDIR
1592: lda #','
1593: sta lBUF - 1
1594: LABD6: jsr bQINLIN
1595: lda z13
1596: beq bBUFFUL
1597: jsr kREADST
1598: and #$02
1599: beq bBUFFUL
1600: jsr LABB5
1601: jmp bDATA
1602:
1603: bBUFFUL:lda lBUF
1604: bne LAC0D
1605: lda z13
1606: bne LABD6
1607: jsr bDATAN
1608: jmp LA8FB
1609:
1610: bQINLIN:lda z13
1611: bne @LAC03
1612: jsr LAB45
1613: jsr bOUTSPC
1614: @LAC03:
1615: jmp bINLIN
1616:
1617: bREAD: ldx zDATPTR
1618: ldy zDATPTR + 1
1619: lda #$98
1620: .byte ASM_BIT3
1621: LAC0D: lda #0
1622: LAC0F: sta zSUBFLG
1623: stx zINPPTR
1624: sty zINPPTR + 1
1625: LAC15: jsr bPTRGET
1626: sta zFORPNT
1627: sty zFORPNT + 1
1628: lda zTXTPTR
1629: ldy zTXTPTR + 1
1630: sta zVARTXT
1631: sty zVARTXT + 1
1632: ldx zINPPTR
1633: ldy zINPPTR + 1
1634: stx zTXTPTR
1635: sty zTXTPTR + 1
1636: jsr zCHRGOT
1637: bne LAC51
1638: bit zSUBFLG
1639: bvc LAC41
1640:
1641: bRGDET: jsr bGETIN
1642: sta lBUF
1643: ldx #<(lBUF - 1)
1644: ldy #>(lBUF - 1)
1645: bne LAC4D
1646: LAC41: bmi LACB8
1647: lda z13
1648: bne @LAC4A
1649: jsr LAB45
1650: @LAC4A:
1651: jsr bQINLIN
1652:
1653: LAC4D: stx zTXTPTR
1654: sty zTXTPTR + 1
1655: LAC51: jsr zCHRGET
1656: bit zVALTYP
1657: bpl @LAC89
1658: bit zSUBFLG
1659: bvc @LAC65
1660: inx
1661: stx zTXTPTR
1662: lda #0
1663: sta zCHARAC
1664: beq @LAC71
1665: @LAC65:
1666: sta zCHARAC
1667: cmp #'"'
1668: beq @LAC72
1669: lda #':'
1670: sta zCHARAC
1671: lda #','
1672: @LAC71:
1673: clc
1674: @LAC72:
1675: sta zENDCHR
1676: lda zTXTPTR
1677: ldy zTXTPTR + 1
1678: adc #0
1679: bcc @LAC7D
1680: iny
1681: @LAC7D:
1682: jsr LB48D
1683: jsr LB7E2
1684: jsr LA9DA
1685: jmp @LAC91
1686: @LAC89:
1687: jsr bFIN
1688: lda zINTFLG
1689: jsr LA9C2
1690: @LAC91:
1691: jsr zCHRGOT
1692: beq @LAC9D
1693: cmp #','
1694: beq @LAC9D
1695: jmp bDOAGIN
1696:
1697: @LAC9D:
1698: lda zTXTPTR
1699: ldy zTXTPTR + 1
1700: sta zINPPTR
1701: sty zINPPTR + 1
1702: lda zVARTXT
1703: ldy zVARTXT + 1
1704: sta zTXTPTR
1705: sty zTXTPTR + 1
1706: jsr zCHRGOT
1707: beq LACDF
1708: jsr bCHKCMA
1709: jmp LAC15
1710: LACB8: jsr bDATAN
1711: iny
1712: tax
1713: bne @LACD1
1714: ldx #$0D
1715: iny
1716: lda (zTXTPTR),y
1717: beq LAD32
1718: iny
1719: lda (zTXTPTR),y
1720: sta zDATLIN
1721: iny
1722: lda (zTXTPTR),y
1723: iny
1724: sta zDATLIN + 1
1725: @LACD1:
1726: jsr LA8FB
1727: jsr zCHRGOT
1728: tax
1729: cpx #$83
1730: bne LACB8
1731: jmp LAC51
1732: LACDF: lda zINPPTR
1733: ldy zINPPTR + 1
1734: ldx zSUBFLG
1735: bpl @LACEA
1736: jmp LA827
1737: @LACEA:
1738: ldy #0
1739: lda (zINPPTR),y
1740: beq @Ret
1741: lda z13
1742: bne @Ret
1743: lda #<bEXINT
1744: ldy #>bEXINT
1745: jmp bSTROUT
1746: @Ret: rts
1747:
1748: bEXINT: .byte "?EXTRA IGNORED",$0D,$00
1749:
1750: StrRedoFromStart:
1751: .byte "?REDO FROM START",$0D,$00
1752:
1753: bNEXT: bne LAD24
1754: ldy #0
1755: beq LAD27
1756: LAD24: jsr bPTRGET
1757: LAD27: sta zFORPNT
1758: sty zFORPNT + 1
1759: jsr bFNDFOR
1760: beq LAD35
1761: ldx #ErrNextWithoutFor
1762: LAD32: jmp bERROR
1763: LAD35: txs
1764: txa
1765: clc
1766: adc #$04
1767: pha
1768: adc #$06
1769: sta zINDEX2
1770: pla
1771: ldy #$01
1772: jsr bMOVFM
1773: tsx
1774: lda lSTACK + 9,x
1775: sta zFACSGN
1776: lda zFORPNT
1777: ldy zFORPNT + 1
1778: jsr bFADD
1779: jsr LBBD0
1780: ldy #$01
1781: jsr LBC5D
1782: tsx
1783: sec
1784: sbc lSTACK + 9,x
1785: beq LAD78
1786: bDONEXT:lda lSTACK + 15,x
1787: sta zCURLIN
1788: lda lSTACK + 16,x
1789: sta zCURLIN + 1
1790: lda lSTACK + 18,x
1791: sta zTXTPTR
1792: lda lSTACK + 17,x
1793: sta zTXTPTR + 1
1794: LAD75: jmp bNEWSTT
1795: LAD78: txa
1796: adc #17
1797: tax
1798: txs
1799: jsr zCHRGOT
1800: cmp #','
1801: bne LAD75
1802: jsr zCHRGET
1803: jsr LAD24
1804: bFRMNUM:jsr bFRMEVL
1805: LAD8D: clc
1806: .byte ASM_BIT2
1807: LAD8F: sec
1808: LAD90: bit zVALTYP
1809: bmi LAD97
1810: bcs LAD99
1811: LAD96: rts
1812: LAD97: bcs LAD96
1813: LAD99: ldx #ErrTypeMismatch
1814: jmp bERROR
1815: bFRMEVL:ldx zTXTPTR
1816: bne LADA4
1817: dec zTXTPTR + 1
1818: LADA4: dec zTXTPTR
1819: ldx #0
1820: .byte ASM_BIT2
1821: LADA9: pha
1822: txa
1823: pha
1824: lda #1
1825: jsr bGETSTK
1826: jsr bEVAL
1827: lda #$00
1828: sta zOPMASK
1829: LADB8: jsr zCHRGOT
1830: LADBB: sec
1831: sbc #TokGreater
1832: bcc LADD7
1833: cmp #TokSgn - TokGreater
1834: bcs LADD7
1835: cmp #TokEqual - TokGreater
1836: rol a
1837: eor #$01
1838: eor zOPMASK
1839: cmp zOPMASK
1840: bcc LAE30
1841: sta zOPMASK
1842: jsr zCHRGET
1843: jmp LADBB
1844: LADD7: ldx zOPMASK
1845: bne LAE07
1846: bcs LAE58
1847: adc #$07
1848: bcc LAE58
1849: adc zVALTYP
1850: bne LADE8
1851: jmp bCAT
1852: LADE8: adc #-1
1853: sta zINDEX
1854: asl a
1855: adc zINDEX
1856: tay
1857: LADF0: pla
1858: cmp bOPTAB,y
1859: bcs LAE5D
1860: jsr LAD8D
1861: LADF9: pha
1862: LADFA: jsr LAE20
1863: pla
1864: ldy zVARTXT
1865: bpl LAE19
1866: tax
1867: beq LAE5B
1868: bne LAE66
1869: LAE07: lsr zVALTYP
1870: txa
1871: rol a
1872: ldx zTXTPTR
1873: bne LAE11
1874: dec zTXTPTR + 1
1875: LAE11: dec zTXTPTR
1876: ldy #$1B
1877: sta zOPMASK
1878: bne LADF0
1879: LAE19: cmp bOPTAB,y
1880: bcs LAE66
1881: bcc LADF9
1882: LAE20: lda bOPTAB + 2,y
1883: pha
1884: lda bOPTAB + 1,y
1885: pha
1886: jsr LAE33
1887: lda zOPMASK
1888: jmp LADA9
1889: LAE30: jmp bSYNERR
1890: LAE33: lda zFACSGN
1891: ldx bOPTAB,y
1892: LAE38: tay
1893: pla
1894: sta zINDEX
1895: inc zINDEX
1896: pla
1897: sta zINDEX + 1
1898: tya
1899: pha
1900: LAE43: jsr bROUND
1901: lda zFACHO + 3
1902: pha
1903: lda zFACHO + 2
1904: pha
1905: lda zFACHO + 1
1906: pha
1907: lda zFACHO
1908: pha
1909: lda zFACEXP
1910: pha
1911: jmp (zINDEX)
1912: LAE58: ldy #$FF
1913: pla
1914: LAE5B: beq LAE80
1915: LAE5D: cmp #$64
1916: beq LAE64
1917: jsr LAD8D
1918: LAE64: sty zVARTXT
1919: LAE66: pla
1920: lsr a
1921: sta zTANSGN
1922: pla
1923: sta zARGEXP
1924: pla
1925: sta zARGHO
1926: pla
1927: sta zARGHO + 1
1928: pla
1929: sta zARGHO + 2
1930: pla
1931: sta zARGHO + 3
1932: pla
1933: sta zARGSGN
1934: eor zFACSGN
1935: sta zARISGN
1936: LAE80: lda zFACEXP
1937: rts
1938: bEVAL: jmp (lIEVAL)
1939: LAE86: lda #$00
1940: sta zVALTYP
1941: LAE8A: jsr zCHRGET
1942: bcs LAE92
1943: LAE8F: jmp bFIN
1944: LAE92: jsr bISLETC
1945: bcc LAE9A
1946: jmp bISVAR
1947: LAE9A: cmp #$FF
1948: bne bQDOT
1949: lda #<bPIVAL
1950: ldy #>bPIVAL
1951: jsr bMOVFM
1952: jmp zCHRGET
1953:
1954: bPIVAL: .byte $82,$49,$0F,$DA,$A1
1955:
1956: bQDOT: cmp #'.'
1957: beq LAE8F
1958: cmp #TokMinus
1959: beq bDOMIN
1960: cmp #TokPlus
1961: beq LAE8A
1962: cmp #'"'
1963: bne LAECC
1964: LAEBD: lda zTXTPTR
1965: ldy zTXTPTR + 1
1966: adc #0
1967: bcc LAEC6
1968: iny
1969: LAEC6: jsr bSTRLIT
1970: jmp LB7E2
1971: LAECC: cmp #TokNot
1972: bne LAEE3
1973: ldy #$18
1974: bne LAF0F
1975: bEQUOP: jsr bAYINT
1976: lda zFACHO + 3
1977: eor #$FF
1978: tay
1979: lda zFACHO + 2
1980: eor #$FF
1981: jmp bGIVAYF
1982: LAEE3: cmp #TokFn
1983: bne LAEEA
1984: jmp bFNDOER
1985: LAEEA: cmp #TokSgn
1986: bcc bOARCHK
1987: jmp bISFUN
1988: bOARCHK:jsr bCHKopen
1989: jsr bFRMEVL
1990: bCHKclose:
1991: lda #')'
1992: .byte ASM_BIT3
1993: bCHKopen:
1994: lda #'('
1995: .byte ASM_BIT3
1996: bCHKCMA:lda #','
1997: LAEFF: ldy #0
1998: cmp (zTXTPTR),y
1999: bne bSYNERR
2000: jmp zCHRGET
2001: bSYNERR:ldx #ErrSyntax
2002: jmp bERROR
2003: bDOMIN: ldy #$15
2004: LAF0F: pla
2005: pla
2006: jmp LADFA
2007: bRSVVAR:sec
2008: lda zFACHO + 2
2009: sbc #<BASIC_START
2010: lda zFACHO + 3
2011: sbc #>BASIC_START
2012: bcc LAF27
2013: lda #<BASIC_END
2014: sbc zFACHO + 2
2015: lda #>BASIC_END
2016: sbc zFACHO + 3
2017: LAF27: rts
2018: bISVAR: jsr bPTRGET
2019: sta zFACHO + 2
2020: sty zFACHO + 3
2021: ldx zVARNAM
2022: ldy zVARNAM + 1
2023: lda zVALTYP
2024: beq LAF5D
2025: lda #0
2026: sta zFACOV
2027: jsr bRSVVAR
2028: bcc LAF5C
2029: cpx #'T'
2030: bne LAF5C
2031: cpy #'I' + $80
2032: bne LAF5C
2033: bTISASC:jsr LAF84
2034: sty zTEMP_5E
2035: dey
2036: sty zFBUFPT
2037: ldy #6
2038: sty zTEMP_5D
2039: ldy #$24
2040: jsr bFOUTIM
2041: jmp LB46F
2042: LAF5C: rts
2043: LAF5D: bit zINTFLG
2044: bpl LAF6E
2045: ldy #0
2046: lda (zFACHO + 2),y
2047: tax
2048: iny
2049: lda (zFACHO + 2),y
2050: tay
2051: txa
2052: jmp bGIVAYF
2053: LAF6E: jsr bRSVVAR
2054: bcc LAFA0
2055: cpx #'T'
2056: bne LAF92
2057: cpy #'I'
2058: bne LAFA0
2059: jsr LAF84
2060: tya
2061: ldx #$A0
2062: jmp LBC4F
2063: LAF84: jsr kRDTIM
2064: stx zFACHO + 2
2065: sty zFACHO + 1
2066: sta zFACHO + 3
2067: ldy #0
2068: sty zFACHO
2069: rts
2070: LAF92: cpx #'S'
2071: bne LAFA0
2072: cpy #'T'
2073: bne LAFA0
2074: jsr kREADST
2075: jmp LBC3C
2076: LAFA0: lda zFACHO + 2
2077: ldy zFACHO + 3
2078: jmp bMOVFM
2079: bISFUN: asl a
2080: pha
2081: tax
2082: jsr zCHRGET
2083: cpx #TokRem
2084: bcc bNUMFUN
2085: bSTRFUN:jsr bCHKopen
2086: jsr bFRMEVL
2087: jsr bCHKCMA
2088: jsr LAD8F
2089: pla
2090: tax
2091: lda zFACHO + 3
2092: pha
2093: lda zFACHO + 2
2094: pha
2095: txa
2096: pha
2097: jsr LB79E
2098: pla
2099: tay
2100: txa
2101: pha
2102: jmp LAFD6
2103: bNUMFUN:jsr bOARCHK
2104: pla
2105: tay
2106: LAFD6: lda bFUNDSP - 2*(TokSgn - $80),y
2107: sta zJMPER + 1
2108: lda bFUNDSP - 2*(TokSgn - $80) + 1,y
2109: sta zJMPER + 2
2110: jsr zJMPER
2111: jmp LAD8D
2112: bOROP: ldy #$FF
2113: .byte ASM_BIT3
2114: TAND: ldy #0
2115: sty zCOUNT
2116: jsr bAYINT
2117: lda zFACHO + 2
2118: eor zCOUNT
2119: sta zCHARAC
2120: lda zFACHO + 3
2121: eor zCOUNT
2122: sta zENDCHR
2123: jsr bMOVFA
2124: jsr bAYINT
2125: lda zFACHO + 3
2126: eor zCOUNT
2127: and zENDCHR
2128: eor zCOUNT
2129: tay
2130: lda zFACHO + 2
2131: eor zCOUNT
2132: and zCHARAC
2133: eor zCOUNT
2134: jmp bGIVAYF
2135: bDOREL: jsr LAD90
2136: bcs bSTRREL
2137: bNUMREL:lda zARGSGN
2138: ora #$7F
2139: and zARGHO
2140: sta zARGHO
2141: lda #<zARG
2142: ldy #>zARG
2143: jsr bFCOMP
2144: tax
2145: jmp LB061
2146: bSTRREL:lda #0
2147: sta zVALTYP
2148: dec zOPMASK
2149: jsr LB6A6
2150: sta zFACEXP
2151: stx zFACHO
2152: sty zFACHO + 1
2153: lda zARGHO + 2
2154: ldy zARGHO + 3
2155: jsr LB6AA
2156: stx zARGHO + 2
2157: sty zARGHO + 3
2158: tax
2159: sec
2160: sbc zFACEXP
2161: beq LB056
2162: lda #1
2163: bcc LB056
2164: ldx zFACEXP
2165: lda #$FF
2166: LB056: sta zFACSGN
2167: ldy #$FF
2168: inx
2169: LB05B: iny
2170: dex
2171: bne LB066
2172: ldx zFACSGN
2173: LB061: bmi LB072
2174: clc
2175: bcc LB072
2176: LB066: lda (zARGHO + 2),y
2177: cmp (zFACHO),y
2178: beq LB05B
2179: ldx #$FF
2180: bcs LB072
2181: ldx #$01
2182: LB072: inx
2183: txa
2184: rol a
2185: and zTANSGN
2186: beq LB07B
2187: lda #$FF
2188: LB07B: jmp LBC3C
2189: bDIM: jsr bCHKCMA
2190: bDIM2: tax
2191: jsr LB090
2192: jsr zCHRGOT
2193: bne bDIM
2194: rts
2195: bPTRGET:ldx #$00
2196: jsr zCHRGOT
2197: LB090: stx zDIMFLG
2198: LB092: sta zVARNAM
2199: jsr zCHRGOT
2200: jsr bISLETC
2201: bcs LB09F
2202: LB09C: jmp bSYNERR
2203: LB09F: ldx #$00
2204: stx zVALTYP
2205: stx zINTFLG
2206: jsr zCHRGET
2207: bcc LB0AF
2208: jsr bISLETC
2209: bcc LB0BA
2210: LB0AF: tax
2211: LB0B0: jsr zCHRGET
2212: bcc LB0B0
2213: jsr bISLETC
2214: bcs LB0B0
2215: LB0BA: cmp #'$'
2216: bne LB0C4
2217: lda #$FF
2218: sta zVALTYP
2219: bne LB0D4
2220: LB0C4: cmp #'%'
2221: bne LB0DB
2222: lda zINTALLOWED
2223: bne LB09C
2224: lda #$80
2225: sta zINTFLG
2226: ora zVARNAM
2227: sta zVARNAM
2228: LB0D4: txa
2229: ora #$80
2230: tax
2231: jsr zCHRGET
2232: LB0DB: stx zVARNAM + 1
2233: sec
2234: ora zINTALLOWED
2235: sbc #'('
2236: bne bORDVAR
2237: jmp bISARY
2238: bORDVAR:ldy #$00
2239: sty zINTALLOWED
2240: lda zVARTAB
2241: ldx zVARTAB + 1
2242: LB0EF: stx zTEMP_5F + 1
2243: LB0F1: sta zTEMP_5F
2244: cpx zARYTAB + 1
2245: bne LB0FB
2246: cmp zARYTAB
2247: beq bNOTFNS
2248: LB0FB: lda zVARNAM
2249: cmp (zTEMP_5F),y
2250: bne LB109
2251: lda zVARNAM + 1
2252: iny
2253: cmp (zTEMP_5F),y
2254: beq LB185
2255: dey
2256: LB109: clc
2257: lda zTEMP_5F
2258: adc #7
2259: bcc LB0F1
2260: inx
2261: bne LB0EF
2262: bISLETC:cmp #'A'
2263: bcc LB11C
2264: sbc #'Z' + 1
2265: sec
2266: sbc #-('Z' + 1)
2267: LB11C: rts
2268: bNOTFNS:pla
2269: pha
2270: cmp #$2A
2271: bne bNOTEVL
2272: LB123: lda #<bTI
2273: ldy #>bTI
2274: rts
2275: bNOTEVL:lda zVARNAM
2276: ldy zVARNAM + 1
2277: cmp #'T'
2278: bne LB13B
2279: cpy #'I' + $80
2280: beq LB123
2281: cpy #'I'
2282: bne LB13B
2283: LB138: jmp bSYNERR
2284: LB13B: cmp #'S'
2285: bne LB143
2286: cpy #'T'
2287: beq LB138
2288: LB143: lda zARYTAB
2289: ldy zARYTAB + 1
2290: sta zTEMP_5F
2291: sty zTEMP_5F + 1
2292: lda zSTREND
2293: ldy zSTREND + 1
2294: sta zTEMP_5A
2295: sty zTEMP_5A + 1
2296: clc
2297: adc #7
2298: bcc LB159
2299: iny
2300: LB159: sta zTEMP_58
2301: sty zTEMP_58 + 1
2302: jsr bBLTU
2303: lda zTEMP_58
2304: ldy zTEMP_58 + 1
2305: iny
2306: sta zARYTAB
2307: sty zARYTAB + 1
2308: ldy #0
2309: lda zVARNAM
2310: sta (zTEMP_5F),y
2311: iny
2312: lda zVARNAM + 1
2313: sta (zTEMP_5F),y
2314: lda #0
2315: iny
2316: sta (zTEMP_5F),y
2317: iny
2318: sta (zTEMP_5F),y
2319: iny
2320: sta (zTEMP_5F),y
2321: iny
2322: sta (zTEMP_5F),y
2323: iny
2324: sta (zTEMP_5F),y
2325: LB185: lda zTEMP_5F
2326: clc
2327: adc #2
2328: ldy zTEMP_5F + 1
2329: bcc LB18F
2330: iny
2331: LB18F: sta zVARPNT
2332: sty zVARPNT + 1
2333: rts
2334: bARYGET:lda zCOUNT
2335: asl a
2336: adc #5
2337: adc zTEMP_5F
2338: ldy zTEMP_5F + 1
2339: bcc LB1A0
2340: iny
2341: LB1A0: sta zTEMP_58
2342: sty zTEMP_58 + 1
2343: rts
2344:
2345: bN32768:.byte $90,$80,$00,$00,$00
2346:
2347: bFACINX:jsr bAYINT
2348: lda zFACHO + 2
2349: ldy zFACHO + 3
2350: rts
2351: bINTIDX:jsr zCHRGET
2352: jsr bFRMEVL
2353: LB1B8: jsr LAD8D
2354: lda zFACSGN
2355: bmi LB1CC
2356: bAYINT: lda zFACEXP
2357: cmp #$90
2358: bcc LB1CE
2359: lda #<bN32768
2360: ldy #>bN32768
2361: jsr bFCOMP
2362: LB1CC: bne bIQERR
2363: LB1CE: jmp bQINT
2364: bISARY: lda zDIMFLG
2365: ora zINTFLG
2366: pha
2367: lda zVALTYP
2368: pha
2369: ldy #0
2370: LB1DB: tya
2371: pha
2372: lda zVARNAM + 1
2373: pha
2374: lda zVARNAM
2375: pha
2376: jsr bINTIDX
2377: pla
2378: sta zVARNAM
2379: pla
2380: sta zVARNAM + 1
2381: pla
2382: tay
2383: tsx
2384: lda lSTACK + 2,x
2385: pha
2386: lda lSTACK + 1,x
2387: pha
2388: lda zFACHO + 2
2389: sta lSTACK + 2,x
2390: lda zFACHO + 3
2391: sta lSTACK + 1,x
2392: iny
2393: jsr zCHRGOT
2394: cmp #','
2395: beq LB1DB
2396: sty zCOUNT
2397: jsr bCHKclose
2398: pla
2399: sta zVALTYP
2400: pla
2401: sta zINTFLG
2402: and #$7F
2403: sta zDIMFLG
2404: bFNDARY:ldx zARYTAB
2405: lda zARYTAB + 1
2406: LB21C: stx zTEMP_5F
2407: sta zTEMP_5F + 1
2408: cmp zSTREND + 1
2409: bne LB228
2410: cpx zSTREND
2411: beq bNOTFDD
2412: LB228: ldy #0
2413: lda (zTEMP_5F),y
2414: iny
2415: cmp zVARNAM
2416: bne LB237
2417: lda zVARNAM + 1
2418: cmp (zTEMP_5F),y
2419: beq bRAERR
2420: LB237: iny
2421: lda (zTEMP_5F),y
2422: clc
2423: adc zTEMP_5F
2424: tax
2425: iny
2426: lda (zTEMP_5F),y
2427: adc zTEMP_5F + 1
2428: bcc LB21C
2429: bBSERR: ldx #ErrBadSubscript
2430: .byte ASM_BIT3
2431: bIQERR: ldx #ErrIllegalQuantity
2432: LB24A: jmp bERROR
2433: bRAERR: ldx #ErrRedimdArray
2434: lda zDIMFLG
2435: bne LB24A
2436: jsr bARYGET
2437: lda zCOUNT
2438: ldy #4
2439: cmp (zTEMP_5F),y
2440: bne bBSERR
2441: jmp LB2EA
2442: bNOTFDD:jsr bARYGET
2443: jsr bREASON
2444: ldy #0
2445: sty zFBUFPT + 1
2446: ldx #5
2447: lda zVARNAM
2448: sta (zTEMP_5F),y
2449: bpl LB274
2450: dex
2451: LB274: iny
2452: lda zVARNAM + 1
2453: sta (zTEMP_5F),y
2454: bpl LB27D
2455: dex
2456: dex
2457: LB27D: stx zFBUFPT
2458: lda zCOUNT
2459: iny
2460: iny
2461: iny
2462: sta (zTEMP_5F),y
2463: LB286: ldx #11
2464: lda #0
2465: bit zDIMFLG
2466: bvc LB296
2467: pla
2468: clc
2469: adc #1
2470: tax
2471: pla
2472: adc #0
2473: LB296: iny
2474: sta (zTEMP_5F),y
2475: iny
2476: txa
2477: sta (zTEMP_5F),y
2478: jsr bUMULT
2479: stx zFBUFPT
2480: sta zFBUFPT + 1
2481: ldy zINDEX
2482: dec zCOUNT
2483: bne LB286
2484: adc zTEMP_58 + 1
2485: bcs LB30B
2486: sta zTEMP_58 + 1
2487: tay
2488: txa
2489: adc zTEMP_58
2490: bcc LB2B9
2491: iny
2492: beq LB30B
2493: LB2B9: jsr bREASON
2494: sta zSTREND
2495: sty zSTREND + 1
2496: lda #0
2497: inc zFBUFPT + 1
2498: ldy zFBUFPT
2499: beq LB2CD
2500: LB2C8: dey
2501: sta (zTEMP_58),y
2502: bne LB2C8
2503: LB2CD: dec zTEMP_58 + 1
2504: dec zFBUFPT + 1
2505: bne LB2C8
2506: inc zTEMP_58 + 1
2507: sec
2508: lda zSTREND
2509: sbc zTEMP_5F
2510: ldy #2
2511: sta (zTEMP_5F),y
2512: lda zSTREND + 1
2513: iny
2514: sbc zTEMP_5F + 1
2515: sta (zTEMP_5F),y
2516: lda zDIMFLG
2517: bne LB34B
2518: iny
2519: LB2EA: lda (zTEMP_5F),y
2520: sta zCOUNT
2521: lda #0
2522: sta zFBUFPT
2523: LB2F2: sta zFBUFPT + 1
2524: iny
2525: pla
2526: tax
2527: sta zFACHO + 2
2528: pla
2529: sta zFACHO + 3
2530: cmp (zTEMP_5F),y
2531: bcc bINLPN2
2532: bne LB308
2533: iny
2534: txa
2535: cmp (zTEMP_5F),y
2536: bcc LB30F
2537: LB308: jmp bBSERR
2538: LB30B: jmp bOMERR
2539:
2540: bINLPN2:iny
2541: LB30F: lda zFBUFPT + 1
2542: ora zFBUFPT
2543: clc
2544: beq LB320
2545: jsr bUMULT
2546: txa
2547: adc zFACHO + 2
2548: tax
2549: tya
2550: ldy zINDEX
2551: LB320: adc zFACHO + 3
2552: stx zFBUFPT
2553: dec zCOUNT
2554: bne LB2F2
2555: sta zFBUFPT + 1
2556: ldx #5
2557: lda zVARNAM
2558: bpl LB331
2559: dex
2560: LB331: lda zVARNAM + 1
2561: bpl LB337
2562: dex
2563: dex
2564: LB337: stx zTEMP_28
2565: lda #0
2566: jsr LB355
2567: txa
2568: adc zTEMP_58
2569: sta zVARPNT
2570: tya
2571: adc zTEMP_58 + 1
2572: sta zVARPNT + 1
2573: tay
2574: lda zVARPNT
2575: LB34B: rts
2576: bUMULT: sty zINDEX
2577: lda (zTEMP_5F),y
2578: sta zTEMP_28
2579: dey
2580: lda (zTEMP_5F),y
2581: LB355: sta zTEMP_28 + 1
2582: lda #$10
2583: sta zTEMP_5D
2584: ldx #0
2585: ldy #0
2586: LB35F: txa
2587: asl a
2588: tax
2589: tya
2590: rol a
2591: tay
2592: bcs LB30B
2593: asl zFBUFPT
2594: rol zFBUFPT + 1
2595: bcc LB378
2596: clc
2597: txa
2598: adc zTEMP_28
2599: tax
2600: tya
2601: adc zTEMP_28 + 1
2602: tay
2603: bcs LB30B
2604: LB378: dec zTEMP_5D
2605: bne LB35F
2606: rts
2607: bFRE: lda zVALTYP
2608: beq LB384
2609: jsr LB6A6
2610: LB384: jsr bGARBAG
2611: sec
2612: lda zFRETOP
2613: sbc zSTREND
2614: tay
2615: lda zFRETOP + 1
2616: sbc zSTREND + 1
2617: bGIVAYF:ldx #0
2618: stx zVALTYP
2619: sta zFACHO
2620: sty zFACHO + 1
2621: ldx #$90
2622: jmp LBC44
2623: bPOS: sec
2624: jsr kPLOT
2625: LB3A2: lda #0
2626: beq bGIVAYF
2627: bERRDIR:ldx zCURLIN + 1
2628: inx
2629: bne LB34B
2630: ldx #ErrIllegalDirect
2631: .byte ASM_BIT3
2632: bUFERR: ldx #ErrUndefdFunction
2633: jmp bERROR
2634:
2635: bDEF: jsr bGETFNM
2636: jsr bERRDIR
2637: jsr bCHKopen
2638: lda #$80
2639: sta zINTALLOWED
2640: jsr bPTRGET
2641: jsr LAD8D
2642: jsr bCHKclose
2643: lda #TokEqual
2644: jsr LAEFF
2645: pha
2646: lda zVARPNT + 1
2647: pha
2648: lda zVARPNT
2649: pha
2650: lda zTXTPTR + 1
2651: pha
2652: lda zTXTPTR
2653: pha
2654: jsr bDATA
2655: jmp LB44F
2656: bGETFNM:lda #TokFn
2657: jsr LAEFF
2658: ora #$80
2659: sta zINTALLOWED
2660: jsr LB092
2661: sta zTEMPF3
2662: sty zTEMPF3 + 1
2663: jmp LAD8D
2664: bFNDOER:jsr bGETFNM
2665: lda zTEMPF3 + 1
2666: pha
2667: lda zTEMPF3
2668: pha
2669: jsr bOARCHK
2670: jsr LAD8D
2671: pla
2672: sta zTEMPF3
2673: pla
2674: sta zTEMPF3 + 1
2675: ldy #2
2676: lda (zTEMPF3),y
2677: sta zVARPNT
2678: tax
2679: iny
2680: lda (zTEMPF3),y
2681: beq bUFERR
2682: sta zVARPNT + 1
2683: iny
2684: LB418: lda (zVARPNT),y
2685: pha
2686: dey
2687: bpl LB418
2688: ldy zVARPNT + 1
2689: jsr LBBD4
2690: lda zTXTPTR + 1
2691: pha
2692: lda zTXTPTR
2693: pha
2694: lda (zTEMPF3),y
2695: sta zTXTPTR
2696: iny
2697: lda (zTEMPF3),y
2698: sta zTXTPTR + 1
2699: lda zVARPNT + 1
2700: pha
2701: lda zVARPNT
2702: pha
2703: jsr bFRMNUM
2704: pla
2705: sta zTEMPF3
2706: pla
2707: sta zTEMPF3 + 1
2708: jsr zCHRGOT
2709: beq LB449
2710: jmp bSYNERR
2711: LB449: pla
2712: sta zTXTPTR
2713: pla
2714: sta zTXTPTR + 1
2715: LB44F: ldy #0
2716: pla
2717: sta (zTEMPF3),y
2718: pla
2719: iny
2720: sta (zTEMPF3),y
2721: pla
2722: iny
2723: sta (zTEMPF3),y
2724: pla
2725: iny
2726: sta (zTEMPF3),y
2727: pla
2728: iny
2729: sta (zTEMPF3),y
2730: rts
2731: bSTRD: jsr LAD8D
2732: ldy #0
2733: jsr LBDDF
2734: pla
2735: pla
2736: LB46F: lda #<(zASCWRK)
2737: ldy #>(zASCWRK)
2738: beq bSTRLIT
2739:
2740:
2741: LB475: ldx zFACHO + 2
2742: ldy zFACHO + 3
2743: stx zTEMP_50
2744: sty zTEMP_50 + 1
2745: LB47D: jsr bGETSPA
2746: stx zFACHO
2747: sty zFACHO + 1
2748: sta zFACEXP
2749: rts
2750: bSTRLIT:ldx #'"'
2751: stx zCHARAC
2752: stx zENDCHR
2753: LB48D: sta zARISGN
2754: sty zFACOV
2755: sta zFACHO
2756: sty zFACHO + 1
2757: ldy #-1
2758: LB497: iny
2759: lda (zARISGN),y
2760: beq LB4A8
2761: cmp zCHARAC
2762: beq LB4A4
2763: cmp zENDCHR
2764: bne LB497
2765: LB4A4: cmp #'"'
2766: beq LB4A9
2767: LB4A8: clc
2768: LB4A9: sty zFACEXP
2769: tya
2770: adc zARISGN
2771: sta zFBUFPT
2772: ldx zFACOV
2773: bcc LB4B5
2774: inx
2775: LB4B5: stx zFBUFPT + 1
2776: lda zFACOV
2777: beq LB4BF
2778: cmp #2
2779: bne LB4CA
2780: LB4BF: tya
2781: jsr LB475
2782: ldx zARISGN
2783: ldy zFACOV
2784: JDLB4C7:
2785: jsr LB688
2786: LB4CA: ldx zTEMPPT
2787: cpx #zTEMPST + 9
2788: bne bPUTNW1
2789: ldx #ErrFormulaTooComplex
2790: LB4D2: jmp bERROR
2791: bPUTNW1:lda zFACEXP
2792: sta 0,x
2793: lda zFACHO
2794: sta 1,x
2795: lda zFACHO + 1
2796: sta 2,x
2797: ldy #>zTEMPST
2798: stx zFACHO + 2
2799: sty zFACHO + 3
2800: sty zFACOV
2801: dey
2802: sty zVALTYP
2803: stx zLASTPT
2804: inx
2805: inx
2806: inx
2807: stx zTEMPPT
2808: rts
2809: bGETSPA:lsr zGARBFL
2810: LB4F6: pha
2811: eor #$FF
2812: sec
2813: adc zFRETOP
2814: ldy zFRETOP + 1
2815: bcs LB501
2816: dey
2817: LB501: cpy zSTREND + 1
2818: bcc LB516
2819: bne LB50B
2820: cmp zSTREND
2821: bcc LB516
2822: LB50B: sta zFRETOP
2823: sty zFRETOP + 1
2824: sta zFRESPC
2825: sty zFRESPC + 1
2826: tax
2827: pla
2828: rts
2829: LB516: ldx #$10
2830: lda zGARBFL
2831: bmi LB4D2
2832: jsr bGARBAG
2833: lda #$80
2834: sta zGARBFL
2835: pla
2836: bne LB4F6
2837: bGARBAG:ldx zMEMSIZ
2838: lda zMEMSIZ + 1
2839: LB52A: stx zFRETOP
2840: sta zFRETOP + 1
2841: ldy #0
2842: sty zTEMPF3 + 1
2843: sty zTEMPF3
2844: lda zSTREND
2845: ldx zSTREND + 1
2846: sta zTEMP_5F
2847: stx zTEMP_5F + 1
2848: lda #<zTEMPST
2849: ldx #>zTEMPST
2850: sta zINDEX
2851: stx zINDEX + 1
2852: LB544: cmp zTEMPPT
2853: beq LB54D
2854: jsr LB5C7
2855: beq LB544
2856: LB54D: lda #$07
2857: sta zFOUR6
2858: lda zVARTAB
2859: ldx zVARTAB + 1
2860: sta zINDEX
2861: stx zINDEX + 1
2862: LB559: cpx zARYTAB + 1
2863: bne LB561
2864: cmp zARYTAB
2865: beq LB566
2866: LB561: jsr bDVARS
2867: beq LB559
2868: LB566: sta zTEMP_58
2869: stx zTEMP_58 + 1
2870: lda #3
2871: sta zFOUR6
2872: LB56E: lda zTEMP_58
2873: ldx zTEMP_58 + 1
2874: LB572: cpx zSTREND + 1
2875: bne LB57D
2876: cmp zSTREND
2877: bne LB57D
2878: jmp bGRBPAS
2879: LB57D: sta zINDEX
2880: stx zINDEX + 1
2881: ldy #0
2882: lda (zINDEX),y
2883: tax
2884: iny
2885: lda (zINDEX),y
2886: php
2887: iny
2888: lda (zINDEX),y
2889: adc zTEMP_58
2890: sta zTEMP_58
2891: iny
2892: lda (zINDEX),y
2893: adc zTEMP_58 + 1
2894: sta zTEMP_58 + 1
2895: plp
2896: bpl LB56E
2897: txa
2898: bmi LB56E
2899: iny
2900: lda (zINDEX),y
2901: ldy #0
2902: asl a
2903: adc #5
2904: adc zINDEX
2905: sta zINDEX
2906: bcc LB5AE
2907: inc zINDEX + 1
2908: LB5AE: ldx zINDEX + 1
2909: LB5B0: cpx zTEMP_58 + 1
2910: bne LB5B8
2911: cmp zTEMP_58
2912: beq LB572
2913: LB5B8: jsr LB5C7
2914: beq LB5B0
2915: bDVARS: lda (zINDEX),y
2916: bmi LB5F6
2917: iny
2918: lda (zINDEX),y
2919: bpl LB5F6
2920: iny
2921: LB5C7: lda (zINDEX),y
2922: beq LB5F6
2923: iny
2924: lda (zINDEX),y
2925: tax
2926: iny
2927: lda (zINDEX),y
2928: cmp zFRETOP + 1
2929: bcc LB5DC
2930: bne LB5F6
2931: cpx zFRETOP
2932: bcs LB5F6
2933: LB5DC: cmp zTEMP_5F + 1
2934: bcc LB5F6
2935: bne LB5E6
2936: cpx zTEMP_5F
2937: bcc LB5F6
2938: LB5E6: stx zTEMP_5F
2939: sta zTEMP_5F + 1
2940: lda zINDEX
2941: ldx zINDEX + 1
2942: sta zTEMPF3
2943: stx zTEMPF3 + 1
2944: lda zFOUR6
2945: sta zJMPER + 1
2946: LB5F6: lda zFOUR6
2947: clc
2948: adc zINDEX
2949: sta zINDEX
2950: bcc LB601
2951: inc zINDEX + 1
2952: LB601: ldx zINDEX + 1
2953: ldy #0
2954: rts
2955: bGRBPAS:lda zTEMPF3 + 1
2956: ora zTEMPF3
2957: beq LB601
2958: lda zJMPER + 1
2959: and #$04
2960: lsr a
2961: tay
2962: sta zJMPER + 1
2963: lda (zTEMPF3),y
2964: adc zTEMP_5F
2965: sta zTEMP_5A
2966: lda zTEMP_5F + 1
2967: adc #0
2968: sta zTEMP_5A + 1
2969: lda zFRETOP
2970: ldx zFRETOP + 1
2971: sta zTEMP_58
2972: stx zTEMP_58 + 1
2973: jsr MoveMem
2974: ldy zJMPER + 1
2975: iny
2976: lda zTEMP_58
2977: sta (zTEMPF3),y
2978: tax
2979: inc zTEMP_58 + 1
2980: lda zTEMP_58 + 1
2981: iny
2982: sta (zTEMPF3),y
2983: jmp LB52A
2984: bCAT: lda zFACHO + 3
2985: pha
2986: lda zFACHO + 2
2987: pha
2988: jsr bEVAL
2989: jsr LAD8F
2990: pla
2991: sta zARISGN
2992: pla
2993: sta zFACOV
2994: ldy #0
2995: lda (zARISGN),y
2996: clc
2997: adc (zFACHO + 2),y
2998: bcc LB65D
2999: ldx #ErrStringTooLong
3000: jmp bERROR
3001: LB65D: jsr LB475
3002: jsr bMOVINS
3003: lda zTEMP_50
3004: ldy zTEMP_50 + 1
3005: jsr LB6AA
3006: jsr LB68C
3007: lda zARISGN
3008: ldy zFACOV
3009: jsr LB6AA
3010: jsr LB4CA
3011: jmp LADB8
3012: bMOVINS:ldy #0
3013: lda (zARISGN),y
3014: pha
3015: iny
3016: lda (zARISGN),y
3017: tax
3018: iny
3019: lda (zARISGN),y
3020: tay
3021: pla
3022: LB688: stx zINDEX
3023: sty zINDEX + 1
3024: LB68C: tay
3025: beq LB699
3026: pha
3027: LB690: dey
3028: lda (zINDEX),y
3029: sta (zFRESPC),y
3030: tya
3031: bne LB690
3032: pla
3033: LB699: clc
3034: adc zFRESPC
3035: sta zFRESPC
3036: bcc LB6A2
3037: inc zFRESPC + 1
3038: LB6A2: rts
3039: bFRESTR:jsr LAD8F
3040: LB6A6: lda zFACHO + 2
3041: ldy zFACHO + 3
3042: LB6AA: sta zINDEX
3043: sty zINDEX + 1
3044: jsr bFREFAC
3045: php
3046: ldy #0
3047: lda (zINDEX),y
3048: pha
3049: iny
3050: lda (zINDEX),y
3051: tax
3052: iny
3053: lda (zINDEX),y
3054: tay
3055: pla
3056: plp
3057: bne LB6D6
3058: cpy zFRETOP + 1
3059: bne LB6D6
3060: cpx zFRETOP
3061: bne LB6D6
3062: pha
3063: clc
3064: adc zFRETOP
3065: sta zFRETOP
3066: bcc LB6D5
3067: inc zFRETOP + 1
3068: LB6D5: pla
3069: LB6D6: stx zINDEX
3070: sty zINDEX + 1
3071: rts
3072: bFREFAC:cpy zLASTPT + 1
3073: bne LB6EB
3074: cmp zLASTPT
3075: bne LB6EB
3076: sta zTEMPPT
3077: sbc #3
3078: sta zLASTPT
3079: ldy #0
3080: LB6EB: rts
3081: bCHRD: jsr LB7A1
3082: txa
3083: pha
3084: lda #1
3085: jsr LB47D
3086: pla
3087: ldy #0
3088: sta (zFACHO),y
3089: pla
3090: pla
3091: jmp LB4CA
3092: bLEFTD: jsr bPREAM
3093: cmp (zTEMP_50),y
3094: tya
3095: LB706: bcc LB70C
3096: lda (zTEMP_50),y
3097: tax
3098: tya
3099: LB70C: pha
3100: LB70D: txa
3101: LB70E: pha
3102: jsr LB47D
3103: lda zTEMP_50
3104: ldy zTEMP_50 + 1
3105: jsr LB6AA
3106: pla
3107: tay
3108: pla
3109: clc
3110: adc zINDEX
3111: sta zINDEX
3112: bcc LB725
3113: inc zINDEX + 1
3114: LB725: tya
3115: jsr LB68C
3116: jmp LB4CA
3117: bRIGHTD:jsr bPREAM
3118: clc
3119: sbc (zTEMP_50),y
3120: eor #$FF
3121: jmp LB706
3122: bMIDD: lda #$FF
3123: sta zFACHO + 3
3124: jsr zCHRGOT
3125: cmp #')'
3126: beq LB748
3127: jsr bCHKCMA
3128: jsr LB79E
3129: LB748: jsr bPREAM
3130: beq LB798
3131: dex
3132: txa
3133: pha
3134: clc
3135: ldx #0
3136: sbc (zTEMP_50),y
3137: bcs LB70D
3138: eor #$FF
3139: cmp zFACHO + 3
3140: bcc LB70E
3141: lda zFACHO + 3
3142: bcs LB70E
3143: bPREAM: jsr bCHKclose
3144: pla
3145: tay
3146: pla
3147: sta zJMPER + 1
3148: pla
3149: pla
3150: pla
3151: tax
3152: pla
3153: sta zTEMP_50
3154: pla
3155: sta zTEMP_50 + 1
3156: lda zJMPER + 1
3157: pha
3158: tya
3159: pha
3160: ldy #0
3161: txa
3162: rts
3163: bLEN: jsr bLEN1
3164: jmp LB3A2
3165: bLEN1: jsr bFRESTR
3166: ldx #0
3167: stx zVALTYP
3168: tay
3169: rts
3170: bASC: jsr bLEN1
3171: beq LB798
3172: ldy #0
3173: lda (zINDEX),y
3174: tay
3175: jmp LB3A2
3176: LB798: jmp bIQERR
3177: bGTBYTC:jsr zCHRGET
3178: LB79E: jsr bFRMNUM
3179: LB7A1: jsr LB1B8
3180: ldx zFACHO + 2
3181: bne LB798
3182: ldx zFACHO + 3
3183: jmp zCHRGOT
3184: bVAL: jsr bLEN1
3185: bne bSTRVAL
3186: jmp LB8F7
3187: bSTRVAL:ldx zTXTPTR
3188: ldy zTXTPTR + 1
3189: stx zFBUFPT
3190: sty zFBUFPT + 1
3191: ldx zINDEX
3192: stx zTXTPTR
3193: clc
3194: adc zINDEX
3195: sta zINDEX2
3196: ldx zINDEX + 1
3197: stx zTXTPTR + 1
3198: bcc LB7CD
3199: inx
3200: LB7CD: stx zINDEX2 + 1
3201: ldy #0
3202: lda (zINDEX2),y
3203: pha
3204: tya
3205: sta (zINDEX2),y
3206: jsr zCHRGOT
3207: jsr bFIN
3208: pla
3209: ldy #0
3210: sta (zINDEX2),y
3211: LB7E2: ldx zFBUFPT
3212: ldy zFBUFPT + 1
3213: stx zTXTPTR
3214: sty zTXTPTR + 1
3215: rts
3216: bGETNUM:jsr bFRMNUM
3217: jsr bGETADR
3218: LB7F1: jsr bCHKCMA
3219: jmp LB79E
3220: bGETADR:lda zFACSGN
3221: bmi LB798
3222: lda zFACEXP
3223: cmp #$91
3224: bcs LB798
3225: jsr bQINT
3226: lda zFACHO + 2
3227: ldy zFACHO + 3
3228: sty zLINNUM
3229: sta zLINNUM + 1
3230: rts
3231: bPEEK: lda zLINNUM + 1
3232: pha
3233: lda zLINNUM
3234: pha
3235: jsr bGETADR
3236: ldy #0
3237: lda (zLINNUM),y
3238: tay
3239: pla
3240: sta zLINNUM
3241: pla
3242: sta zLINNUM + 1
3243: jmp LB3A2
3244: bPOKE: jsr bGETNUM
3245: txa
3246: ldy #0
3247: sta (zLINNUM),y
3248: rts
3249: bWAIT: jsr bGETNUM
3250: stx zFORPNT
3251: ldx #0
3252: jsr zCHRGOT
3253: beq LB83C
3254: jsr LB7F1
3255: LB83C: stx zFORPNT + 1
3256: ldy #0
3257: LB840: lda (zLINNUM),y
3258: eor zFORPNT + 1
3259: and zFORPNT
3260: beq LB840
3261: LB848: rts
3262: bFADDH: lda #<bFHALF
3263: ldy #>bFHALF
3264: jmp bFADD
3265: bFSUB: jsr bCONUPK
3266: FSUBT: lda zFACSGN
3267: eor #$FF
3268: sta zFACSGN
3269: eor zARGSGN
3270: sta zARISGN
3271: lda zFACEXP
3272: jmp FADDT
3273: bFADD5: jsr LB999
3274: bcc LB8A3
3275: bFADD: jsr bCONUPK
3276: FADDT: bne LB86F
3277: jmp bMOVFA
3278: LB86F: ldx zFACOV
3279: stx zJMPER + 2
3280: ldx #zARGEXP
3281: lda zARGEXP
3282: LB877: tay
3283: beq LB848
3284: sec
3285: sbc zFACEXP
3286: beq LB8A3
3287: bcc LB893
3288: sty zFACEXP
3289: ldy zARGSGN
3290: sty zFACSGN
3291: eor #$FF
3292: adc #0
3293: ldy #0
3294: sty zJMPER + 2
3295: ldx #zFACEXP
3296: bne LB897
3297: LB893: ldy #0
3298: sty zFACOV
3299: LB897: cmp #$F9
3300: bmi bFADD5
3301: tay
3302: lda zFACOV
3303: lsr 1,x
3304: jsr LB9B0
3305: LB8A3: bit zARISGN
3306: bpl LB8FE
3307: ldy #zFACEXP
3308: cpx #zARGEXP
3309: beq LB8AF
3310: ldy #zARGEXP
3311: LB8AF: sec
3312: eor #$FF
3313: adc zJMPER + 2
3314: sta zFACOV
3315: lda 4,y
3316: sbc 4,x
3317: sta zFACHO + 3
3318: lda zADRAY1,y
3319: sbc zADRAY1,x
3320: sta zFACHO + 2
3321: lda 2,y
3322: sbc 2,x
3323: sta zFACHO + 1
3324: lda 1,y
3325: sbc 1,x
3326: sta zFACHO
3327: LB8D2: bcs LB8D7
3328: jsr bNEGFAC
3329: LB8D7: ldy #0
3330: tya
3331: clc
3332: LB8DB: ldx zFACHO
3333: bne LB929
3334: ldx zFACHO + 1
3335: stx zFACHO
3336: ldx zFACHO + 2
3337: stx zFACHO + 1
3338: ldx zFACHO + 3
3339: stx zFACHO + 2
3340: ldx zFACOV
3341: stx zFACHO + 3
3342: sty zFACOV
3343: adc #8
3344: cmp #$20
3345: bne LB8DB
3346: LB8F7: lda #0
3347: LB8F9: sta zFACEXP
3348: LB8FB: sta zFACSGN
3349: rts
3350: LB8FE: adc zJMPER + 2
3351: sta zFACOV
3352: lda zFACHO + 3
3353: adc zARGHO + 3
3354: sta zFACHO + 3
3355: lda zFACHO + 2
3356: adc zARGHO + 2
3357: sta zFACHO + 2
3358: lda zFACHO + 1
3359: adc zARGHO + 1
3360: sta zFACHO + 1
3361: lda zFACHO
3362: adc zARGHO
3363: sta zFACHO
3364: jmp LB936
3365: LB91D: adc #1
3366: asl zFACOV
3367: rol zFACHO + 3
3368: rol zFACHO + 2
3369: rol zFACHO + 1
3370: rol zFACHO
3371: LB929: bpl LB91D
3372: sec
3373: sbc zFACEXP
3374: bcs LB8F7
3375: eor #$FF
3376: adc #1
3377: sta zFACEXP
3378: LB936: bcc LB946
3379: LB938: inc zFACEXP
3380: beq bOVERR
3381: ror zFACHO
3382: ror zFACHO + 1
3383: ror zFACHO + 2
3384: ror zFACHO + 3
3385: ror zFACOV
3386: LB946: rts
3387: bNEGFAC:lda zFACSGN
3388: eor #$FF
3389: sta zFACSGN
3390: LB94D: lda zFACHO
3391: eor #$FF
3392: sta zFACHO
3393: lda zFACHO + 1
3394: eor #$FF
3395: sta zFACHO + 1
3396: lda zFACHO + 2
3397: eor #$FF
3398: sta zFACHO + 2
3399: lda zFACHO + 3
3400: eor #$FF
3401: sta zFACHO + 3
3402: lda zFACOV
3403: eor #$FF
3404: sta zFACOV
3405: inc zFACOV
3406: bne LB97D
3407: LB96F: inc zFACHO + 3
3408: bne LB97D
3409: inc zFACHO + 2
3410: bne LB97D
3411: inc zFACHO + 1
3412: bne LB97D
3413: inc zFACHO
3414: LB97D: rts
3415: bOVERR: ldx #ErrOverflow
3416: jmp bERROR
3417: bMULSHF:ldx #zRESHO - 1
3418: LB985: ldy 4,x
3419: sty zFACOV
3420: ldy 3,x
3421: sty 4,x
3422: ldy 2,x
3423: sty 3,x
3424: ldy 1,x
3425: sty 2,x
3426: ldy zBITS
3427: sty 1,x
3428: LB999: adc #8
3429: bmi LB985
3430: beq LB985
3431: sbc #8
3432: tay
3433: lda zFACOV
3434: bcs LB9BA
3435: LB9A6: asl 1,x
3436: bcc LB9AC
3437: inc 1,x
3438: LB9AC: ror 1,x
3439: ror 1,x
3440: LB9B0: ror 2,x
3441: ror 3,x
3442: ror 4,x
3443: ror a
3444: iny
3445: bne LB9A6
3446: LB9BA: clc
3447: rts
3448:
3449: bFPTABL:.byte $81,$00,$00,$00,$00
3450: LB9C1: .byte $03
3451: .byte $7F,$5E,$56,$CB,$79
3452: .byte $80,$13,$9B,$0B,$64
3453: .byte $80,$76,$38,$93,$16
3454: .byte $82,$38,$AA,$3B,$20
3455: LB9D6: .byte $80,$35,$04,$F3,$34
3456: LB9DB: .byte $81,$35,$04,$F3,$34
3457: LB9E0: .byte $80,$80,$00,$00,$00
3458: LB9E5: .byte $80,$31,$72,$17,$F8
3459:
3460: bLOG: jsr bSIGN
3461: beq LB9F1
3462: bpl LB9F4
3463: LB9F1: jmp bIQERR
3464: LB9F4: lda zFACEXP
3465: sbc #$7F
3466: pha
3467: lda #$80
3468: sta zFACEXP
3469: lda #<LB9D6
3470: ldy #>LB9D6
3471: jsr bFADD
3472: lda #<LB9DB
3473: ldy #>LB9DB
3474: jsr bFDIVT
3475: lda #<bFPTABL
3476: ldy #>bFPTABL
3477: jsr bFSUB
3478: lda #<LB9C1
3479: ldy #>LB9C1
3480: jsr bPOLYX
3481: lda #<LB9E0
3482: ldy #>LB9E0
3483: jsr bFADD
3484: pla
3485: jsr LBD7E
3486: lda #<LB9E5
3487: ldy #>LB9E5
3488: bFMULT: jsr bCONUPK
3489: FMULTT: bne LBA30
3490: jmp LBA8B
3491: LBA30: jsr bMULDIV
3492: lda #$00
3493: sta zRESHO
3494: sta zRESHO + 1
3495: sta zRESHO + 2
3496: sta zRESHO + 3
3497: lda zFACOV
3498: jsr bMULPLY
3499: lda zFACHO + 3
3500: jsr bMULPLY
3501: lda zFACHO + 2
3502: jsr bMULPLY
3503: lda zFACHO + 1
3504: jsr bMULPLY
3505: lda zFACHO
3506: jsr LBA5E
3507: jmp LBB8F
3508: bMULPLY:bne LBA5E
3509: jmp bMULSHF
3510: LBA5E: lsr a
3511: ora #$80
3512: LBA61: tay
3513: bcc LBA7D
3514: clc
3515: lda zRESHO + 3
3516: adc zARGHO + 3
3517: sta zRESHO + 3
3518: lda zRESHO + 2
3519: adc zARGHO + 2
3520: sta zRESHO + 2
3521: lda zRESHO + 1
3522: adc zARGHO + 1
3523: sta zRESHO + 1
3524: lda zRESHO
3525: adc zARGHO
3526: sta zRESHO
3527: LBA7D: ror zRESHO
3528: ror zRESHO + 1
3529: ror zRESHO + 2
3530: ror zRESHO + 3
3531: ror zFACOV
3532: tya
3533: lsr a
3534: bne LBA61
3535: LBA8B: rts
3536: bCONUPK:sta zINDEX
3537: sty zINDEX + 1
3538: ldy #4
3539: lda (zINDEX),y
3540: sta zARGHO + 3
3541: dey
3542: lda (zINDEX),y
3543: sta zARGHO + 2
3544: dey
3545: lda (zINDEX),y
3546: sta zARGHO + 1
3547: dey
3548: lda (zINDEX),y
3549: sta zARGSGN
3550: eor zFACSGN
3551: sta zARISGN
3552: lda zARGSGN
3553: ora #$80
3554: sta zARGHO
3555: dey
3556: lda (zINDEX),y
3557: sta zARGEXP
3558: lda zFACEXP
3559: rts
3560: bMULDIV:lda zARGEXP
3561: LBAB9: beq LBADA
3562: clc
3563: adc zFACEXP
3564: bcc LBAC4
3565: bmi LBADF
3566: clc
3567: .byte ASM_BIT3
3568: LBAC4: bpl LBADA
3569: adc #$80
3570: sta zFACEXP
3571: bne LBACF
3572: jmp LB8FB
3573: LBACF: lda zARISGN
3574: sta zFACSGN
3575: rts
3576: bMLDVEX:lda zFACSGN
3577: eor #$FF
3578: bmi LBADF
3579: LBADA: pla
3580: pla
3581: jmp LB8F7
3582: LBADF: jmp bOVERR
3583: bMUL10: jsr bMOVAF
3584: tax
3585: beq LBAF8
3586: clc
3587: adc #2
3588: bcs LBADF
3589: LBAED: ldx #0
3590: stx zARISGN
3591: jsr LB877
3592: inc zFACEXP
3593: beq LBADF
3594: LBAF8: rts
3595:
3596: bTENC: .byte $84,$20,$00,$00,$00
3597:
3598: bDIV10: jsr bMOVAF
3599: lda #<bTENC
3600: ldy #>bTENC
3601: ldx #0
3602: bFDIV: stx zARISGN
3603: jsr bMOVFM
3604: jmp FDIVT
3605: bFDIVT: jsr bCONUPK
3606: FDIVT: beq LBB8A
3607: jsr bROUND
3608: lda #0
3609: sec
3610: sbc zFACEXP
3611: sta zFACEXP
3612: jsr bMULDIV
3613: inc zFACEXP
3614: beq LBADF
3615: ldx #-4
3616: lda #1
3617: LBB29: ldy zARGHO
3618: cpy zFACHO
3619: bne LBB3F
3620: ldy zARGHO + 1
3621: cpy zFACHO + 1
3622: bne LBB3F
3623: ldy zARGHO + 2
3624: cpy zFACHO + 2
3625: bne LBB3F
3626: ldy zARGHO + 3
3627: cpy zFACHO + 3
3628: LBB3F: php
3629: rol a
3630: bcc LBB4C
3631: inx
3632: sta zRESHO + 3,x
3633: beq LBB7A
3634: bpl LBB7E
3635: lda #1
3636: LBB4C: plp
3637: bcs LBB5D
3638: LBB4F: asl zARGHO + 3
3639: rol zARGHO + 2
3640: rol zARGHO + 1
3641: rol zARGHO
3642: bcs LBB3F
3643: bmi LBB29
3644: bpl LBB3F
3645:
3646: LBB5D: tay
3647: lda zARGHO + 3
3648: sbc zFACHO + 3
3649: sta zARGHO + 3
3650: lda zARGHO + 2
3651: sbc zFACHO + 2
3652: sta zARGHO + 2
3653: lda zARGHO + 1
3654: sbc zFACHO + 1
3655: sta zARGHO + 1
3656: lda zARGHO
3657: sbc zFACHO
3658: sta zARGHO
3659: tya
3660: jmp LBB4F
3661: LBB7A: lda #$40
3662: bne LBB4C
3663:
3664: LBB7E: asl a
3665: asl a
3666: asl a
3667: asl a
3668: asl a
3669: asl a
3670: sta zFACOV
3671: plp
3672: jmp LBB8F
3673: LBB8A: ldx #ErrDivisionByZero
3674: jmp bERROR
3675: LBB8F: lda zRESHO
3676: sta zFACHO
3677: lda zRESHO + 1
3678: sta zFACHO + 1
3679: lda zRESHO + 2
3680: sta zFACHO + 2
3681: lda zRESHO + 3
3682: sta zFACHO + 3
3683: jmp LB8D7
3684: bMOVFM: sta zINDEX
3685: sty zINDEX + 1
3686: ldy #4
3687: lda (zINDEX),y
3688: sta zFACHO + 3
3689: dey
3690: lda (zINDEX),y
3691: sta zFACHO + 2
3692: dey
3693: lda (zINDEX),y
3694: sta zFACHO + 1
3695: dey
3696: lda (zINDEX),y
3697: sta zFACSGN
3698: ora #$80
3699: sta zFACHO
3700: dey
3701: lda (zINDEX),y
3702: sta zFACEXP
3703: sty zFACOV
3704: rts
3705: bMOV2F: ldx #zTEMPF2
3706: .byte ASM_BIT3
3707: LBBCA: ldx #zTEMPF1
3708: ldy #0
3709: beq LBBD4
3710: LBBD0: ldx zFORPNT
3711: ldy zFORPNT + 1
3712: LBBD4: jsr bROUND
3713: stx zINDEX
3714: sty zINDEX + 1
3715: ldy #4
3716: lda zFACHO + 3
3717: sta (zINDEX),y
3718: dey
3719: lda zFACHO + 2
3720: sta (zINDEX),y
3721: dey
3722: lda zFACHO + 1
3723: sta (zINDEX),y
3724: dey
3725: lda zFACSGN
3726: ora #$7F
3727: and zFACHO
3728: sta (zINDEX),y
3729: dey
3730: lda zFACEXP
3731: sta (zINDEX),y
3732: sty zFACOV
3733: rts
3734: bMOVFA: lda zARGSGN
3735: LBBFE: sta zFACSGN
3736: ldx #5
3737: LBC02: lda zARG - 1,x
3738: sta zFAC - 1,x
3739: dex
3740: bne LBC02
3741: stx zFACOV
3742: rts
3743: bMOVAF: jsr bROUND
3744: LBC0F: ldx #6
3745: LBC11: lda zFAC - 1,x
3746: sta zARG - 1,x
3747: dex
3748: bne LBC11
3749: stx zFACOV
3750: LBC1A: rts
3751: bROUND: lda zFACEXP
3752: beq LBC1A
3753: asl zFACOV
3754: bcc LBC1A
3755: LBC23: jsr LB96F
3756: bne LBC1A
3757: jmp LB938
3758: bSIGN: lda zFACEXP
3759: beq LBC38
3760: LBC2F: lda zFACSGN
3761: LBC31: rol a
3762: lda #$FF
3763: bcs LBC38
3764: lda #1
3765: LBC38: rts
3766: bSGN: jsr bSIGN
3767: LBC3C: sta zFACHO
3768: lda #$00
3769: sta zFACHO + 1
3770: ldx #$88
3771: LBC44: lda zFACHO
3772: eor #$FF
3773: rol a
3774: LBC49: lda #$00
3775: sta zFACHO + 3
3776: sta zFACHO + 2
3777: LBC4F: stx zFACEXP
3778: sta zFACOV
3779: sta zFACSGN
3780: jmp LB8D2
3781: bABS: lsr zFACSGN
3782: rts
3783: bFCOMP: sta zINDEX2
3784: LBC5D: sty zINDEX2 + 1
3785: ldy #0
3786: lda (zINDEX2),y
3787: iny
3788: tax
3789: beq bSIGN
3790: lda (zINDEX2),y
3791: eor zFACSGN
3792: bmi LBC2F
3793: cpx zFACEXP
3794: bne LBC92
3795: lda (zINDEX2),y
3796: ora #$80
3797: cmp zFACHO
3798: bne LBC92
3799: iny
3800: lda (zINDEX2),y
3801: cmp zFACHO + 1
3802: bne LBC92
3803: iny
3804: lda (zINDEX2),y
3805: cmp zFACHO + 2
3806: bne LBC92
3807: iny
3808: lda #$7F
3809: cmp zFACOV
3810: lda (zINDEX2),y
3811: sbc zFACHO + 3
3812: beq LBCBA
3813: LBC92: lda zFACSGN
3814: bcc LBC98
3815: eor #$FF
3816: LBC98: jmp LBC31
3817: bQINT: lda zFACEXP
3818: beq LBCE9
3819: sec
3820: sbc #$A0
3821: bit zFACSGN
3822: bpl LBCAF
3823: tax
3824: lda #$FF
3825: sta zBITS
3826: jsr LB94D
3827: txa
3828: LBCAF: ldx #$61
3829: cmp #$F9
3830: bpl LBCBB
3831: jsr LB999
3832: sty zBITS
3833: LBCBA: rts
3834: LBCBB: tay
3835: lda zFACSGN
3836: and #$80
3837: lsr zFACHO
3838: ora zFACHO
3839: sta zFACHO
3840: jsr LB9B0
3841: sty zBITS
3842: rts
3843: bINT: lda zFACEXP
3844: cmp #$A0
3845: bcs LBCF2
3846: jsr bQINT
3847: sty zFACOV
3848: lda zFACSGN
3849: sty zFACSGN
3850: eor #$80
3851: rol a
3852: lda #$A0
3853: sta zFACEXP
3854: lda zFACHO + 3
3855: sta zCHARAC
3856: jmp LB8D2
3857: LBCE9: sta zFACHO
3858: sta zFACHO + 1
3859: sta zFACHO + 2
3860: sta zFACHO + 3
3861: tay
3862: LBCF2: rts
3863: bFIN: ldy #0
3864: ldx #zFACSGN - zTEMPF2
3865: LBCF7: sty zTEMPF2 + 1,x
3866: dex
3867: bpl LBCF7
3868: bcc LBD0D
3869: cmp #'-'
3870: bne LBD06
3871: stx zSGNFLG
3872: beq LBD0A
3873: LBD06: cmp #'+'
3874: bne LBD0F
3875: LBD0A: jsr zCHRGET
3876: LBD0D: bcc LBD6A
3877: LBD0F: cmp #'.'
3878: beq LBD41
3879: cmp #'E'
3880: bne LBD47
3881: jsr zCHRGET
3882: bcc LBD33
3883: cmp #TokMinus
3884: beq LBD2E
3885: cmp #'-'
3886: beq LBD2E
3887: cmp #TokPlus
3888: beq LBD30
3889: cmp #'+'
3890: beq LBD30
3891: bne LBD35
3892: LBD2E: ror zTEMP_60
3893: LBD30: jsr zCHRGET
3894: LBD33: bcc LBD91
3895: LBD35: bit zTEMP_60
3896: bpl LBD47
3897: lda #0
3898: sec
3899: sbc zTEMP_5E
3900: jmp LBD49
3901: LBD41: ror zTEMP_5F
3902: bit zTEMP_5F
3903: bvc LBD0A
3904: LBD47: lda zTEMP_5E
3905: LBD49: sec
3906: sbc zTEMP_5D
3907: sta zTEMP_5E
3908: beq LBD62
3909: bpl LBD5B
3910: LBD52: jsr bDIV10
3911: inc zTEMP_5E
3912: bne LBD52
3913: beq LBD62
3914: LBD5B: jsr bMUL10
3915: dec zTEMP_5E
3916: bne LBD5B
3917: LBD62: lda zSGNFLG
3918: bmi LBD67
3919: rts
3920: LBD67: jmp bNEGOP
3921: LBD6A: pha
3922: bit zTEMP_5F
3923: bpl LBD71
3924: inc zTEMP_5D
3925: LBD71: jsr bMUL10
3926: pla
3927: sec
3928: sbc #'0'
3929: jsr LBD7E
3930: jmp LBD0A
3931: LBD7E: pha
3932: jsr bMOVAF
3933: pla
3934: jsr LBC3C
3935: lda zARGSGN
3936: eor zFACSGN
3937: sta zARISGN
3938: ldx zFACEXP
3939: jmp FADDT
3940: LBD91: lda zTEMP_5E
3941: cmp #10
3942: bcc LBDA0
3943: lda #100
3944: bit zTEMP_60
3945: bmi LBDAE
3946: jmp bOVERR
3947: LBDA0: asl a
3948: asl a
3949: clc
3950: adc zTEMP_5E
3951: asl a
3952: clc
3953: ldy #0
3954: adc (zTXTPTR),y
3955: sec
3956: sbc #'0'
3957: LBDAE: sta zTEMP_5E
3958: jmp LBD30
3959:
3960: bN0999: .byte $9B,$3E,$BC,$1F,$FD
3961: LBDB8: .byte $9E,$6E,$6B,$27,$FD
3962: LBDBD: .byte $9E,$6E,$6B,$28,$00
3963:
3964: bINPRT: lda #<StrIn
3965: ldy #>StrIn
3966: jsr LBDDA
3967:
3968: lda zCURLIN + 1
3969: ldx zCURLIN
3970: LBDCD: sta zFACHO
3971: stx zFACHO + 1
3972: ldx #$90
3973: sec
3974: jsr LBC49
3975: jsr LBDDF
3976: LBDDA: jmp bSTROUT
3977:
3978: bFOUT: ldy #1
3979: LBDDF: lda #' '
3980: bit zFACSGN
3981: bpl LBDE7
3982: lda #'-'
3983: LBDE7: sta zASCWRK,y
3984: sta zFACSGN
3985: sty zFBUFPT
3986: iny
3987: lda #'0'
3988: ldx zFACEXP
3989: bne LBDF8
3990: jmp LBF04
3991: LBDF8: lda #$00
3992: cpx #$80
3993: beq LBE00
3994: bcs LBE09
3995: LBE00: lda #<LBDBD
3996: ldy #>LBDBD
3997: jsr bFMULT
3998: lda #$F7
3999: LBE09: sta zTEMP_5D
4000: LBE0B: lda #<LBDB8
4001: ldy #>LBDB8
4002: jsr bFCOMP
4003: beq LBE32
4004: bpl LBE28
4005: LBE16: lda #<bN0999
4006: ldy #>bN0999
4007: jsr bFCOMP
4008: beq LBE21
4009: bpl LBE2F
4010: LBE21: jsr bMUL10
4011: dec zTEMP_5D
4012: bne LBE16
4013: LBE28: jsr bDIV10
4014: inc zTEMP_5D
4015: bne LBE0B
4016: LBE2F: jsr bFADDH
4017: LBE32: jsr bQINT
4018: ldx #$01
4019: lda zTEMP_5D
4020: clc
4021: adc #$0A
4022: bmi LBE47
4023: cmp #$0B
4024: bcs LBE48
4025: adc #$FF
4026: tax
4027: lda #$02
4028: LBE47: sec
4029: LBE48: sbc #$02
4030: sta zTEMP_5E
4031: stx zTEMP_5D
4032: txa
4033: beq LBE53
4034: bpl LBE66
4035: LBE53: ldy zFBUFPT
4036: lda #'.'
4037: iny
4038: sta zASCWRK,y
4039: txa
4040: beq LBE64
4041: lda #'0'
4042: iny
4043: sta zASCWRK,y
4044: LBE64: sty zFBUFPT
4045: LBE66: ldy #$00
4046: bFOUTIM:ldx #$80
4047: LBE6A: lda zFACHO + 3
4048: clc
4049: adc LBF16 + 3,y
4050: sta zFACHO + 3
4051: lda zFACHO + 2
4052: adc LBF16 + 2,y
4053: sta zFACHO + 2
4054: lda zFACHO + 1
4055: adc LBF16 + 1,y
4056: sta zFACHO + 1
4057: lda zFACHO
4058: adc LBF16,y
4059: sta zFACHO
4060: inx
4061: bcs LBE8E
4062: bpl LBE6A
4063: bmi LBE90
4064: LBE8E: bmi LBE6A
4065: LBE90: txa
4066: bcc LBE97
4067: eor #$FF
4068: adc #10
4069: LBE97: adc #'0' - 1
4070: iny
4071: iny
4072: iny
4073: iny
4074: sty zVARPNT
4075: ldy zFBUFPT
4076: iny
4077: tax
4078: and #$7F
4079: sta zASCWRK,y
4080: dec zTEMP_5D
4081: bne LBEB2
4082: lda #'.'
4083: iny
4084: sta zASCWRK,y
4085: LBEB2: sty zFBUFPT
4086: ldy zVARPNT
4087: txa
4088: eor #$FF
4089: and #$80
4090: tax
4091: cpy #$24
4092: beq LBEC4
4093: cpy #$3C
4094: bne LBE6A
4095: LBEC4: ldy zFBUFPT
4096: LBEC6: lda zASCWRK,y
4097: dey
4098: cmp #'0'
4099: beq LBEC6
4100: cmp #'.'
4101: beq LBED3
4102: iny
4103: LBED3: lda #'+'
4104: ldx zTEMP_5E
4105: beq LBF07
4106: bpl LBEE3
4107: lda #0
4108: sec
4109: sbc zTEMP_5E
4110: tax
4111: lda #'-'
4112: LBEE3: sta lSTACK + 1,y
4113: lda #'E'
4114: sta lSTACK,y
4115: txa
4116: ldx #'0' - 1
4117: sec
4118: LBEEF: inx
4119: sbc #10
4120: bcs LBEEF
4121: adc #'9' + 1
4122: sta lSTACK + 3,y
4123: txa
4124: sta lSTACK + 2,y
4125: lda #0
4126: sta lSTACK + 4,y
4127: beq LBF0C
4128: LBF04: sta zASCWRK,y
4129: LBF07: lda #0
4130: sta lSTACK,y
4131: LBF0C: lda #<lSTACK
4132: ldy #>lSTACK
4133: rts
4134: bFHALF: .byte $80,$00,$00,$00,$00
4135:
4136: bFNULL = bFHALF + 2
4137: bTI = bFNULL
4138:
4139: LBF16: .byte $FA,$0A,$1F,$00
4140:
4141: .byte $00,$98,$96,$80
4142: .byte $FF,$F0,$BD,$C0
4143: .byte $00,$01,$86,$A0
4144: .byte $FF,$FF,$D8,$F0
4145: .byte $00,$00,$03,$E8
4146: .byte $FF,$FF,$FF,$9C
4147: .byte $00,$00,$00,$0A
4148: .byte $FF,$FF,$FF,$FF
4149:
4150: .byte $FF,$DF,$0A,$80
4151: .byte $00,$03,$4B,$C0
4152: .byte $FF,$FF,$73,$60
4153: .byte $00,$00,$0E,$10
4154: .byte $FF,$FF,$FD,$A8
4155: .byte $00,$00,$00,$3C
4156:
4157:
4158:
4159: .byte CHKSUM_BF52
4160:
4161:
4162:
4163: .segment "BASICSQR"
4164:
4165: bSQR: jsr bMOVAF
4166: lda #<bFHALF
4167: ldy #>bFHALF
4168: jsr bMOVFM
4169: bFPWRT: beq bEXP
4170: lda zARGEXP
4171: bne LBF84
4172: jmp LB8F9
4173: LBF84: ldx #<zTEMPF3
4174: ldy #>zTEMPF3
4175: jsr LBBD4
4176: lda zARGSGN
4177: bpl LBF9E
4178: jsr bINT
4179: lda #<zTEMPF3
4180: ldy #>zTEMPF3
4181: jsr bFCOMP
4182: bne LBF9E
4183: tya
4184: ldy zCHARAC
4185: LBF9E: jsr LBBFE
4186: tya
4187: pha
4188: jsr bLOG
4189: lda #<zTEMPF3
4190: ldy #>zTEMPF3
4191: jsr bFMULT
4192: jsr bEXP
4193: pla
4194: lsr a
4195: bcc LBFBE
4196: bNEGOP: lda zFACEXP
4197: beq LBFBE
4198: lda zFACSGN
4199: eor #$FF
4200: sta zFACSGN
4201: LBFBE: rts
4202:
4203: bLOGEB2:
4204: .byte $81,$38,$AA,$3B,$29
4205: LBFC4:
4206: .byte $07
4207: .byte $71,$34,$58,$3E,$56
4208: .byte $74,$16,$7E,$B3,$1B
4209: .byte $77,$2F,$EE,$E3,$85
4210: .byte $7A,$1D,$84,$1C,$2A
4211: .byte $7C,$63,$59,$58,$0A
4212: .byte $7E,$75,$FD,$E7,$C6
4213: .byte $80,$31,$72,$18,$10
4214: .byte $81,$00,$00,$00,$00
4215:
4216: bEXP: lda #<bLOGEB2
4217: ldy #>bLOGEB2
4218: jsr bFMULT
4219: lda zFACOV
4220: adc #$50
4221: bcc LBFFD
4222: jsr LBC23
4223:
4224: LBFFD:
4225:
4226: .segment "BASICSQRJMP"
4227:
4228: jmp LE000
4229:
4230: .segment "BASICSQR2"
4231:
4232: LE000:
4233: sta zJMPER + 2
4234:
4235: .segment "BASICSQR3"
4236: jsr LBC0F
4237: lda zFACEXP
4238: cmp #$88
4239: bcc LE00E
4240: LE00B: jsr bMLDVEX
4241: LE00E: jsr bINT
4242: lda zCHARAC
4243: clc
4244: adc #$81
4245: beq LE00B
4246: sec
4247: sbc #1
4248: pha
4249: ldx #5
4250: LE01E: lda zARGEXP,x
4251: ldy zFACEXP,x
4252: sta zFACEXP,x
4253: sty zARGEXP,x
4254: dex
4255: bpl LE01E
4256: lda zJMPER + 2
4257: sta zFACOV
4258: jsr FSUBT
4259: jsr bNEGOP
4260: lda #<LBFC4
4261: ldy #>LBFC4
4262: jsr LE059
4263: lda #0
4264: sta zARISGN
4265: pla
4266: jsr LBAB9
4267: rts
4268: bPOLYX: sta zFBUFPT
4269: sty zFBUFPT + 1
4270: jsr LBBCA
4271: lda #zTEMPF1
4272: jsr bFMULT
4273: jsr LE05D
4274: lda #<zTEMPF1
4275: ldy #>zTEMPF1
4276: jmp bFMULT
4277: LE059: sta zFBUFPT
4278: sty zFBUFPT + 1
4279: LE05D: jsr bMOV2F
4280: lda (zFBUFPT),y
4281: sta zSGNFLG
4282: ldy zFBUFPT
4283: iny
4284: tya
4285: bne LE06C
4286: inc zFBUFPT + 1
4287: LE06C: sta zFBUFPT
4288: ldy zFBUFPT + 1
4289: LE070: jsr bFMULT
4290: lda zFBUFPT
4291: ldy zFBUFPT + 1
4292: clc
4293: adc #5
4294: bcc LE07D
4295: iny
4296: LE07D: sta zFBUFPT
4297: sty zFBUFPT + 1
4298: jsr bFADD
4299: lda #<zTEMPF2
4300: ldy #>zTEMPF2
4301: dec zSGNFLG
4302: bne LE070
4303: rts
4304: bRMULC: .byte $98,$35,$44,$7A,$00
4305: LE092: .byte $68,$28,$B1,$46,$00
4306:
4307: bRND: jsr bSIGN
4308: bmi LE0D3
4309: bne LE0BE
4310: jsr kIOBASE
4311: stx zINDEX
4312: sty zINDEX + 1
4313: ldy #4
4314: lda (zINDEX),y
4315: sta zFACHO
4316: iny
4317: lda (zINDEX),y
4318: sta zFACHO + 2
4319: ldy #8
4320: lda (zINDEX),y
4321: sta zFACHO + 1
4322: iny
4323: lda (zINDEX),y
4324: sta zFACHO + 3
4325: jmp LE0E3
4326: LE0BE: lda #<zRNDX
4327: ldy #>zRNDX
4328: jsr bMOVFM
4329: lda #<bRMULC
4330: ldy #>bRMULC
4331: jsr bFMULT
4332: lda #<LE092
4333: ldy #>LE092
4334: jsr bFADD
4335: LE0D3: ldx zFACHO + 3
4336: lda zFACHO
4337: sta zFACHO + 3
4338: stx zFACHO
4339: ldx zFACHO + 1
4340: lda zFACHO + 2
4341: sta zFACHO + 1
4342: stx zFACHO + 2
4343: LE0E3: lda #0
4344: sta zFACSGN
4345: lda zFACEXP
4346: sta zFACOV
4347: lda #$80
4348: sta zFACEXP
4349: jsr LB8D7
4350: ldx #<zRNDX
4351: ldy #>zRNDX
4352: LE0F6: jmp LBBD4
4353: bBIOERR:cmp #$F0
4354: bne LE104
4355: sty zMEMSIZ + 1
4356: stx zMEMSIZ
4357: jmp LA663
4358: LE104: tax
4359: bne LE109
4360: ldx #ErrBreak
4361: LE109: jmp bERROR
4362: bCHOUT: jsr kCHROUT
4363: bcs bBIOERR
4364: rts
4365: bCHIN: jsr kCHRIN
4366: bcs bBIOERR
4367: rts
4368: bCKOUT:
4369: .if CompileComputer >= C64_02
4370: jsr LE4AD
4371: .else
4372: jsr kCHKOUT
4373: .endif
4374: bcs bBIOERR
4375: rts
4376: bCKIN: jsr kCHKIN
4377: bcs bBIOERR
4378: rts
4379: bGETIN: jsr kGETIN
4380: bcs bBIOERR
4381: rts
4382: bSYS: jsr bFRMNUM
4383: jsr bGETADR
4384: lda #>(LE147 - 1)
4385: pha
4386: lda #<(LE147 - 1)
4387: pha
4388: lda lSPREG
4389: pha
4390: lda lSAREG
4391: ldx lSXREG
4392: ldy lSYREG
4393: plp
4394: jmp (zLINNUM)
4395: LE147: php
4396: sta lSAREG
4397: stx lSXREG
4398: sty lSYREG
4399: pla
4400: sta lSPREG
4401: rts
4402: bSAVET: jsr bSLPARA
4403: ldx zVARTAB
4404: ldy zVARTAB + 1
4405: lda #zTXTTAB
4406: jsr kSAVE
4407: bcs bBIOERR
4408: rts
4409: bVERFYT:lda #1
4410: .byte ASM_BIT3
4411:
4412: bLOADT: lda #0
4413: sta zVERCK
4414: jsr bSLPARA
4415: lda zVERCK
4416: ldx zTXTTAB
4417: ldy zTXTTAB + 1
4418: jsr kLOAD
4419: bcs LE1D1
4420: lda zVERCK
4421: beq ChkStatus
4422: JDLE17E:
4423: ldx #ErrVerify
4424: jsr kREADST
4425: and #$10
4426:
4427: .if CompileComputer >= C64_GENERAL
4428: bne LE19E
4429: .else
4430:
4431: beq @E187
4432: jmp bERROR
4433: .endif
4434:
4435: @E187: lda zTXTPTR
4436:
4437: cmp #>lBUF
4438: beq LE194
4439: lda #<bOKK
4440: ldy #>bOKK
4441:
4442: jmp bSTROUT
4443: LE194: rts
4444:
4445: ChkStatus:
4446: jsr kREADST
4447: and #$BF
4448: beq LE1A1
4449: ldx #ErrLoad
4450: LE19E: jmp bERROR
4451: LE1A1: lda zTXTPTR + 1
4452: cmp #>lBUF
4453: bne LE1B5
4454: JDLE1A7:
4455: stx zVARTAB
4456: sty zVARTAB + 1
4457: lda #<StrReady
4458: ldy #>StrReady
4459: jsr bSTROUT
4460: jmp LA52A
4461: LE1B5: jsr bSTXPT
4462:
4463: .if CompileComputer >= C64_GENERAL
4464: jsr bLINKPRG
4465: jmp LA677
4466: .elseif CompileComputer >= VIC20_06
4467: JMP LE476
4468: .else
4469: JMP LA677
4470: .endif
4471:
4472:
4473: .segment "BASICOPEN"
4474:
4475: bOPENT: jsr bOCPARA
4476: jsr kOPEN
4477: bcs LE1D1
4478: rts
4479: bCLOSET:jsr bOCPARA
4480: lda zFORPNT
4481: jsr kCLOSE
4482: bcc LE194
4483: LE1D1: jmp bBIOERR
4484: bSLPARA:lda #0
4485: jsr kSETNAM
4486: ldx #1
4487: ldy #0
4488: .ifdef JIFFY
4489: jsr JDLF73A
4490: .else
4491: jsr kSETLFS
4492: .endif
4493: jsr bDEFLT
4494: jsr LE257
4495: jsr bDEFLT
4496: jsr bCOMBYT
4497: ldy #0
4498: stx zFORPNT
4499: jsr kSETLFS
4500: jsr bDEFLT
4501: jsr bCOMBYT
4502: txa
4503: tay
4504: ldx zFORPNT
4505: jmp kSETLFS
4506: bCOMBYT:jsr bCMMERR
4507: jmp LB79E
4508: bDEFLT: jsr zCHRGOT
4509: bne LE20D
4510: pla
4511: pla
4512: LE20D: rts
4513: bCMMERR:jsr bCHKCMA
4514: LE211: jsr zCHRGOT
4515: bne LE20D
4516: jmp bSYNERR
4517: bOCPARA:lda #0
4518: jsr kSETNAM
4519: jsr LE211
4520: jsr LB79E
4521: stx zFORPNT
4522: txa
4523: ldx #1
4524: JDLE229:
4525: ldy #0
4526: jsr kSETLFS
4527: jsr bDEFLT
4528: jsr bCOMBYT
4529: stx zFORPNT + 1
4530: ldy #0
4531: lda zFORPNT
4532: cpx #3
4533: bcc LE23F
4534: dey
4535: LE23F: jsr kSETLFS
4536: jsr bDEFLT
4537: jsr bCOMBYT
4538: txa
4539: tay
4540: ldx zFORPNT + 1
4541: lda zFORPNT
4542: jsr kSETLFS
4543: jsr bDEFLT
4544: jsr bCMMERR
4545: LE257: jsr bFRMEVL
4546: JDLE25A:
4547: jsr bFRESTR
4548: ldx zINDEX
4549: ldy zINDEX + 1
4550: jmp kSETNAM
4551: bCOS: lda #<bPI2
4552: ldy #>bPI2
4553: jsr bFADD
4554: bSIN: jsr bMOVAF
4555: lda #<LE2E5
4556: ldy #>LE2E5
4557: ldx zARGSGN
4558: jsr bFDIV
4559: jsr bMOVAF
4560: jsr bINT
4561: lda #0
4562: sta zARISGN
4563: jsr FSUBT
4564: lda #<LE2EA
4565: ldy #>LE2EA
4566: jsr bFSUB
4567: lda zFACSGN
4568: pha
4569: bpl LE29D
4570: jsr bFADDH
4571: lda zFACSGN
4572: bmi LE2A0
4573: lda zTANSGN
4574: eor #$FF
4575: sta zTANSGN
4576: LE29D: jsr bNEGOP
4577: LE2A0: lda #<LE2EA
4578: ldy #>LE2EA
4579: jsr bFADD
4580: pla
4581: bpl LE2AD
4582: jsr bNEGOP
4583: LE2AD: lda #<LE2EF
4584: ldy #>LE2EF
4585: jmp bPOLYX
4586: bTAN: jsr LBBCA
4587: lda #$00
4588: sta zTANSGN
4589: jsr bSIN
4590: ldx #<zTEMPF3
4591: ldy #>zTEMPF3
4592: jsr LE0F6
4593: lda #<zTEMPF1
4594: ldy #>zTEMPF1
4595: jsr bMOVFM
4596: lda #$00
4597: sta zFACSGN
4598: lda zTANSGN
4599: jsr LE2DC
4600: lda #<zTEMPF3
4601: ldy #>zTEMPF3
4602: jmp bFDIVT
4603: LE2DC: pha
4604: jmp LE29D
4605:
4606: bPI2: .byte $81,$49,$0F,$DA,$A2
4607: LE2E5: .byte $83,$49,$0F,$DA,$A2
4608: LE2EA: .byte $7F,$00,$00,$00,$00
4609: LE2EF: .byte $05
4610: .byte $84,$E6,$1A,$2D,$1B
4611: .byte $86,$28,$07,$FB,$F8
4612: .byte $87,$99,$68,$89,$01
4613: .byte $87,$23,$35,$DF,$E1
4614: .byte $86,$A5,$5D,$E7,$28
4615: .byte $83,$49,$0F,$DA,$A2
4616:
4617: bATN: lda zFACSGN
4618: pha
4619: bpl LE316
4620: jsr bNEGOP
4621: LE316: lda zFACEXP
4622: pha
4623: cmp #$81
4624: bcc LE324
4625: lda #<bFPTABL
4626: ldy #>bFPTABL
4627: jsr bFDIVT
4628: LE324: lda #<bATNCON
4629: ldy #>bATNCON
4630: jsr bPOLYX
4631: pla
4632: cmp #$81
4633: bcc LE337
4634: lda #<bPI2
4635: ldy #>bPI2
4636: jsr bFSUB
4637: LE337: pla
4638: bpl LE33D
4639: jmp bNEGOP
4640: LE33D: rts
4641:
4642: bATNCON:.byte $0B
4643: .byte $76,$B3,$83,$BD,$D3
4644: .byte $79,$1E,$F4,$A6,$F5
4645: .byte $7B,$83,$FC,$B0,$10
4646: .byte $7C,$0C,$1F,$67,$CA
4647: .byte $7C,$DE,$53,$CB,$C1
4648: .byte $7D,$14,$64,$70,$4C
4649: .byte $7D,$B7,$EA,$51,$7A
4650: .byte $7D,$63,$30,$88,$7E
4651: .byte $7E,$92,$44,$99,$3A
4652: .byte $7E,$4C,$CC,$91,$C7
4653: .byte $7F,$AA,$AA,$AA,$13
4654: .byte $81,$00,$00,$00,$00
4655:
4656: .if CompileComputer >= C64_GENERAL
4657: LE37B: jsr kCLRCHN
4658: lda #0
4659: sta z13
4660: jsr LA67A
4661: cli
4662:
4663:
4664: ReadyVector:
4665: ldx #$80
4666: jmp (lIERROR)
4667:
4668: PatchErrorOut:
4669: txa
4670: bmi @LE391
4671: jmp ErrorOut
4672: @LE391:
4673: jmp bREADY
4674: .endif
4675:
4676: LE394:
4677: .ifdef JIFFY
4678: jsr JDLE4B7
4679: .else
4680: jsr LE453
4681: .endif
4682: jsr LE3BF
4683: jsr LE422
4684: ldx #-5
4685: txs
4686:
4687: .if CompileComputer >= C64_GENERAL
4688: bne ReadyVector
4689: .else
4690: jmp bREADY
4691: .endif
4692:
4693: .segment "CHRGET"
4694:
4695: COPY_OF_CHRGET:
4696: inc zTXTPTR
4697: bne COPY_OF_CHRGOT
4698: inc zTXTPTR + 1
4699:
4700: COPY_OF_CHRGOT:
4701: lda $EA60
4702: cmp #'9' + 1
4703: bcs COPY_OF_CHRGOT_RTS
4704:
4705: COPY_OF_CHRGOT_SPACE:
4706: cmp #' '
4707: beq COPY_OF_CHRGET
4708: sec
4709: sbc #'0'
4710: sec
4711: sbc #-'0'
4712: COPY_OF_CHRGOT_RTS:
4713: rts
4714:
4715: .byte $80,$4F,$C7,$52,$58
4716:
4717: END_COPY_OF_CHRGET:
4718:
4719: .segment "INIT"
4720:
4721: LE3BF: lda #ASM_JMP
4722: sta zJMPER
4723: sta lUSRPOK
4724: lda #<bIQERR
4725: ldy #>bIQERR
4726: sta lUSRADD
4727: sty lUSRADD + 1
4728: lda #<bGIVAYF
4729: ldy #>bGIVAYF
4730: sta zADRAY2
4731: sty zADRAY2 + 1
4732: lda #<bFACINX
4733: ldy #>bFACINX
4734: sta zADRAY1
4735: sty zADRAY1 + 1
4736: ldx #END_COPY_OF_CHRGET - COPY_OF_CHRGET - 1
4737: LE3E2: lda COPY_OF_CHRGET,x
4738: sta zCHRGET,x
4739: dex
4740: bpl LE3E2
4741: lda #$03
4742: sta zFOUR6
4743: lda #0
4744: sta zBITS
4745: sta z13
4746: sta zLASTPT + 1
4747: ldx #1
4748: stx lBUF - 3
4749: stx lBUF - 4
4750: ldx #zTEMPST
4751: stx zTEMPPT
4752: sec
4753: jsr kMEMBOT
4754: stx zTXTTAB
4755: sty zTXTTAB + 1
4756: sec
4757: jsr kMEMTOP
4758: stx zMEMSIZ
4759: sty zMEMSIZ + 1
4760: stx zFRETOP
4761: sty zFRETOP + 1
4762: ldy #0
4763: tya
4764: sta (zTXTTAB),y
4765: inc zTXTTAB
4766: bne LE421
4767: inc zTXTTAB + 1
4768: LE421: rts
4769: LE422: lda zTXTTAB
4770: ldy zTXTTAB + 1
4771: jsr bREASON
4772: lda #<LE473
4773: ldy #>LE473
4774: .if CompileComputer = C64_4064
4775: jmp LE441
4776: .else
4777: jsr bSTROUT
4778: .endif
4779: lda zMEMSIZ
4780: sec
4781: sbc zTXTTAB
4782: tax
4783: lda zMEMSIZ + 1
4784: sbc zTXTTAB + 1
4785: jsr LBDCD
4786: lda #<LE460
4787: ldy #>LE460
4788: LE441: jsr bSTROUT
4789: jmp LA644
4790:
4791: .if CompileComputer < C64_GENERAL
4792: .include "../vic20/basic-texts.inc"
4793: .endif
4794:
4795: LE447:
4796: .if CompileComputer >= C64_GENERAL
4797: .ifdef JIFFY
4798: .addr JDLF763
4799: .else
4800: .addr PatchErrorOut
4801: .endif
4802: .else
4803: .addr ErrorOut
4804: .endif
4805:
4806: .if CompileComputer = C64_GS
4807: .addr C64GS_Init
4808: .else
4809: .addr IMAIN
4810: .endif
4811:
4812: .ifdef JIFFY
4813: .addr LEA64
4814: .else
4815: .addr LA57C
4816: .endif
4817: .addr LA71A
4818: .addr LA7E4
4819: .addr LAE86
4820: END_LE447:
4821:
4822: LE453: ldx #END_LE447 - LE447 - 1
4823: LE455: lda LE447,x
4824: sta lIERROR,x
4825: dex
4826: bpl LE455
4827: rts
4828:
4829: .if CompileComputer >= C64_GENERAL
4830: .byte $00
4831:
4832: .include "../c64/basic-texts.inc"
4833: .endif
4834:
4835: .if CompileComputer < C64_GENERAL
4836:
4837: LE37B:
4838: jsr kCLRCHN
4839: lda #0
4840: sta z13
4841: jsr LA67A
4842: cli
4843: jmp bREADY
4844:
4845: .byte CHECKSUM_E475
4846:
4847: .if CompileComputer >= VIC20_06
4848: LE476:
4849: jsr bLINKPRG
4850: jmp LA677
4851: .endif
4852: .endif

basic2.inc.html; generated on Fri Sep 18 21:44:55 2015 by ca65html
uz@cc65.org