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