Download super-extended-basic..
Transcript
APPENDIX B DISASSEMBLY OF SUPER EXTENDED BASIC 1.1 SUPER EXTENDED BASIC UNRAVELLED II 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 EFDE EFDF EFE0 EFE1 EFE2 EFE3 EFE5 EFE9 EFEC EFEE EFF0 EFF2 EFF4 EFF7 EFF9 EFFC EFFE F001 58 58 49 58 49 A6 AD 7A 2E 35 0A 27 B7 33 BD 20 BD 39 F002 F004 F006 F008 F0 F0 F0 F0 1A 45 0A 1A F00A F00C F00D F00F F011 F013 F015 F017 F019 34 43 A4 A7 35 94 AA A7 39 02 F01A F01C F020 F022 F023 F024 F025 F026 F028 F02B F02D F02F F032 F034 34 10 1F 44 44 44 44 A6 BD C4 A6 BD 35 39 20 8E F0 35 89 CB 9F FE ED 32 D3 0A FE 41 EA DB E0 00 D1 18 18 45 FF LEFFE LF001 * TABLE LF002 LF004 LF006 LF008 ALSB ALSB ROLA ALSB ROLA LDA JSR DEC BGT PULS DEC BEQ STA LEAU JSR BRA JSR RTS 84 84 02 B5 84 80 MULTIPLY ACCD BY 8 - 8 BYTES PER CHARACTER GET THE FIRST BYTE OF THE GRAPHIC CHARACTER FROM THE 'ROM' PUT THE BYTE ON THE HI-RES SCREEN DECREMENT CHARACTER COUNT KEEP GOING UNTIL ALL CHARACTERS DONE RESTORE THE PRINT BUFFER POINTER, 'ROM' POINTER & CHAR COUNT BUMP THE ROW COUNTER DOWN ONE BRANCH IF ALL ROWS DONE RESET THE CHARACTER COUNT ADJUST THE 'ROM' POINTER DOWN ONE ROW MOVE X DONW ONE HI-RES ROW KEEP LOOPING UNTIL THE WHOLE ROW IS DONE MAKE TASK REGISTER 0 ACTIVE D,U [VD1] H.PCOUNT LEFDB A,X,Y VD3 LEFFE H.PCOUNT $01,U LEA45 LEFD9 SELTASK0 OF ADDRESSES OF HI-RES PRINT DRIVERS FDB LF01A FDB LF045 FDB LF00A FDB LF01A * MODE 3 PRINT LF00A PSHS COMA ANDA STA PULS ANDA ORA STA RTS DRIVER A 34 10 44 44 44 44 48 EC BD 1F BD 35 84 48 EC BD 1F BD 35 39 22 8E F0 6C F06C F072 F078 F07E F084 F08A 00 00 0F F0 FF FF 00 FF F0 0F 00 FF F08C F08E F08F F090 F091 F092 F093 DC BD 58 58 49 58 49 DD BD * MODE 2 PRINT LF045 PSHS LDY LSRA LSRA LSRA LSRA ALSA LDD JSR TFR JSR PULS ANDA ALSA LDD JSR TFR JSR PULS RTS A6 F0 0A 98 F0 0A 02 0F A6 F0 0A 98 F0 0A 20 00 0F 0F F0 FF 0F 00 FF F0 0F 00 0F F0 F0 FF 1 2 3 4 SAVE THE PRINT BUFFER POINTER POINT TO THE TABLE OF 4 COLOR PIXEL MASKS COPY CHARACTER DATA TO ACCB SHIFT THE HIGH ORDER NIBBLE TO THE LOW ORDER NIBBLE GET THE PIXEL MASK FOR THE HIGH NIBBLE DISPLAY THE HIGH ORDER NIBBLE DATA ON THE SCREEN MASK OFF THE HIGH ORDER NIBBLE GET THE PIXEL MASK FOR THE LOW NIBBLE DISPLAY THE LOW ORDER NIBBLE DATA ON THE SCREEN RESTORE THE PRINT BUFFER POINTER * FOUR COLOR PIXEL MASKS F035 00 03 0C 0F 30 33 LF035 FCB $00,$03,$0C,$0F,$30,$33 F03B 3C 3F C0 C3 CC CF FCB $3C,$3F,$C0,$C3,$CC,$CF F041 F0 F3 FC FF FCB $F0,$F3,$FC,$FF F045 F047 F04B F04C F04D F04E F04F F050 F052 F055 F057 F05A F05C F05E F05F F061 F064 F066 F069 F06B MODE MODE MODE MODE SAVE THE CHARACTER MASK INVERT THE MASK 'AMD' IT WITH THE SCREEN DATA - CREATE A HOLE FOR THE CHARACTER DATA AND THEN PUT IT BACK ON THE SCREEN GET THE CHARACTER MASK BACK 'AND' IT WITH THE PIXEL COLOR BYTE - 'COLOR' THE DATA 'OR' IT WITH THE SCREEN DATA - FILL THE 'HOLE' CREATED ABOVE WITH THE 'COLORED' CHARACTER DATA AND PUT THE DATA ON THE SCREEN ,X ,X A ALLCOL ,X ,X+ * MODES 1,4 PRINT DRIVER LF01A PSHS Y LDY #LF035 TFR A,B LSRA LSRA LSRA LSRA LDA A,Y JSR LF00A ANDB #$0F LDA B,Y JSR LF00A PULS Y RTS A6 F0 0A 0F A5 F0 0A 20 ORIGIN:SPECTRAL ASSOC REVISED:12/26/1999 WALTER K ZYDHEK 4 COLOR PIXEL MASKS DRIVER Y,A #LF06C SAVE THE PRINT BUFFER POINTER AND THE CHARACTER DATA POINT TO THE TABLE OF 16 COLOR MASKS SHIFT THE HIGH ORDER PIXEL TO BITS 0-3 MULTIPLY BY 2, THERE ARE 2 BYTES PER TABLE ENTRY GET THE FIRST FOUR PIXEL MASKS FROM THE TABLE DISPLAY THE FIRST TWO PIXELS PUT THE NEXT TWO PIXELS' DATA INTO ACCA DISPLAY THE NEXT TWO PIXELS GET THE CHARACTER DATA BACK MASK OFF THE HIGH NIBBLE MULTIPLY BY 2, THERE ARE 2 BYTES PER TABLE ENTRY GET THE LAST FOUR PIXEL MASKS FROM THE TABLE DISPLAY THE NEXT TWO PIXELS PUT THE NEXT TWO PIXELS' DATA INTO ACCA DISPLAY THE LAST TWO PIXELS RESTORE THE PRINT BUFFER POINTER WASTED; THIS AND ABOVE INSTRUCTION SHOULD BE PULS Y,PC A,Y LF00A B,A LF00A A #$0F A,Y LF00A B,A LF00A Y * 16 COLOR PIXEL MASKS - DOUBLE BYTE WIDE F0 LF06C FDB $0000,$000F,$00F0 0F FDB $00FF,$0F00,$0F0F 00 FDB $0FF0,$0FFF,$F000 FF FDB $F00F,$F0F0,$F0FF F0 FDB $FF00,$FF0F,$FFF0 FDB $FFFF * CONVERT THE PRINT POSITION FROM CHARACTER ROWS AND COLUMNS TO PIXEL ROWS * AND COLUMNS; EACH CHARACTER IS 8 PIXELS WIDE AND 8 PIXELS DEEP. LF08C LDD HORBEG GET THE PRINT COLUMN POSITION ALSB ALSB ROLA ALSB ROLA SHIFT ACCD LEFT THREE TIMES; MULTIPLY COLUMN POSITION BY EIGHT STD HORBEG SAVE NEW COLUMN POSITION IN TERMS OF PIXELS (8 PIXELS/CHARACTER) B28