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 ZYDHEK3169 9774 33 CB LEAU D,U POINT U TO END OF ARRAY3170 9776 DF D1 STU VD1 SAVE END OF DATA (END OF ARRAY)3171 9778 30 02 LEAX $02,X POINT X TO NUMBER OF DIMENSIONS AND3172 977A E6 84 LDB ,X GET NUMBER DIMENSIONS IN ACCB3173 977C 58 ASLB TIMES 2 - 2 BYTES/DIMENSION3174 977D 3A ABX POINT X TO START OF ARRAY DATA3175 977E 9F CF STX VCF SAVE START OF DATA (START OF ARRAY DATA)3176 9780 96 06 LDA VALTYP CHECK VARIABLE TYPE3177 9782 26 CE BNE L9752 ‘FC’ ERROR IF STRING VARIABLE3178 9784 0F D4 CLR VD4 GET/PUT GRAPHIC/ACTION FLAG3179 9786 9D A5 JSR GETCCH GET CURRENT INPUT CHAR3180 9788 27 2D BEQ L97B7 BRANCH IF END OF LINE3181 978A 03 D4 COM VD4 TOGGLE GET/PUT GRAPHIC/ACTION FLAG3182 978C BD B2 6D JSR SYNCOMMA SYNTAX CHECK FOR COMMA3183 978F 0D D8 TST VD8 CHECK GET/PUT FLAG3184 9791 26 07 BNE L979A BRANCH IF PUT3185 9793 C6 47 LDB #'G' CHECK FOR FULL GRAPHIC OPTION3186 9795 BD B2 6F JSR LB26F DO A SYNTAX CHECK FOR A ‘G’3187 9798 20 30 BRA L97CA SKIP AROUND THE ‘NO G’ OPTION CODE3188 979A C6 05 L979A LDB #$05 FIVE LEGAL TOKENS AT END OF PUT3189 979C 8E 98 39 LDX #L9839 POINT X TO LOOK UP TABLE3190 979F EE 81 L979F LDU ,X++ GET ‘CLEAR BIT’ ACTION ROUTINE ADDRESS3191 97A1 10 AE 81 LDY ,X++ GET “SET BIT’ ACTION ROUTINE ADDRESS3192 97A4 A1 80 CMPA ,X+ CHECK FOR ONE OF THE FIVE LEGAL TOKENS3193 97A6 27 06 BEQ L97AE FOUND ONE3194 97A8 5A DECB CHECKED ALL FIVE?3195 97A9 26 F4 BNE L979F NO - KEEP GOING3196 97AB 7E B2 77 JMP LB277 ‘SYNTAX’ ERROR IF TOKEN NOT FOUND3197 97AE 10 9F D5 L97AE STY VD5 ARRAY ‘SET BIT’ ACTION ROUTINE ADDRESS3198 97B1 DF D9 STU VD9 ARRAY ‘CLEAR BIT’ ACTION ROUTINE ADDRESS3199 97B3 9D 9F JSR GETNCH GET INPUT CHAR FROM BASIC3200 97B5 20 13 BRA L97CA SKIP AROUND THE ‘NO G’ OPTION CODE32013202 * NO ‘G’ OPTION OR ACTION SPECIFIED BY BASIC INPUT LINE3203 97B7 C6 F8 L97B7 LDB #$F8 BOTTOM 3 BITS MASK (8 PIXELS/BYTE)3204 97B9 96 B6 LDA PMODE GET CURRENT PMODE3205 97BB 46 RORA BIT 0 TO CARRY3206 97BC 24 02 BCC L97C0 BRANCH IF PMODE 0,2,4 (2 COLOR)3207 97BE C6 FC LDB #$FC BOTTOM 2 BITS MASK (4 COLOR MODE - 4 PIXELS/BYTE)3208 97C0 1F 98 L97C0 TFR B,A SAVE ACCB IN ACCA3209 97C2 D4 BE ANDB HORBEG+1 *3210 97C4 D7 BE STB HORBEG+1 * MASK THE PIXEL COUNTER (BITS 0,1=3211 97C6 94 C4 ANDA HOREND+1 * 4 COLOR, BITS 0-2=2 COLOR) BITS OFF3212 97C8 97 C4 STA HOREND+1 * THE HORIZONTAL DIFFERENCE3213 97CA BD 97 1D L97CA JSR L971D CALC HORIZ DIFFERENCE ABS(HOREND-HORBEG)3214 97CD 24 04 BCC L97D3 BRANCH IF END > START3215 97CF 9E C3 LDX HOREND * MAKE START = END IF3216 97D1 9F BD STX HORBEG * START > END3217 97D3 DD C3 L97D3 STD HOREND SAVE HORIZ DIFFERENCE3218 97D5 BD 97 10 JSR L9710 CALC VERT DIFFERENCE ABS (VEREND-VERBEG)3219 97D8 24 04 BCC L97DE BRANCH IF END > START3220 97DA 9E C5 LDX VEREND * MAKE START = END IF3221 97DC 9F BF STX VERBEG * START > END3222 97DE DD C5 L97DE STD VEREND SAVE VERT DIFFERENCE3223 97E0 96 B6 LDA PMODE * GET PMODE BIT 03224 97E2 46 RORA * TO THE CARRY FLAG3225 97E3 DC C3 LDD HOREND GET HORIZ DIFFERENCE3226 97E5 24 04 BCC L97EB BRANCH IF PMODE = 0,2,4(2 COLOR)3227 97E7 D3 C3 ADDD HOREND * DOUBLE HORIZ DIFF - 2X AS MANY BYTES FOR3228 97E9 DD C3 STD HOREND * NUMBER OF PIXELS IN PMODES 1,33229 97EB BD 94 20 L97EB JSR L9420 NORMALIZE DIFFERENCES3230 97EE DC C3 LDD HOREND GET HORIZ DIFFERENCE3231 97F0 9E C5 LDX VEREND *3232 97F2 30 01 LEAX $01,X *3233 97F4 9F C5 STX VEREND * ADD 1 TO VERT DIFFERENCE3234 97F6 0D D4 TST VD4 = CHECK FOR ‘G’ OPTION OR GET ACTION3235 97F8 26 58 BNE L9852 = AND BRANCH IF GIVEN3236 97FA 44 LSRA *3237 97FB 56 RORB *3238 97FC 44 LSRA *3239 97FD 56 RORB *3240 97FE 44 LSRA *3241 97FF 56 RORB * DIVIDE HORIZONTAL DIFFERENCE BY 83242 9800 C3 00 01 ADDD #1 ADD ONE TO QUOTIENT3243 9803 DD C3 STD HOREND SAVE NEW HOR DIFFERENCE3244 9805 BD 92 98 JSR L9298 *CONVERT (HORBEG,VERSEG) INTO ABSOLUTE SCREEN3245 *POS (X) AND PIXEL MASK (ACCA)3246 9808 D6 C4 L9808 LDB HOREND+1 GET HORIZ DIFFERENCE3247 980A 34 10 PSHS X SAVE SCREEN POSITION3248 980C 0D D8 L980C TST VD8 CHECK THE GET/PUT FLAG3249 980E 27 21 BEQ L9831 BRANCH IF ‘GET’3250 9810 8D 11 BSR L9823 INCREMENT ARRAY DATA POINTER3251 9812 A6 C4 LDA ,U GET DATA FROM ARRAY3252 9814 A7 80 STA ,X+ PUT IT ON THE SCREEN3253 9816 5A L9816 DECB DECREMENT HORIZ DIFFERENCE3254 9817 26 F3 BNE L980C BRANCH IF NOT AT END OF HORIZ LINE3255 9819 35 10 PULS X GET SCREEN POSITION BACK3256 981B BD 92 E9 JSR L92E9 MOVE ABS POSITION DOWN ONE ROW3257 981E 0A C6 DEC VEREND+1 DECREMENT VERTICAL DIFFERENCE3258 9820 26 E6 BNE L9808 BRANCH IF NOT DONE3259 9822 39 L9822 RTS32603261 9823 DE CF L9823 LDU VCF *3262 9825 33 41 LEAU $01,U *3263 9827 DF CF STU VCF * ADD ONE TO CURRENT ARRAY DATA POINTER3264 9829 11 93 D1 CMPU VD1 COMPARE TO END OF DATAB34

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

Saved successfully!

Ooh no, something went wrong!