+-------------------------------+ | | | PRODRAW Disassembly | | By Craig Bower - 31 Jan 09 | | | +-------------------------------+ ]LOAD STARTUP ]LIST 100 PRINT CHR$ (21): CALL 12136 110 POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0: POKE 34,20: POKE 29713,104: POKE 29717,38: POKE 29719,250: CALL 29696: POKE 29732,24 120 POKE 29713,108: POKE 29717,250: POKE 29719,38: CALL 29696: POKE 29732,20 130 POKE 49168,0 140 IF PEEK (49152) < 128 THEN 140 150 POKE 49168,0:FL = 1 160 POKE 29713,104: POKE 29717,250: POKE 29719,38: CALL 29696: POKE 29713,108: POKE 29717,38: POKE 29719,250 170 HOME 180 IF FL = 1 THEN FL = 0: GOTO 230 190 GOSUB 200: GOTO 230 200 CALL 31615 210 IF A$ = CHR$ (21) THEN FL = 0: GOTO 2070 220 RETURN 230 CLEAR : VTAB 21: HTAB 35: PRINT "?-Help"; 240 X = 20:Y = 20:C = 15:S = 0:M = 0 250 DIM C$(15): GOSUB 770 260 GOSUB 310 270 GOSUB 720: GOSUB 740: GOSUB 370 280 GOTO 270 290 GOSUB 370 300 GOTO 270 310 VTAB 21: HTAB 1: PRINT "X>";X;" Y>";Y;" "; 320 VTAB 21: HTAB 15: PRINT "Plot> "; 330 IF S = 1 THEN PRINT "On " 340 IF S = 0 THEN PRINT "Off " 350 VTAB 22: HTAB 14: PRINT "Color> ";C$(C);" "; 360 RETURN 370 IF PEEK ( - 16384) < 127 THEN RETURN 380 VTAB 22: HTAB 1: GET A$: POKE - 16368,0 390 IF A$ = "Q" THEN Y = Y - 1:X = X - 1: GOSUB 1690: GOSUB 310: RETURN 400 IF A$ = "W" THEN Y = Y - 1: GOSUB 1690: GOSUB 310: RETURN 410 IF A$ = "E" THEN X = X + 1:Y = Y - 1: GOSUB 1690: GOSUB 310: RETURN 420 IF A$ = "A" THEN X = X - 1: GOSUB 1690: GOSUB 310: RETURN 430 IF A$ = "D" THEN X = X + 1: GOSUB 1690: GOSUB 310: RETURN 440 IF A$ = "Z" THEN X = X - 1:Y = Y + 1: GOSUB 1690: GOSUB 310: RETURN 450 IF A$ = "X" THEN Y = Y + 1: GOSUB 1690: GOSUB 310: RETURN 460 IF A$ = "C" THEN Y = Y + 1:X = X + 1: GOSUB 1690: GOSUB 310: RETURN 470 IF A$ = "U" THEN GOSUB 1670 480 IF A$ = ">" THEN GOSUB 1940 490 IF A$ = "<" THEN GOSUB 1950 500 IF A$ = "Y" THEN VTAB 24: HTAB 1: PRINT "UNDO Checkpoint set";: GOSUB 1660: FOR A = 1 TO 350: NEXT A: VTAB 24: HTAB 1: PRINT SPC( 25); 510 IF A$ = "/" OR A$ = "?" THEN GOSUB 1630 520 IF A$ = "S" AND S = 0 THEN S = 1: GOTO 540 530 IF A$ = "S" AND S = 1 THEN S = 0 540 IF A$ = CHR$ (8) THEN C = C - 1: IF C < 0 THEN C = 15 550 IF A$ = CHR$ (21) THEN C = C + 1: IF C > 15 THEN C = 0 560 IF A$ = CHR$ (17) THEN GOSUB 800 570 IF A$ = "T" THEN GOSUB 1910 580 IF A$ = "O" THEN GOSUB 1740 590 IF A$ = "P" THEN GOSUB 1430 600 IF A$ = "I" THEN GOSUB 1660: CALL 29736 610 IF A$ = "N" THEN GOSUB 940 620 IF A$ = CHR$ (6) THEN GOSUB 1090 630 IF A$ = "#" THEN GOSUB 2430 640 IF A$ = "B" AND S = 1 THEN COLOR= C: HLIN 0,39 AT 0: HLIN 0,39 AT 39: VLIN 0,39 AT 39: VLIN 0,39 AT 0 650 IF A$ = "$" THEN GOSUB 2490 660 IF A$ = "G" AND S = 1 THEN POKE 254,C: CALL 29768 670 IF A$ = "+" THEN CALL 29794 680 IF A$ = "H" THEN CALL 31311 690 IF A$ = "J" THEN CALL 31367 700 IF A$ = "@" THEN GOSUB 1990 710 GOSUB 310: RETURN 720 A = SCRN( X,Y): COLOR= 15 - A: PLOT X,Y 730 RETURN 740 COLOR= A: PLOT X,Y 750 IF S = 1 THEN COLOR= C: PLOT X,Y 760 RETURN 770 C$(0) = "Black":C$(1) = "Magenta":C$(2) = "Dk Blue":C$(3) = "Purple":C$(4) = "Dk Green":C$(5) = "Grey":C$(6) = "Med Blue":C$(7) = "Lt Blue":C$(8) = "Brown":C$(9) = "Orange":C$(10) = "Grey 2":C$(11) = "Pink":C$(12) = "Lt Green":C$(13) = "Yellow":C$(14) = "Aqua" 780 C$(15) = "White" 790 RETURN 800 VTAB 24: HTAB 1: PRINT "Quit? "; 810 IF FL = 1 THEN INVERSE : PRINT "YES";: NORMAL : PRINT " NO"; 820 IF FL = 0 THEN NORMAL : PRINT "YES ";: INVERSE : PRINT "NO";: NORMAL 830 POKE - 16368,0 840 IF PEEK ( - 16384) < 127 THEN 840 850 GET A$: IF A$ < > CHR$ (8) AND A$ < > CHR$ (21) AND A$ < > CHR$ (13) AND A$ < > CHR$ (27) THEN 830 860 IF FL = 1 AND A$ = CHR$ (13) THEN HOME : END 870 IF A$ = CHR$ (21) THEN FL = 0 880 IF A$ = CHR$ (8) THEN FL = 1 890 IF A$ = CHR$ (13) AND FL = 0 THEN 920 900 IF A$ = CHR$ (27) THEN 920 910 GOTO 800 920 VTAB 24: HTAB 1: PRINT " "; 930 RETURN 940 VTAB 24: HTAB 1: PRINT "New Drawing? "; 950 GOSUB 1660: REM ** SAVE UNDO SNAPSHOP 960 IF FL = 1 THEN INVERSE : PRINT "YES";: NORMAL : PRINT " NO"; 970 IF FL = 0 THEN NORMAL : PRINT "YES ";: INVERSE : PRINT "NO";: NORMAL 980 POKE - 16368,0 990 IF PEEK ( - 16384) < 127 THEN 990 1000 GET A$: IF A$ < > CHR$ (8) AND A$ < > CHR$ (21) AND A$ < > CHR$ (13) AND A$ < > CHR$ (27) THEN 980 1010 IF A$ = CHR$ (13) AND FL = 1 THEN GOSUB 200: HOME : CALL 31785: VTAB 21: HTAB 35: PRINT "?-Help";: GOTO 1070 1020 IF A$ = CHR$ (21) THEN FL = 0 1030 IF A$ = CHR$ (8) THEN FL = 1 1040 IF A$ = CHR$ (13) AND FL = 0 THEN 1070 1050 IF A$ = CHR$ (27) THEN 1070 1060 GOTO 940 1070 VTAB 24: HTAB 1: PRINT " "; 1080 RETURN 1090 GOSUB 1660 1100 VTAB 24: HTAB 1: PRINT "File Ops: "; 1110 IF FL = 1 THEN INVERSE : PRINT "LOAD";: NORMAL : PRINT " SAVE"; 1120 IF FL = 0 THEN PRINT "LOAD ";: INVERSE : PRINT "SAVE";: NORMAL 1130 POKE - 16368,0 1140 IF PEEK ( - 16384) < 127 THEN 1140 1150 GET A$: IF A$ < > CHR$ (8) AND A$ < > CHR$ (21) AND A$ < > CHR$ (13) AND A$ < > CHR$ (27) THEN 1130 1160 IF FL = 1 AND A$ = CHR$ (13) THEN GOSUB 1240 1170 IF A$ = CHR$ (21) THEN FL = 0 1180 IF A$ = CHR$ (8) THEN FL = 1 1190 IF A$ = CHR$ (13) AND FL = 0 THEN GOSUB 1340 1200 IF A$ = CHR$ (27) THEN 1220 1210 GOTO 1100 1220 VTAB 24: HTAB 1: PRINT " "; 1230 RETURN 1240 VTAB 24: HTAB 1: PRINT " "; 1250 VTAB 23: HTAB 1: INPUT "Load Name:";A$ 1260 IF A$ = "" OR A$ = CHR$ (13) THEN CALL 29696: TEXT : HOME : PRINT : PRINT CHR$ (4);"CAT": PRINT : PRINT : GOTO 1250 1270 VTAB 1: HTAB 1: PRINT : PRINT : PRINT CHR$ (4);"BLOAD";A$;",A$4000" 1280 POKE 29732,24 1290 POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0: POKE 34,20: POKE 29713,60: POKE 29717,250: POKE 29719,38: CALL 29696: POKE 29713,108: POKE 29717,38: POKE 29719,250 1300 CALL 31785: POKE 29732,20 1310 HOME 1320 VTAB 21: HTAB 35: PRINT "?-Help"; 1330 POP : GOTO 1220 1340 VTAB 24: HTAB 1: PRINT " "; 1350 VTAB 23: HTAB 1: INPUT "Save Name:";A$ 1360 IF A$ = "" OR A$ = CHR$ (13) THEN GOSUB 1660: TEXT : HOME : PRINT : PRINT CHR$ (4);"CAT": PRINT : PRINT : GOTO 1350 1370 POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0: POKE 34,20: GOSUB 1670 1380 HOME : CALL 31725 1390 VTAB 1: HTAB 1: PRINT : PRINT : PRINT CHR$ (4);"BSAVE";A$;",A$400,L$3F8" 1400 HOME 1410 VTAB 21: HTAB 35: PRINT "?-Help"; 1420 POP : GOTO 1220 1430 O = C:R = 0 1440 GOSUB 1660 1450 VTAB 24: HTAB 1: PRINT "Replace [";C$(O);"] with ";C$(R);" ";: VTAB 21 1460 IF PEEK (49152) < 128 THEN 1460 1470 VTAB 21: HTAB 1: GET A$: IF A$ = CHR$ (8) THEN O = O - 1: IF O < 0 THEN O = 15: GOTO 1450 1480 IF A$ = CHR$ (21) THEN O = O + 1: IF O > 15 THEN O = 0: GOTO 1450 1490 IF A$ = CHR$ (13) THEN GOTO 1520 1500 IF A$ = CHR$ (27) THEN VTAB 24: HTAB 1: PRINT SPC( 37);: RETURN 1510 GOTO 1450 1520 VTAB 24: HTAB 1: PRINT "Replace ";C$(O);" with [";C$(R);"] ";: VTAB 21 1530 IF PEEK (49152) < 128 THEN 1530 1540 VTAB 21: HTAB 1: GET A$: IF A$ = CHR$ (8) THEN R = R - 1: IF R < 0 THEN R = 15: GOTO 1520 1550 IF A$ = CHR$ (27) THEN VTAB 24: HTAB 1: PRINT SPC( 37);: RETURN 1560 IF A$ = CHR$ (21) THEN R = R + 1: IF R > 15 THEN R = 0: GOTO 1520 1570 IF A$ = CHR$ (13) THEN GOTO 1590 1580 GOTO 1520 1590 VTAB 24: HTAB 1: PRINT "Replacing ";C$(O);" with ";C$(R);" ... ";: VTAB 21 1600 POKE 252,O: POKE 253,R: CALL 30976 1610 VTAB 24: HTAB 1: PRINT SPC( 35);: VTAB 21: COLOR= C 1620 RETURN 1630 CALL 29696: TEXT : CALL 29838: HOME 1640 POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0: POKE 34,20: CALL 29900: VTAB 21: HTAB 35: PRINT "?-Help"; 1650 RETURN 1660 CALL 29696: RETURN 1670 POKE 29717,250: POKE 29719,38: CALL 29696: POKE 29717,38: POKE 29719,250 1680 RETURN 1690 IF X > 39 THEN X = 0 1700 IF Y > 39 THEN Y = 0 1710 IF X < 0 THEN X = 39 1720 IF Y < 0 THEN Y = 39 1730 RETURN 1740 VTAB 24: HTAB 1: PRINT "Optimize Pos'n (Cursor move keys / ESC)"; 1750 VTAB 21: IF PEEK (49152) < 128 THEN 1750 1760 GET A$ 1770 IF A$ = "A" AND PEEK (49249) > 128 THEN FOR I = 1 TO 10: CALL 31064: NEXT I: GOTO 1750 1780 IF A$ = "A" THEN CALL 31064 1790 IF A$ = "D" AND PEEK (49249) > 128 THEN FOR I = 1 TO 10: CALL 31027: NEXT I: GOTO 1750 1800 IF A$ = "D" THEN CALL 31027 1810 IF A$ = "W" AND PEEK (49249) > 128 THEN FOR I = 1 TO 10: CALL 31103: NEXT I: GOTO 1750 1820 IF A$ = "W" THEN CALL 31103 1830 IF A$ = CHR$ (27) OR A$ = CHR$ (13) OR A$ = "O" THEN VTAB 24: HTAB 1: PRINT SPC( 39);: RETURN 1840 IF A$ = "X" AND PEEK (49249) > 128 THEN FOR I = 1 TO 10: CALL 31203: NEXT I: GOTO 1750 1850 IF A$ = "X" THEN CALL 31203 1860 IF A$ = "Q" THEN CALL 31103: CALL 31064 1870 IF A$ = "E" THEN CALL 31103: CALL 31027 1880 IF A$ = "Z" THEN CALL 31203: CALL 31064 1890 IF A$ = "C" THEN CALL 31203: CALL 31027 1900 GOTO 1750 1910 POKE 29713,104: POKE 29717,38: POKE 29719,250: CALL 29696: POKE 29713,108 1920 VTAB 24: HTAB 1: PRINT "Picture stored in merge buffer";: FOR I = 1 TO 350: NEXT I: VTAB 24: HTAB 1: PRINT SPC( 38); 1930 RETURN 1940 GOSUB 1660: CALL 31442: RETURN 1950 GOSUB 1660 1960 POKE 31513,254: POKE 31525,255: POKE 31537,252: POKE 31549,253: CALL 31442 1970 POKE 31513,252: POKE 31525,253: POKE 31537,254: POKE 31549,255 1980 RETURN 1990 CALL 29696 2000 TEXT : HOME : CALL 31755 2010 PRINT "Edit text under picture": PRINT : PRINT "Use arrow keys to locate cursor" 2020 PRINT : PRINT "Ctrl-I for inverse text": PRINT "Ctrl-F for flashing text": PRINT "Ctrl-N for normal text": PRINT "Ctrl-B to clear buffer": PRINT : PRINT "(lowercase will not flash or inverse)" 2030 PRINT : PRINT "Press 'ESC' when done editing" 2040 VTAB 19: HTAB 1: PRINT "________________________________________"; 2050 TX = 1:TY = 20 2060 VTAB 17: HTAB 1: PRINT "X>";TX;" Y>";TY + 1;" "; 2070 VTAB TY: HTAB TX: GET A$ 2080 IF A$ = CHR$ (27) THEN 2400 2090 IF A$ = CHR$ (8) THEN TX = TX - 1: GOSUB 2190: GOTO 2060 2100 IF A$ = CHR$ (21) THEN TX = TX + 1: GOSUB 2190: GOTO 2060 2110 IF A$ = CHR$ (11) THEN TY = TY - 1: GOSUB 2190: GOTO 2060 2120 IF A$ = CHR$ (10) THEN TY = TY + 1: GOSUB 2190: GOTO 2060 2130 IF A$ = CHR$ (9) THEN INVERSE : GOTO 2060 2140 IF A$ = CHR$ (6) THEN FLASH : GOTO 2060 2150 IF A$ = CHR$ (13) THEN TY = TY + 1:TX = 1: GOSUB 2190: GOTO 2060 2160 IF A$ = CHR$ (14) THEN NORMAL : GOTO 2060 2170 IF A$ = CHR$ (2) THEN GOSUB 2240: GOTO 2050 2180 PRINT A$;:TX = TX + 1: GOSUB 2190: GOTO 2060 2190 IF TX > 40 THEN TX = 1 2200 IF TX < 1 THEN TX = 40 2210 IF TY > 23 THEN TY = 20 2220 IF TY < 20 THEN TY = 23 2230 RETURN 2240 VTAB 14: HTAB 1: PRINT "Clear buffer? YES NO" 2250 FL = 1 2260 IF FL = 1 THEN VTAB 14: HTAB 16: INVERSE : PRINT "YES";: NORMAL : PRINT " NO" 2270 IF FL = 0 THEN VTAB 14: HTAB 16: NORMAL : PRINT "YES ";: INVERSE : PRINT "NO";: NORMAL 2280 POKE - 16368,0 2290 IF PEEK ( - 16384) < 127 THEN 2290 2300 GET A$ 2310 IF A$ = CHR$ (21) THEN FL = 0 2320 IF A$ = CHR$ (8) THEN FL = 1 2330 IF A$ = CHR$ (27) THEN VTAB 14: HTAB 1: PRINT SPC( 39);: RETURN 2340 IF A$ = CHR$ (13) THEN GOTO 2360 2350 GOTO 2260 2360 VTAB 14: HTAB 1: PRINT SPC( 39) 2370 IF FL = 0 THEN 2390 2380 VTAB 20: HTAB 1: PRINT SPC( 160); 2390 RETURN 2400 CALL 31695: HOME : NORMAL 2410 POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0: POKE 34,20: CALL 29900: VTAB 21: HTAB 35: PRINT "?-Help"; 2420 RETURN 2430 HOME : CALL 31725 2440 POKE - 16368,0 2450 IF PEEK ( - 16384) < 127 THEN 2450 2460 HOME : POKE 49232,0: POKE 49235,0: POKE 49236,0: POKE 49238,0:: VTAB 21: HTAB 35: PRINT "?-Help"; 2470 POKE - 16368,0 2480 RETURN 2490 HOME : VTAB 21: HTAB 1: PRINT "Save picture as executable file" 2500 VTAB 23: HTAB 1: INPUT "Save Name: X.";A$ 2510 IF A$ = "" THEN GOTO 2540 2520 A$ = "X." + A$: CALL 31725: CALL 31815 2530 VTAB 1: HTAB 1: PRINT : PRINT CHR$ (4);"BSAVE ";A$;",A$5FFD,L$43B" 2540 HOME : VTAB 21: HTAB 33: PRINT "? - Help"; 2550 RETURN +-------------------------------+ | | | PRODRAW.SYS Disassembly | | By Craig Bower - 31 Jan 09 | | | +-------------------------------+ PRODRAW.SYS is appended to the applesoft executable for ProDRAW It is located at $22A0-$2F86 and on running of 'startup' aka ProDRAW, the first routine JMP is to $2F68 which is code to relocate the data at the end of the applesoft program (PRODRAW.SYS) to it's Native runtime area of $7000. PRODRAW.SYS - Subroutine entry points and end locations (01) $7000 -> $73FF >> Undo Buffer Picture storage (02) $7400 -> $7427 >> Move picture to/From Undo buffer a) $7411 (29713) >> ADC ($6C) offset (page select)* b) $7415 (29717) >> Source Page (GBASCALC)* c) $7417 (29719) >> Destination Page (GBASCALC)* (03) $7428 -> $7447 >> Inverse (04) $7448 -> $7461 >> Paint screen to current color a) Color is plotting color, plot must be on (05) $7462 -> $748D >> EOR $6C00 w/ $0400 (06) $748E -> $74CB >> Display Help Screen (07) $74CC -> $74E3 >> Return Undo buffer to Display (08) $7500 -> $78FF >> Help text screen (09) $7900 -> $7932 >> Replace Color ($FC) with $(FD) (10) $7933 -> $7957 >> Move Screen Right 1 pixel (11) $7958 -> $797E >> Move Screen Left 1 pixel (12) $797F -> $79E2 >> Move Screen Up 1 pixel (13) $79E3 -> $7A4E >> Move Screen Down 1 pixel (14) $7A4F -> $7A86 >> Horizontal Flip of Screen (15) $7A87 -> $7AD1 >> Vertical Flip of Screen (16) $7AD2 -> $7B7E >> CW Rotate of Screen (17) $7AD2 -> $7B7E >> Modified to do CCW Rotate of Screen then restored to CW (18) $7B7F -> $7BCE >> Down scroll/screen wipe (19) $7BCF -> $7BEC >> Text lines to buffer after Edit (20) $7BED -> $7C0A >> Text lines to screen before Save (21) $7C0B -> $7C28 >> Text lines to screen before Edit (22) $7C29 -> $7C46 >> Text lines to buffer after Load (23) $7C47 -> $7CC6 >> Setup buffer $5FFD for save as exe * The Source and Destination pages get switched around to determine which way the transfer will go. Initially, it's $26 (ZP) at $7415 and a $FA (ZP) at $7417 which moves from $0400 to $7000. Some routines change these values to $FA (ZP) at $7415 and $26 (ZP) at $7417 to move from $7000 to $0400. The ADC ($6C) offset is simply page select minus $04 to offset the GBASCALC $04 at ZP location $26 after a call to GBASCALC ($F847) with $00 (line 1) in the Accumulator. +------------------------------------------------------------------+ | Miscellaneous Memory usage (buffers) | +------------------------------------------------------------------+ | 4000-43FF - [File operations picture 'Load' area] | | 45D0 - [Line 21 of bottom 4 text lines buffer] | | 4650 - [Line 22 of bottom 4 text lines buffer] | | 46D0 - [Line 23 of bottom 4 text lines buffer] | | 4750 - [Line 24 of bottom 4 text lines buffer] | | 4B00-4B28 - [One line 'work-area' for up/down move of screen] | | 6C00-6FFF - [Picture 'Merge buffer' storage space] | | 7000-73FF - [Initially title page, becomes undo buffer @ runtime | | 7500-78FF - [Help Screen / Command Chart storage area] | +------------------------------------------------------------------+ 6FFF- 60 RTS ; RTS = BRUN without crash 7000-73FF - [Initially title page. Becomes 'undo buffer' @ runtime] 7400- A9 00 LDA #$00 ; Undo Buffer Store/Move 7402- 85 FE STA $FE ;------------------------ 7404- A8 TAY 7405- A5 FE LDA $FE 7407- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 740A- A5 26 LDA $26 740C- 85 FA STA $FA 740E- A5 27 LDA $27 7410- 69 6C ADC #$6C 7412- 85 FB STA $FB 7414- B1 26 LDA ($26),Y 7416- 91 FA STA ($FA),Y 7418- C8 INY 7419- C0 28 CPY #$28 741B- D0 F7 BNE $7414 741D- A0 00 LDY #$00 741F- E6 FE INC $FE 7421- A5 FE LDA $FE 7423- C9 14 CMP #$14 7425- D0 DE BNE $7405 7427- 60 RTS 7428- A9 00 LDA #$00 ; Inverse Screen 742A- 85 FC STA $FC ;---------------- 742C- A5 FC LDA $FC 742E- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7431- A0 00 LDY #$00 7433- 18 CLC 7434- A9 FF LDA #$FF 7436- 51 26 EOR ($26),Y 7438- 91 26 STA ($26),Y 743A- C8 INY 743B- C0 28 CPY #$28 743D- D0 F4 BNE $7433 743F- E6 FC INC $FC 7441- A5 FC LDA $FC 7443- C9 14 CMP #$14 7445- D0 E7 BNE $742E 7447- 60 RTS 7448- A9 00 LDA #$00 ; Fill Screen to Color 744A- AA TAX ;---------------------- 744B- A8 TAY 744C- 20 00 F8 JSR $F800 ; F8ROM:PLOT 744F- 8A TXA 7450- C8 INY 7451- C0 28 CPY #$28 7453- D0 F7 BNE $744C 7455- A0 00 LDY #$00 7457- E8 INX 7458- 8A TXA 7459- E0 28 CPX #$28 745B- D0 EF BNE $744C 745D- 60 RTS 745E- 28 PLP 745F- D0 EF BNE $7450 7461- 60 RTS 7462- A9 00 LDA #$00 ; EOR $6C00 w/ $0400 7464- 85 FE STA $FE ; Merge pics $6C00 -> $0400 7466- A8 TAY ;--------------------------- 7467- A5 FE LDA $FE 7469- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 746C- A5 26 LDA $26 746E- 85 FA STA $FA 7470- A5 27 LDA $27 7472- 69 68 ADC #$68 7474- 85 FB STA $FB 7476- B1 FA LDA ($FA),Y 7478- 51 26 EOR ($26),Y 747A- 18 CLC 747B- 91 26 STA ($26),Y 747D- C8 INY 747E- C0 28 CPY #$28 7480- D0 F4 BNE $7476 7482- E6 FE INC $FE 7484- A9 00 LDA #$00 7486- A8 TAY 7487- A5 FE LDA $FE 7489- C9 14 CMP #$14 748B- D0 DA BNE $7467 748D- 60 RTS 748E- A9 71 LDA #$71 ; Display Help Screen 7490- 8D 11 74 STA $7411 ;--------------------- 7493- A9 18 LDA #$18 ; Terrible amount of 7495- 8D 24 74 STA $7424 ; absolute references 7498- A9 FA LDA #$FA ; in this routine. 749A- 8D 15 74 STA $7415 ; 749D- A9 26 LDA #$26 749F- 8D 17 74 STA $7417 74A2- 20 00 74 JSR $7400 74A5- A9 00 LDA #$00 74A7- 8D 10 C0 STA $C010 ; r:KBDSTRB 74AA- 18 CLC 74AB- AD 00 C0 LDA $C000 ; r:KBD 74AE- 69 80 ADC #$80 74B0- 90 F8 BCC $74AA 74B2- A9 00 LDA #$00 74B4- 8D 10 C0 STA $C010 ; r:KBDSTRB 74B7- A9 6C LDA #$6C 74B9- 8D 11 74 STA $7411 74BC- A9 14 LDA #$14 74BE- 8D 24 74 STA $7424 74C1- A9 26 LDA #$26 74C3- 8D 15 74 STA $7415 74C6- A9 FA LDA #$FA 74C8- 8D 17 74 STA $7417 74CB- 60 RTS 74CC- A9 FA LDA #$FA ; Return Undo buf to disp 74CE- 8D 15 74 STA $7415 ;------------------------- 74D1- A9 26 LDA #$26 ; 74D3- 8D 17 74 STA $7417 74D6- 20 00 74 JSR $7400 74D9- A9 26 LDA #$26 74DB- 8D 15 74 STA $7415 74DE- A9 FA LDA #$FA 74E0- 8D 17 74 STA $7417 74E3- 60 RTS 7500-78FF - [Help Screen / Command Chart storage area] 7900- A5 FD LDA $FD ; Replace Color in $FC w/$FD ;---------------------------- 7902- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7905- A9 00 LDA #$00 7907- 85 FA STA $FA 7909- 85 FB STA $FB 790B- A8 TAY 790C- 20 71 F8 JSR $F871 ; F8ROM:SCRN 790F- C5 FC CMP $FC 7911- D0 07 BNE $791A 7913- A5 FA LDA $FA 7915- A4 FB LDY $FB 7917- 20 00 F8 JSR $F800 ; F8ROM:PLOT 791A- E6 FA INC $FA 791C- A4 FB LDY $FB 791E- A5 FA LDA $FA 7920- C9 28 CMP #$28 7922- D0 E8 BNE $790C 7924- A9 00 LDA #$00 7926- 85 FA STA $FA 7928- E6 FB INC $FB 792A- A5 FA LDA $FA 792C- A4 FB LDY $FB 792E- C0 28 CPY #$28 7930- D0 DA BNE $790C 7932- 60 RTS 7933- A9 00 LDA #$00 ; Move Screen [Right] 7935- 85 FE STA $FE ;--------------------- 7937- A5 FE LDA $FE 7939- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 793C- A0 27 LDY #$27 793E- B1 26 LDA ($26),Y 7940- 85 FD STA $FD 7942- 88 DEY 7943- B1 26 LDA ($26),Y 7945- C8 INY 7946- 91 26 STA ($26),Y 7948- 88 DEY 7949- D0 F7 BNE $7942 794B- A5 FD LDA $FD 794D- 91 26 STA ($26),Y 794F- E6 FE INC $FE 7951- A5 FE LDA $FE 7953- C9 14 CMP #$14 7955- D0 E2 BNE $7939 7957- 60 RTS 7958- A9 00 LDA #$00 ; Move Screen [Left] 795A- 85 FE STA $FE ;-------------------- 795C- A5 FE LDA $FE 795E- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7961- A0 00 LDY #$00 7963- B1 26 LDA ($26),Y 7965- 85 FD STA $FD 7967- C8 INY 7968- B1 26 LDA ($26),Y 796A- 88 DEY 796B- 91 26 STA ($26),Y 796D- C8 INY 796E- C0 27 CPY #$27 7970- D0 F5 BNE $7967 7972- A5 FD LDA $FD 7974- 91 26 STA ($26),Y 7976- E6 FE INC $FE 7978- A5 FE LDA $FE 797A- C9 14 CMP #$14 797C- D0 E0 BNE $795E 797E- 60 RTS 797F- A9 00 LDA #$00 ; Move Screen [Up] 7981- A8 TAY ;------------------ 7982- 85 FC STA $FC 7984- 85 FD STA $FD 7986- AA TAX 7987- A4 FC LDY $FC 7989- A5 FD LDA $FD 798B- 20 71 F8 JSR $F871 ; F8ROM:SCRN 798E- 9D 00 4B STA $4B00,X 7991- E6 FC INC $FC 7993- E8 INX 7994- E0 28 CPX #$28 7996- D0 EF BNE $7987 7998- A9 00 LDA #$00 799A- A8 TAY 799B- 85 FC STA $FC 799D- AA TAX 799E- E6 FD INC $FD 79A0- A4 FC LDY $FC 79A2- A5 FD LDA $FD 79A4- 20 71 F8 JSR $F871 ; F8ROM:SCRN 79A7- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 79AA- C6 FD DEC $FD 79AC- A4 FC LDY $FC 79AE- A5 FD LDA $FD 79B0- 20 00 F8 JSR $F800 ; F8ROM:PLOT 79B3- E6 FD INC $FD 79B5- E6 FC INC $FC 79B7- A6 FC LDX $FC 79B9- E0 28 CPX #$28 79BB- D0 E3 BNE $79A0 79BD- A9 00 LDA #$00 79BF- A8 TAY 79C0- 85 FC STA $FC 79C2- A5 FD LDA $FD 79C4- C9 27 CMP #$27 79C6- D0 D6 BNE $799E 79C8- A9 00 LDA #$00 79CA- AA TAX 79CB- 85 FC STA $FC 79CD- A8 TAY 79CE- BD 00 4B LDA $4B00,X 79D1- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 79D4- A5 FD LDA $FD 79D6- A4 FC LDY $FC 79D8- 20 00 F8 JSR $F800 ; F8ROM:PLOT 79DB- E6 FC INC $FC 79DD- E8 INX 79DE- E0 28 CPX #$28 79E0- D0 EC BNE $79CE 79E2- 60 RTS 79E3- A9 27 LDA #$27 ; Move Screen [Down] 79E5- A0 00 LDY #$00 ;-------------------- 79E7- 85 FD STA $FD 79E9- 84 FC STY $FC 79EB- A2 00 LDX #$00 79ED- 20 71 F8 JSR $F871 ; F8ROM:SCRN 79F0- 9D 00 4B STA $4B00,X 79F3- E6 FC INC $FC 79F5- E8 INX 79F6- A4 FC LDY $FC 79F8- A5 FD LDA $FD 79FA- E0 28 CPX #$28 79FC- D0 EF BNE $79ED 79FE- A9 26 LDA #$26 7A00- A0 00 LDY #$00 7A02- A2 00 LDX #$00 7A04- 85 FD STA $FD 7A06- 84 FC STY $FC 7A08- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7A0B- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7A0E- E6 FD INC $FD 7A10- A4 FC LDY $FC 7A12- A5 FD LDA $FD 7A14- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7A17- C6 FD DEC $FD 7A19- E6 FC INC $FC 7A1B- A6 FC LDX $FC 7A1D- A4 FC LDY $FC 7A1F- A5 FD LDA $FD 7A21- E0 28 CPX #$28 7A23- D0 E3 BNE $7A08 7A25- A0 00 LDY #$00 7A27- 84 FC STY $FC 7A29- C6 FD DEC $FD 7A2B- A4 FC LDY $FC 7A2D- A5 FD LDA $FD 7A2F- C9 FF CMP #$FF 7A31- D0 D5 BNE $7A08 7A33- A9 00 LDA #$00 7A35- 85 FC STA $FC 7A37- 85 FD STA $FD 7A39- AA TAX 7A3A- BD 00 4B LDA $4B00,X 7A3D- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7A40- A5 FD LDA $FD 7A42- A4 FC LDY $FC 7A44- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7A47- E6 FC INC $FC 7A49- E8 INX 7A4A- E0 28 CPX #$28 7A4C- D0 EC BNE $7A3A 7A4E- 60 RTS 7A4F- A9 00 LDA #$00 ; Horizontal Flip 7A51- 85 FA STA $FA ;----------------- 7A53- 85 FB STA $FB 7A55- A0 27 LDY #$27 7A57- 84 FC STY $FC 7A59- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7A5C- B1 26 LDA ($26),Y 7A5E- 85 FD STA $FD 7A60- A4 FB LDY $FB 7A62- B1 26 LDA ($26),Y 7A64- A4 FC LDY $FC 7A66- 91 26 STA ($26),Y 7A68- A5 FD LDA $FD 7A6A- A4 FB LDY $FB 7A6C- 91 26 STA ($26),Y 7A6E- E6 FB INC $FB 7A70- C6 FC DEC $FC 7A72- A4 FC LDY $FC 7A74- A5 FB LDA $FB 7A76- C9 14 CMP #$14 7A78- D0 E2 BNE $7A5C 7A7A- E6 FA INC $FA 7A7C- A9 00 LDA #$00 7A7E- 85 FB STA $FB 7A80- A5 FA LDA $FA 7A82- C9 14 CMP #$14 7A84- D0 CF BNE $7A55 7A86- 60 RTS 7A87- A9 00 LDA #$00 ; Vertical Flip 7A89- 85 FA STA $FA ;--------------- 7A8B- 85 FB STA $FB 7A8D- 85 FC STA $FC 7A8F- A9 27 LDA #$27 7A91- 85 FD STA $FD 7A93- A4 FA LDY $FA 7A95- A5 FB LDA $FB 7A97- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7A9A- AA TAX 7A9B- A4 FC LDY $FC 7A9D- A5 FD LDA $FD 7A9F- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7AA2- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7AA5- A4 FA LDY $FA 7AA7- A5 FB LDA $FB 7AA9- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7AAC- 8A TXA 7AAD- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7AB0- A4 FC LDY $FC 7AB2- A5 FD LDA $FD 7AB4- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7AB7- E6 FA INC $FA 7AB9- E6 FC INC $FC 7ABB- A5 FA LDA $FA 7ABD- C9 28 CMP #$28 7ABF- D0 D2 BNE $7A93 7AC1- A9 00 LDA #$00 7AC3- 85 FA STA $FA 7AC5- 85 FC STA $FC 7AC7- E6 FB INC $FB 7AC9- C6 FD DEC $FD 7ACB- A5 FB LDA $FB 7ACD- C9 14 CMP #$14 7ACF- D0 C2 BNE $7A93 7AD1- 60 RTS 7AD2- A9 00 LDA #$00 ; CW Rotate of Scrn 7AD4- A2 0F LDX #$0F ;------------------- 7AD6- B5 F0 LDA $F0,X ; Gets modified to 7AD8- 9D F0 02 STA $02F0,X ; perform CCW as well 7ADB- CA DEX ; then modified back 7ADC- E0 FF CPX #$FF ; to CW after CCW exit 7ADE- D0 F6 BNE $7AD6 ; $7B19, $7B25, $7B31 7AE0- A9 00 LDA #$00 ; $7B3D all get set 7AE2- 85 F4 STA $F4 ; to the values listed 7AE4- 85 F5 STA $F5 ; in brackets for CCW 7AE6- 85 F7 STA $F7 ; rotate of screen 7AE8- 85 FA STA $FA ; then set back by 7AEA- A9 27 LDA #$27 ; the calling routine 7AEC- 85 F6 STA $F6 ; to default to CW 7AEE- 85 F8 STA $F8 ; rotate. 7AF0- 85 F9 STA $F9 7AF2- 85 FB STA $FB 7AF4- A4 F4 LDY $F4 7AF6- A5 F5 LDA $F5 7AF8- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7AFB- 85 FC STA $FC 7AFD- A4 F6 LDY $F6 7AFF- A5 F7 LDA $F7 7B01- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7B04- 85 FD STA $FD 7B06- A4 F8 LDY $F8 7B08- A5 F9 LDA $F9 7B0A- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7B0D- 85 FE STA $FE 7B0F- A4 FA LDY $FA 7B11- A5 FB LDA $FB 7B13- 20 71 F8 JSR $F871 ; F8ROM:SCRN 7B16- 85 FF STA $FF 7B18- A5 FC LDA $FC ($FE) ; ($FE) = CCW 7B1A- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7B1D- A4 F6 LDY $F6 7B1F- A5 F7 LDA $F7 7B21- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7B24- A5 FD LDA $FD ($FF) ; ($FF) = CCW 7B26- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7B29- A4 F8 LDY $F8 7B2B- A5 F9 LDA $F9 7B2D- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7B30- A5 FE LDA $FE ($FC) ; ($FC) = CCW 7B32- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7B35- A4 FA LDY $FA 7B37- A5 FB LDA $FB 7B39- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7B3C- A5 FF LDA $FF ($FD) ; ($FD) = CCW 7B3E- 20 64 F8 JSR $F864 ; F8ROM:SETCOL 7B41- A4 F4 LDY $F4 7B43- A5 F5 LDA $F5 7B45- 20 00 F8 JSR $F800 ; F8ROM:PLOT 7B48- E6 F4 INC $F4 7B4A- E6 F7 INC $F7 7B4C- C6 F8 DEC $F8 7B4E- C6 FB DEC $FB 7B50- A5 F4 LDA $F4 7B52- C9 14 CMP #$14 7B54- D0 9E BNE $7AF4 7B56- A9 00 LDA #$00 7B58- 85 F4 STA $F4 7B5A- 85 F7 STA $F7 7B5C- A9 27 LDA #$27 7B5E- 85 F8 STA $F8 7B60- 85 FB STA $FB 7B62- E6 F5 INC $F5 7B64- E6 FA INC $FA 7B66- C6 F6 DEC $F6 7B68- C6 F9 DEC $F9 7B6A- A5 F5 LDA $F5 7B6C- C9 14 CMP #$14 7B6E- D0 E4 BNE $7B54 7B70- A9 00 LDA #$00 ; Routine to restore $F0-$FF 7B72- A2 0F LDX #$0F ; in ZP from $2F0-$2FF 7B74- BD F0 02 LDA $02F0,X ; Original routine $7AD2-$7ADF 7B77- 95 F0 STA $F0,X ; opens up $F0-$FF in ZP for 7B79- CA DEX ; X,Y and color data for each 7B7A- E0 FF CPX #$FF ; of the 4-points. 7B7C- D0 F6 BNE $7B74 ; 7B7E- 60 RTS 7B7F- 20 A2 7B JSR $7BA2 ; Downward screen wipe 7B82- A9 00 LDA #$00 ;---------------------- 7B84- 85 26 STA $26 ; Fixed JSR points can 7B86- A8 TAY ; probably be swapped for 7B87- A9 04 LDA #$04 ; relocatable code 7B89- 85 27 STA $27 ; by setting ACC to $01 7B8B- A5 26 LDA $26 ; and performing a BNE 7B8D- 91 26 STA ($26),Y ; I'm too lazy after 7B8F- C8 INY ; writing this bloated 7B90- C0 28 CPY #$28 ; routine... 7B92- D0 F7 BNE $7B8B ; Besides, there is 7B94- A9 13 LDA #$13 ; other absolute refs 7B96- 85 EF STA $EF ; in earlier routines. 7B98- 20 A2 7B JSR $7BA2 ; 7B9B- C6 EF DEC $EF 7B9D- A5 EF LDA $EF 7B9F- 10 F7 BPL $7B98 7BA1- 60 RTS 7BA2- A0 12 LDY #$12 7BA4- 84 FA STY $FA 7BA6- C8 INY 7BA7- 84 FB STY $FB 7BA9- A0 00 LDY #$00 7BAB- A5 FB LDA $FB 7BAD- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7BB0- A5 26 LDA $26 7BB2- 85 FC STA $FC 7BB4- A5 27 LDA $27 7BB6- 85 FD STA $FD 7BB8- A5 FA LDA $FA 7BBA- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7BBD- B1 26 LDA ($26),Y 7BBF- 91 FC STA ($FC),Y 7BC1- C8 INY 7BC2- C0 28 CPY #$28 7BC4- D0 F7 BNE $7BBD 7BC6- C6 FA DEC $FA 7BC8- C6 FB DEC $FB 7BCA- A5 FA LDA $FA 7BCC- 10 DB BPL $7BA9 7BCE- 60 RTS 7BCF- A2 27 LDX #$27 ; 4-lines text handler 7BD1- BD D0 05 LDA $05D0,X ;---------------------- 7BD4- 9D D0 45 STA $45D0,X ; Moves text lines 20, 7BD7- BD 50 06 LDA $0650,X ; 21, 22, 23 to buffer 7BDA- 9D 50 46 STA $4650,X ; $45D0, $4650, $46D0 7BDD- BD D0 06 LDA $06D0,X ; and $4750 7BE0- 9D D0 46 STA $46D0,X ; (After text edit 7BE3- BD 50 07 LDA $0750,X ; stores lines in buffer) 7BE6- 9D 50 47 STA $4750,X 7BE9- CA DEX 7BEA- 10 E4 BPL $7BD0 7BEC- 60 RTS 7BED- A2 27 LDX #$27 ; 4-lines text handler 7BEF- BD D0 45 LDA $45D0,X ;---------------------- 7BF2- 9D 50 06 STA $0650,X ; Moves text lines from 7BF5- BD 50 46 LDA $4650,X ; buffer to text page 1 7BF8- 9D D0 06 STA $06D0,X ; lines 21, 22, 23, 24 7BFB- BD D0 46 LDA $46D0,X ; (Before save, brings 7BFE- 9D 50 07 STA $0750,X ; lines from buffer to 7C01- BD 50 47 LDA $4750,X ; screen) 7C04- 9D D0 07 STA $07D0,X 7C07- CA DEX 7C08- 10 E5 BPL $7BEF 7C0A- 60 RTS 7C0B- A2 27 LDX #$27 ; 4-lines text handler 7C0D- BD D0 45 LDA $45D0,X ;---------------------- 7C10- 9D D0 05 STA $05D0,X ; Moves text lines from 7C13- BD 50 46 LDA $4650,X ; buffer to text page 1 7C16- 9D 50 06 STA $0650,X ; lines 20, 21, 22, 23 7C19- BD D0 46 LDA $46D0,X ; (Before edit, brings 7C1C- 9D D0 06 STA $06D0,X ; lines from buffer to 7C1F- BD 50 47 LDA $4750,X ; screen) 7C22- 9D 50 07 STA $0750,X 7C25- CA DEX 7C26- 10 E4 BPL $7C0C 7C28- 60 RTS 7C29- A2 27 LDX #$27 ; 4-lines text handler 7C2B- BD 50 06 LDA $0650,X ;---------------------- 7C2E- 9D D0 45 STA $45D0,X ; Moves text lines 21, 7C31- BD D0 06 LDA $06D0,X ; 22, 23, 24 to buffer 7C34- 9D 50 46 STA $4650,X ; (After load, stores 7C37- BD 50 07 LDA $0750,X ; lines in buffer) 7C3A- 9D D0 46 STA $46D0,X 7C3D- BD D0 07 LDA $07D0,X 7C40- 9D 50 47 STA $4750,X 7C43- CA DEX 7C44- 10 E4 BPL $7C2A 7C46- 60 RTS 7C47- A9 00 LDA #$00 ; Setup exe pic in RAM 7C49- 85 3C STA $3C ;---------------------- 7C4B- 85 42 STA $42 ; Pic located at $6000 7C4D- A9 04 LDA #$04 ; JMP located at $5FFD 7C4F- 85 3D STA $3D ; Code located at $6400 7C51- A9 F8 LDA #$F8 ; 7C53- 85 3E STA $3E 7C55- A9 07 LDA #$07 7C57- 85 3F STA $3F 7C59- A9 60 LDA #$60 7C5B- 85 43 STA $43 7C5D- A0 00 LDY #$00 7C5F- 20 2C FE JSR $FE2C ; F8ROM:MOVE 7C62- A9 4C LDA #$4C 7C64- 8D FD 5F STA $5FFD 7C67- A9 00 LDA #$00 7C69- 8D FE 5F STA $5FFE 7C6C- A9 64 LDA #$64 7C6E- 8D FF 5F STA $5FFF 7C71- A9 00 LDA #$00 7C73- 85 42 STA $42 7C75- A9 64 LDA #$64 7C77- 85 43 STA $43 7C79- A9 8F LDA #$8F 7C7B- 85 3C STA $3C 7C7D- A9 7C LDA #$7C 7C7F- 85 3D STA $3D 7C81- A9 C6 LDA #$C6 7C83- 85 3E STA $3E 7C85- A9 7C LDA #$7C 7C87- 85 3F STA $3F 7C89- A0 00 LDY #$00 7C8B- 20 2C FE JSR $FE2C ; F8ROM:MOVE 7C8E- 60 RTS 7C8F- 8D 50 C0 STA $C050 ; rw:TXTCLR 7C92- 8D 53 C0 STA $C053 ; rw:MIXSET 7C95- 8D 54 C0 STA $C054 ; rw:TXTPAGE1 7C98- 8D 56 C0 STA $C056 ; rw:LORES 7C9B- A9 14 LDA #$14 7C9D- 85 22 STA $22 7C9F- A9 00 LDA #$00 7CA1- 85 FE STA $FE 7CA3- A8 TAY 7CA4- A5 FE LDA $FE 7CA6- 20 47 F8 JSR $F847 ; F8ROM:GBASCALC 7CA9- A5 26 LDA $26 7CAB- 85 FA STA $FA 7CAD- A5 27 LDA $27 7CAF- 69 5C ADC #$5C 7CB1- 85 FB STA $FB 7CB3- B1 FA LDA ($FA),Y 7CB5- 91 26 STA ($26),Y 7CB7- C8 INY 7CB8- C0 28 CPY #$28 7CBA- D0 F7 BNE $7CB3 7CBC- E6 FE INC $FE 7CBE- A0 00 LDY #$00 7CC0- A5 FE LDA $FE 7CC2- C9 18 CMP #$18 7CC4- D0 DE BNE $7CA4 7CC6- 60 RTS +----------------------------------------------------------------+ If you wish to modify STARTUP (PRODRAW) simply run it, to relocate PRODRAW.SYS to $7000, then carry out the following steps: ]CALL -151 *6FFF:60 *BSAVE PRODRAW.SYS,A$6FFF,L$CC8 *3D0G ]100 PRINT CHR$(21):PRINT:PRINT CHR$(4);"BRUN PRODRAW.SYS,A$6FFF" ]CALL -151 *AF:70 22 *SAVE PRODRAW This will break STARTUP (PRODRAW) into the Applesoft and the BIN files respectively, so you can modify the program as you see fit. +----------------------------------------------------------------+