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 ZYDHEK1249 8A61 BD AC EF JSR LACEF RECALCULATE NEXT LINE RAM ADDRESS1250 8A64 7E AC 73 JMP LAC73 GO BACK TO BASIC’S MAIN LOOP1251 8A67 86 L8A67 FCB SKP1LD SKIP ONE BYTE - LDA #$4F1252 8A68 4F L8A68 CLRA NEW LINE NUMBER FLAG - 0; INSERT NEW LINE NUMBERS1253 8A69 97 D8 STA VD8 SAVE NEW LINE NUMBER FLAG; 0 = INSERT NEW NUMBERS1254 8A6B 9E D3 LDX VD3 GET ADDRESS OF OLD LINE NUMBER BEING RENUMBERED1255 8A6D DC D5 LDD VD5 GET THE CURRENT RENUMBERED LINE NUMBER1256 8A6F 8D 15 BSR L8A86 RETURN IF END OF PROGRAM1257 8A71 0D D8 L8A71 TST VD8 CHECK NEW LINE NUMBER FLAG1258 8A73 26 02 BNE L8A77 BRANCH IF NOT INSERTING NEW LINE NUMBERS1259 8A75 ED 02 STD $02,X STORE THE NEW LINE NUMBER IN THE BASIC PROGRAM1260 8A77 AE 84 L8A77 LDX ,X POINT X TO THE NEXT LINE IN BASIC1261 8A79 8D 0B BSR L8A86 RETURN IF END OF PROGRAM1262 8A7B D3 CF ADDD VCF ADD INTERVAL TO CURRENT RENUMBERED LINE NUMBER1263 8A7D 25 04 BLO L8A83 ‘FC’ ERROR IF LINE NUMBER > $FFFF1264 8A7F 81 FA CMPA #MAXLIN LARGEST LINE NUMBER = $F9FF1265 8A81 25 EE BLO L8A71 BRANCH IF LEGAL LINE NUMBER1266 8A83 7E B4 4A L8A83 JMP LB44A ‘FC’ ERROR IF LINE NUMBER MS BYTE > $F91267 * TEST THE TWO BYTES POINTED TO BY (X).1268 * NORMAL RETURN IF 0. IF = 0 (END OF1269 * PROGRAM) RETURN IS PULLED OFF STACK AND1270 * YOU RETURN TO PREVIOUS SUBROUTINE CALL.1271 8A86 34 06 L8A86 PSHS B,A SAVE ACCD1272 8A88 EC 84 LDD ,X TEST THE 2 BYTES POINTED TO BY X1273 8A8A 35 06 PULS A,B RESTORE ACCD1274 8A8C 26 02 BNE L8A90 BRANCH IF NOT END OF PROGRAM1275 8A8E 32 62 LEAS $02,S PURGE RETURN ADDRESS FROM STACK1276 8A90 39 L8A90 RTS1277 8A91 9E 19 L8A91 LDX TXTTAB GET START OF BASIC PROGRAM1278 8A93 30 1F LEAX $-01,X MOVE POINTER BACK ONE1279 8A95 30 01 L8A95 LEAX $01,X MOVE POINTER UP ONE1280 8A97 8D ED BSR L8A86 RETURN IF END OF PROGRAM1281 8A99 30 03 L8A99 LEAX $03,X SKIP OVER NEXT LINE ADDRESS AND LINE NUMBER1282 8A9B 30 01 L8A9B LEAX $01,X MOVE POINTER TO NEXT CHARACTER1283 8A9D A6 84 LDA ,X CHECK CURRENT CHARACTER1284 8A9F 27 F4 BEQ L8A95 BRANCH IF END OF LINE1285 8AA1 9F 0F STX TEMPTR SAVE CURRENT POINTER1286 8AA3 4A DECA =1287 8AA4 27 0C BEQ L8AB2 =BRANCH IF START OF PACKED NUMERIC LINE1288 8AA6 4A DECA *1289 8AA7 27 2A BEQ L8AD3 *BRANCH IF LINE NUMBER EXISTS1290 8AA9 4A DECA =1291 8AAA 26 EF BNE L8A9B =MOVE TO NEXT CHARACTER IF > 31292 8AAC 86 03 L8AAC LDA #$03 * SET 1ST BYTE = 3 TO INDICATE LINE1293 8AAE A7 80 STA ,X+ * NUMBER DOESN’T CURRENTLY EXIST1294 8AB0 20 E7 BRA L8A99 GO GET ANOTHER CHARACTER1295 8AB2 EC 01 L8AB2 LDD $01,X GET MS BYTE OF LINE NUMBER1296 8AB4 6A 02 DEC $02,X DECREMENT ZERO CHECK BYTE1297 8AB6 27 01 BEQ L8AB9 BRANCH IF MS BYTE 01298 8AB8 4F CLRA CLEAR MS BYTE1299 8AB9 E6 03 L8AB9 LDB $03,X GET LS BYTE OF LINE NUMBER1300 8ABB 6A 04 DEC $04,X DECREMENT ZERO CHECK FLAG1301 8ABD 27 01 BEQ L8AC0 BRANCH IF IS BYTE 01302 8ABF 5F CLRB CLEAR LS BYTE1303 8AC0 ED 01 L8AC0 STD $01,X SAVE BINARY LINE NUMBER1304 8AC2 DD 2B STD BINVAL SAVE TRIAL LINE NUMBER1305 8AC4 BD AD 01 JSR LAD01 FIND RAM ADDRESS OF A BASIC LINE NUMBER1306 8AC7 9E 0F L8AC7 LDX TEMPTR GET BACK POINTER TO START OF PACKED LINE NUMBER1307 8AC9 25 E1 BLO L8AAC BRANCH IF NO LINE NUMBER MATCH FOUND1308 8ACB DC 47 LDD V47 GET START ADDRESS OF LINE NUMBER1309 8ACD 6C 80 INC ,X+ * SET 1ST BYTE = 2, TO INDICATE LINE NUMBER EXISTS IF CHECKING FOR1310 * * EXISTENCE OF LINE NUMBER, SET IT = 1 IF INSERTING LINE NUMBERS13111312 8ACF ED 84 STD ,X SAVE RAM ADDRESS OF CORRECT LINE NUMBER1313 8AD1 20 C6 BRA L8A99 GO GET ANOTHER CHARACTER1314 8AD3 6F 84 L8AD3 CLR ,X CLEAR CARRY FLAG AND 1ST BYTE1315 8AD5 AE 01 LDX $01,X POINT X TO RAM ADDRESS OF CORRECT LINE NUMBER1316 8AD7 AE 02 LDX $02,X PUT CORRECT LINE NUMBER INTO (X)1317 8AD9 9F 47 STX V47 SAVE IT TEMPORARILY1318 8ADB 20 EA BRA L8AC7 GO INSERT IT INTO BASIC LINE1319 8ADD 9E 19 L8ADD LDX TXTTAB GET BEGINNING OF BASIC PROGRAM1320 8ADF 20 04 BRA L8AE51321 8AE1 9E A6 L8AE1 LDX CHARAD *GET CURRENT INPUT POINTER1322 8AE3 30 01 LEAX $01,X *AND BUMP IT ONE1323 8AE5 8D 9F L8AE5 BSR L8A86 RETURN IF END OF PROGRAM1324 8AE7 30 02 LEAX $02,X SKIP PAST NEXT LINE ADDRESS1325 8AE9 30 01 L8AE9 LEAX $01,X ADVANCE POINTER BY ONE1326 8AEB 9F A6 L8AEB STX CHARAD SAVE NEW BASIC INPUT POINTER1327 8AED 9D 9F L8AED JSR GETNCH GET NEXT CHARACTER FROM BASIC1328 8AEF 4D L8AEF TSTA CHECK THE CHARACTER1329 8AF0 27 EF BEQ L8AE1 BRANCH IF END OF LINE1330 8AF2 2A F9 BPL L8AED BRANCH IF NOT A TOKEN1331 8AF4 9E A6 LDX CHARAD GET CURRENT INPUT POINTER1332 8AF6 81 FF CMPA #$FF IS THIS A SECONDARY TOKEN?1333 8AF8 27 EF BEQ L8AE9 YES - IGNORE IT1334 8AFA BD 01 A0 JSR RVEC22 HOOK INTO RAM AND CHECK FOR USER ADDED TOKENS1335 8AFD 81 A7 CMPA #$A7 TOKEN FOR THEN?1336 8AFF 27 12 BEQ L8B13 YES1337 8B01 81 84 CMPA #$84 TOKEN FOR ELSE?1338 8B03 27 0E BEQ L8B13 YES1339 8B05 81 81 CMPA #$81 TOKEN FOR GO?1340 8B07 26 E4 BNE L8AED NO1341 8B09 9D 9F JSR GETNCH GET A CHARACTER FROM BASIC1342 8B0B 81 A5 CMPA #$A5 TOKEN FOR TO?1343 8B0D 27 04 BEQ L8B13 YES1344 8B0F 81 A6 CMPA #$A6 TOKEN FOR SUB?B14

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

Saved successfully!

Ooh no, something went wrong!