10.07.2015 Views

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

EXTENDED BASIC UNRAVELLED IIAPPENDIX BDISASSEMBLY OF EXTENDED BASIC 1.1ORIGIN:SPECTRAL ASSOCREVISED:12/26/1999 WALTER K ZYDHEK0289 82C6 27 07 BEQ L82CF BRANCH IF END OF LINE0290 82C8 81 3A CMPA #':' CHECK FOR COLON0291 82CA 27 25 BEQ L82F1 CONTINUE INTERPRETING IF COLON0292 82CC 7E B2 77 JMP LB277 SNYTAX ERROR - COLON ONLY LEGAL LINE SEPARATOR0293 82CF A6 81 L82CF LDA ,X++ * GET 1ST BYTE OF ADDRESS OF NEXT0294 82D1 97 00 STA ENDFLG * BASIC LINE AND SAVE IT0295 82D3 26 03 BNE L82D8 BRANCH IF NOT END OF PROGRAM0296 82D5 7E AE 15 JMP LAE15 RETURN TO DIRECT MODE - PRINT OK0297 82D8 EC 80 L82D8 LDD ,X+ GET LINE NUMBER OF NEXT LINE0298 82DA DD 68 STD CURLIN SAVE LINE NUMBER0299 82DC 9F A6 STX CHARAD SAVE ADDRESS NEXT BYTE TO INTERPRET0300 82DE 96 AF LDA TRCFLG TEST THE TRACE FLAG0301 82E0 27 0F BEQ L82F1 BRANCH IF TRACE OFF0302 82E2 86 5B LDA #$5B RIGHT HAND MARKER FOR TRON LINE NUMBER0307 82EE BD A2 82 JSR LA282 OUTPUT A CHARACTER0308 82F1 9D 9F L82F1 JSR GETNCH GET A CHARACTER FROM BASIC0309 82F3 1F A9 TFR CC,B SAVE STATUS IN ACCB0310 82F5 81 98 CMPA #$98 CSAVE TOKEN0311 82F7 27 1D BEQ L8316 GO DO A CSAVE0312 82F9 81 97 CMPA #$97 CLOAD TOKEN0313 82FB 27 14 BEQ L8311 PROCESS CLOAD0314 82FD 1F 9A TFR B,CC GET STATUS REG BACK0315 82FF BD AD C6 JSR LADC6 LINK BACK TO BASIC’S INTERPRETATION LOOP0316 8302 20 B7 BRA L82BB GO TO MAIN INTERPRETATION LOOP0317 * CRUNCH RAM HOOK0318 8304 AE 62 XVEC23 LDX $02,S *CHECK TO SEE IF THE ROUTINE CALLING ‘CRUNCH’0319 8306 8C AC 9D CMPX #LAC9D *IS COMING FROM THE MAIN LOOP IN BASIC0320 8309 26 05 BNE L8310 *AND BRANCH IF NOT0321 830B 8E 82 F1 LDX #L82F1 =IF IT IS, DO NOT RETURN TO COLOR BASIC0322 830E AF 62 STX $02,S =BUT TO THE EXBAS PATCH INSTEAD0323 8310 39 L8310 RTS0324 8311 BD 8C 62 L8311 JSR L8C62 CHECK EXBAS CLOAD HANDLER0325 8314 20 A5 BRA L82BB GO TO MAIN INTERPRETATION LOOP0326 8316 8D 02 L8316 BSR L831A DO A CSAVE0327 8318 20 A1 BRA L82BB GO TO MAIN INTERPRETATION LOOP0328 831A 9D 9F L831A JSR GETNCH GET A CHAR FROM BASIC0329 831C 81 4D CMPA #'M' CHECK FOR CSAVEM0330 831E 10 26 21 2A LBNE LA44C BRANCH IF IT’S NOT CSAVEM0331 * CSAVEM0332 8322 9D 9F JSR GETNCH GET A CHAR FROM BASIC0333 8324 BD A5 78 JSR LA578 GET NAME OF FILE FROM BASIC0334 8327 8D 43 BSR L836C GO GET THE START ADDRESS0335 8329 BF 01 E7 STX CASBUF+13 PUT IT IN HEADER BUFFER0336 832C 8D 3E BSR L836C GO GET END ADDRESS0337 832E AC 62 CMPX $02,S COMPARE TO START ADDRESS0338 8330 10 25 31 16 LBCS LB44A ‘FC’ ERROR IF START > END0339 8334 8D 36 BSR L836C GO GET XFER ADDRESS0340 8336 BF 01 E5 STX CASBUF+11 PUT IT IN HEADER BUFFER0341 8339 9D A5 JSR GETCCH GET NEW CHARACTER0342 833B 26 D3 BNE L8310 RETURN IF NOT END OF LINE0343 833D 86 02 LDA #$02 FILE TYPE (MACHINE LANGUAGE)0344 833F 9E 8A LDX ZERO X = 0000 FILE MODE AND ASCII FLAG0345 8341 BD A6 5F JSR LA65F WRITE HEADER BLOCK0346 8344 0F 78 CLR FILSTA CLOSE CASSETTE FILES0347 8346 0C 7C INC BLKTYP BLOCK TYPE = 10348 8348 BD A7 D8 JSR LA7D8 GO WRITE LEADER0349 834B AE 64 LDX $04,S GET STARTING ADDRESS0350 834D 9F 7E L834D STX CBUFAD STORE BUFFER START ADOR0351 834F 86 FF LDA #255 BLOCK SIZE = 2SS0352 8351 97 7D STA BLKLEN STORE IN BLOCK SIZE0353 8353 EC 62 LDD $02,S GET ENDING ADDRESS0354 8355 93 7E SUBD CBUFAD SUBTRACT START ADDRESS0355 8357 24 05 BCC L835E BRANCH IF MORE TO BE WRITTEN0356 8359 32 66 LEAS $06,S CLEAN UP STACK0357 835B 7E A4 91 JMP LA491 WRITE FINAL BLOCK0358 835E 10 83 00 FF L835E CMPD #$00FF AT LEAST 1 FULL BLK LEFT?0359 8362 24 03 BCC L8367 YES0360 8364 5C INCB NO - PUT WHAT’S LEFT IN BLKLEN0361 8365 D7 7D STB BLKLEN BUFFER SIZE0362 8367 BD A7 F4 L8367 JSR LA7F4 WRITE A BLOCK0363 836A 20 E1 BRA L834D GO DO SOME MORE0364 836C BD B2 6D L836C JSR SYNCOMMA SYNTAX CHECK FOR COMMA0365 836F BD B7 3D JSR LB73D EVAL EXPR - RETURN VALUE IN X0366 8372 EE E4 LDU ,S SAVE RETURN ADDRESS IN U0367 8374 AF E4 STX ,S PUT THE EXPRESSION ON THE STACK0368 8376 1F 35 TFR U,PC ‘RETURN’ TO CALLING ADDRESS03690370 * COS0371 * THE VALUE OF COS(X) IS DETERMINED BY THE TRIG IDENTITY COS(X)=SIN((PI/2)+X)0372 8378 8E 83 AB COS LDX #L83AB POINT X TO FP CONSTANT (P1/2)0373 837B BD B9 C2 JSR LB9C2 ADD FPA0 TO (X)0374 837E 7E BF 78 L837E JMP LBF78 JUMP TO SIN ROUTINE03750376 * TAN0377 * THE VALUE OF TAN(X) IS DETERMINED BY THE TRIG IDENTITY TAN(X)=SIN(X)/COS(X)0378 8381 BD BC 2F TAN JSR LBC2F PACK FPA0 AND MOVE IT TO FPA30379 8384 0F 0A CLR RELFLG RESET QUADRANT FLAG0380 8386 8D F6 BSR L837E CALCULATE SIN OF ARGUMENT0381 8388 8E 00 4A LDX #V4A POINT X TO FPA50382 838B BD BC 35 JSR LBC35 PACK FPA0 AND MOVE IT TO FPA50383 838E 8E 00 40 LDX #V40 POINT X TO FPA30384 8391 BD BC 14 JSR LBC14 MOVE FPA3 TO FPA0B4

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

Saved successfully!

Ooh no, something went wrong!