10.07.2015 Views

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

EXTENDED BASIC UNRAVELLED IIAPPENDIX BDISASSEMBLY OF EXTENDED BASIC 1.1ORIGIN:SPECTRAL ASSOCREVISED:12/26/1999 WALTER K ZYDHEK1057 88DE ED 84 STD ,X * GET THE FP1058 88E0 EF 02 STU $02,X * VALUE OF THE ARGUMENT1059 88E2 35 02 PULS A * VARIABLE OFF OF THE1060 88E4 A7 04 STA $04,X * STACK AND RE-SAVE IT1061 88E6 9D A5 JSR GETCCH GET FINAL CHARACTER OF THE FN FORMULA1062 88E8 10 26 29 8B LBNE LB277 ‘SYNTAX’ ERROR IF NOT END OF LINE1063 88EC 10 9F A6 STY CHARAD RESTORE INPUT POINTER1064 88EF 39 L88EF RTS10651066 * ERROR DRIVER RAM HOOK1067 88F0 C1 32 XVEC17 CMPB #2*25 CHECK FOR EXBAS ERROR NUMBER1068 88F2 25 FB BLO L88EF BRANCH IF < EXBAS ERROR1069 88F4 BD A7 E9 JSR LA7E9 TURN CASSETTE MOTOR OFF1070 88F7 BD A9 74 JSR LA974 DISABLE ANALOG MULTIPLEXER1071 88FA BD AD 33 JSR LAD33 DO PART OF A NEW1072 88FD 0F 6F CLR DEVNUM SET DEVICE NUMBER TO SCREEN1073 88FF BD B9 5C JSR LB95C MOVE CURSOR TO START OF NEXT LINE1074 8902 BD B9 AF JSR LB9AF SEND A ‘?‘ TO CONSOLE OUT1075 8905 8E 88 D9 LDX #L890B-25*2 POINT X TO EXBAS ERRORS1076 8908 7E AC 60 JMP LAC60 PROCESS ERROR10771078 * ADDITIONAL ERROR MESSAGES ADDED BY EXTENDED BASIC10791080 890B 55 46 L890B FCC 'UF' 25 UNDEFINED FUNCTION (FN) CALL1081 890D 4E 45 L890D FCC 'NE' 26 FILE NOT FOUND10821083 * DEF USR1084 890F 9D 9F L890F JSR GETNCH SKIP PAST SECOND BYTE OF DEF USR TOKEN1085 8911 8D 09 BSR L891C GET FN NUMBER1086 8913 34 10 PSHS X SAVE FN EXEC ADDRESS STORAGE LOC1087 8915 8D 2D BSR L8944 CALCULATE EXEC ADDRESS1088 8917 35 40 PULS U GET FN EXEC ADDRESS STORAGE LOC1089 8919 AF C4 STX ,U SAVE EXEC ADDRESS1090 891B 39 RTS1091 891C 5F L891C CLRB DEFAULT TO USR0 IF NO ARGUMENT1092 891D 9D 9F JSR GETNCH GET A CHARACTER FROM BASIC1093 891F 24 06 BCC L8927 BRANCH IF NOT NUMERIC1094 8921 80 30 SUBA #'0' MASK OFF ASCII1095 8923 1F 89 TFR A,B SAVE USR NUMBER IN ACCB1096 8925 9D 9F JSR GETNCH GET A CHARACTER FROM BASIC1097 8927 9E B0 L8927 LDX USRADR GET ADDRESS OF STORAGE LOCs FOR USR ADDRESS1098 8929 58 ASLB X2 - 2 BYTES/USR ADDRESS1099 892A 3A ABX ADD OFFSET TO START ADDRESS OF STORAGE LOCs1100 892B 39 RTS1101 * PROCESS A USR CALL1102 892C 8D EE L892C BSR L891C GET STORAGE LOC OF EXEC ADDRESS FOR USR N1103 892E AE 84 LDX ,X * GET EXEC ADDRESS AND1104 8930 34 10 PSHS X * PUSH IT ONTO STACK1105 8932 BD B2 62 JSR LB262 SYNTAX CHECK FOR ‘(‘ & EVALUATE EXPR1106 8935 8E 00 4F LDX #FP0EXP POINT X TO FPA01107 8938 96 06 LDA VALTYP GET VARIABLE TYPE1108 893A 27 07 BEQ L8943 BRANCH IF NUMERIC, STRING IF 01109 893C BD B6 57 JSR LB657 GET LENGTH & ADDRESS OF STRING VARIABLE1110 893F 9E 52 LDX FPA0+2 GET POINTER TO STRING DESCRIPTOR1111 8941 96 06 LDA VALTYP GET VARIABLE TYPE1112 8943 39 L8943 RTS JUMP TO USR ROUTINE (PSHS X ABOVE)1113 8944 C6 B3 L8944 LDB #$B3 TOKEN FOR ‘=‘1114 8946 BD B2 6F JSR LB26F DO A SYNTAX CHECK FOR =1115 8949 7E B7 3D JMP LB73D EVALUATE EXPRESSION, RETURN VALUE IN X11161117 * EXTENDED BASIC’S IRQ ROUTINE11181119 894C B6 FF 03 XIRQSV LDA PIA0+3 GET PIA0, PORT B CONTROL REGISTER1120 894F 2B 01 BMI L8952 BRANCH IF 60 HZ INTERRUPT1121 8951 3B RTI RETURN IF 63.5 MICROSECOND INTERRUPT1122 8952 B6 FF 02 L8952 LDA PIA0+2 RESET PIA INTERRUPT FLAG1123 8955 BE 01 12 L8955 LDX TIMVAL GET REAL TIME CLOCK1124 8958 30 01 LEAX $01,X INCREMENT IT1125 895A BF 01 12 STX TIMVAL SAVE IT1126 895D 7E 9C 3E JMP L9C3E GO CHECK SOME MORE STUFF11271128 8960 9D 9F L8960 JSR GETNCH GET A CHARACTER FROM BASIC1129 8962 8D E0 BSR L8944 GET NEW TIMER VALUE1130 8964 BF 01 12 STX TIMVAL SET TIMER COUNTER1131 8967 39 RTS11321133 * TIMER1134 8968 BE 01 12 TIMER LDX TIMVAL GET TIMER VALUE1135 896B 9F 52 STX FPA0+2 SAVE TIMER VALUE IN BOTTOM OF FPA01136 896D 7E 88 0E JMP L880E CONVERT BALANCE OF FPA0 TO POSITIVE INTEGER11371138 * DEL1139 8970 10 27 2A D6 DEL LBEQ LB44A FC’ ERROR IF NO ARGUMENT1140 8974 BD AF 67 JSR LAF67 CONVERT A DECIMAL BASiC NUMBER TO BINARY1141 8977 BD AD 01 JSR LAD01 FIND RAM ADDRESS OF START OF A BASIC LINE1142 897A 9F D3 STX VD3 SAVE RAM ADDRESS OF STARTING LINE NUMBER1143 897C 9D A5 JSR GETCCH GET CURRENT INPUT CHARACTER1144 897E 27 10 BEQ L8990 BRANCH IF END OF LINE1145 8980 81 AC CMPA #$AC TOKEN FOR ‘-'1146 8982 26 3B BNE L89BF TERMINATE COMMAND IF LINE NUMBER NOT FOLLOWED BY ‘-‘1147 8984 9D 9F JSR GETNCH GET A CHARACTER FROM BASIC1148 8986 27 04 BEQ L898C IF END OF LINE, USE DEFAULT ENDING LINE NUMBER1149 8988 8D 24 BSR L89AE * CONVERT ENDING LINE NUMBER TO BINARY1150 898A 20 04 BRA L8990 * AND SAVE IT IN BINVAL1151 898C 86 FF L898C LDA #$FF = USE $FFXX AS DEFAULT ENDING1152 898E 97 2B STA BINVAL = LINE NUMBER - SAVE IT IN BINVALB12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!