------- FILE fe3r022d.asm LEVEL 1 PASS 3
      1  c000 ????						; VIC 20 Final Expansion Cartridge - Revision 022
      2  c000 ????						; Thomas Winkler - Sep. 2009
      3  c000 ????
      4  c000 ????						; Thanks to Leif Bloomquist
      5  c000 ????						; Thanks to everyone on the Denial forums
      6  c000 ????						; http://www.sleepingelephant.com/denial/
      7  c000 ????						; Flash patch r021 by Nils Eilers
      8  c000 ????						; firmware patch r022d by Dirk Vroomen, April 2014
      9  c000 ????
     10  c000 ????				      processor	6502	;VIC20
     11  c000 ????
     12  9000					      org	$9000,0	;Modulstart (Fill value=0)
     13  9000
     14  9000					      rorg	$7000
     15  9000
     16  9000
     17  9000
     18  9000							;------------------------------
     19  9000		       03 3c	   CAS_BUF    =	$033c	;CASSETTE BUFFER
     20  9000		       03 3c	   F_IO       =	CAS_BUF +0	;IO FLAG
     21  9000		       03 3d	   F_WE       =	CAS_BUF +1	;WEDGE FLAG
     22  9000		       03 3e	   F_CURDEV   =	CAS_BUF +2	;WEDGE FLAG
     23  9000		       03 3f	   F_JOYREP   =	CAS_BUF +3	;JOYSTICK TIMER
     24  9000
     25  9000		       03 40	   MY_WEDGE_LO =	CAS_BUF +4	;WEDGE LOW ADDRESS
     26  9000
     27  9000		       03 41	   F_END      =	CAS_BUF +5
     28  9000							;------------------------------
     29  9000
     30  9000
     31  9000		       00 08	   FLGCOM     =	$08
     32  9000
     33  9000
     34  9000		       00 7a	   CHRPTR     =	$7a	;Char Pointer
     35  9000		       00 22	   PT1	      =	$22	;Pointer
     36  9000		       00 24	   PT2	      =	$24	;Pointer
     37  9000		       00 14	   PT3	      =	$14	;Pointer
     38  9000
     39  9000		       00 61	   FAC	      =	$61
     40  9000
     41  9000		       00 d1	   C_LINE     =	$d1	;pointer current line char RAM
     42  9000		       00 f3	   C_COLP     =	$f3	;pointer current line color RAM
     43  9000
     44  9000		       00 d4	   C_CTRL     =	$d4	;control mode
     45  9000
     46  9000		       00 d6	   C_ROW      =	$d6	;cursor row
     47  9000		       00 d3	   C_COL      =	$d3	;cursor column
     48  9000		       00 d7	   C_CHR      =	$d7	;cuurent char
     49  9000
     50  9000
     51  9000		       00 2b	   BASSTRT    =	$2B	;BASIC START
     52  9000		       00 2d	   BASVAR     =	$2d	;BASIC VARS
     53  9000		       00 2f	   BASARR     =	$2f	;BASIC ARRAYS
     54  9000		       00 31	   BASAEND    =	$31	;BASIC ARRAYS END
     55  9000		       00 33	   BASSTR     =	$33	;BASIC STRINGS
     56  9000		       00 35	   STRPTR     =	$35	;STRING POINTER
     57  9000		       00 37	   BASEND     =	$37	;BASIC END
     58  9000
     59  9000		       00 c1	   SAVESTART  =	$c1
     60  9000		       00 c3	   LOADPTR    =	$c3
     61  9000		       00 ac	   LOADSTART  =	$ac
     62  9000		       00 ae	   LOADEND    =	$ae
     63  9000
     64  9000		       00 c6	   KEYANZ     =	$c6
     65  9000
     66  9000
     67  9000		       00 90	   IECSTAT    =	$90
     68  9000
     69  9000		       00 b7	   LEN_FNAM   =	$b7
     70  9000		       00 bb	   PTR_FNAM   =	$bb
     71  9000
     72  9000		       00 93	   SY_VERIFY  =	$93
     73  9000		       00 90	   SY_STATUS  =	$90
     74  9000		       00 b9	   SY_SA      =	$b9
     75  9000		       00 ba	   SY_DN      =	$ba
     76  9000		       00 b8	   SY_FN      =	$b8
     77  9000
     78  9000		       00 9d	   DIRECT_MODE =	$9d	;Direct=$80/RUN=0
     79  9000
     80  9000
     81  9000		       00 73	   CHRGET     =	$0073	;GET NEXT CHAR
     82  9000		       00 79	   CHRGOT     =	$0079	;GET LAST CHAR
     83  9000
     84  9000		       02 00	   BIP	      =	$0200	;BASIC Input Buffer 88 Bytes
     85  9000		       02 58	   BIP_E      =	BIP +88	;BASIC Input Buffer End - Stack
     86  9000		       01 00	   STP	      =	$0100	;LOW Stack - Text Buffer
     87  9000
     88  9000
     89  9000		       9c 02	   IO_FINAL   =	$9c02	;FINAL EXPANSION REGISTER 1 (39938,39939)
     90  9000
     91  9000		       00 00	   FEMOD_START =	$00	;MODE START
     92  9000		       00 40	   FEMOD_ROM  =	$40	;MODE EEPROM (READ EEPROM, WRITE RAM)
     93  9000		       00 20	   FEMOD_FLASH =	$20	;MODE FLASH EEPROM (READ EEPROM, WRITE EEPROM)
     94  9000		       00 80	   FEMOD_RAM_1 =	$80	;MODE RAM 1 (READ::BANK 1,WRITE::BANK 1/2)
     95  9000		       00 c0	   FEMOD_RAM_2 =	$C0	;MODE RAM 2 (WRITE::BANK 1,READ::BANK 1/2)
     96  9000		       00 a0	   FEMOD_SRAM =	$A0	;MODE BIG SRAM (SRAM 512KB, BANK 0 TO 15)
     97  9000
     98  9000		       fd 22	   SOFT_RESET =	$fd22	;SOFT RESET
     99  9000		       e5 0a	   CURSOR_POS =	$e50a
    100  9000
    101  9000		       ff d2	   BSOUT      =	$ffd2
    102  9000		       ff e4	   GETIN      =	$ffe4
    103  9000
    104  9000
    105  9000
    106  9000		       ff c0	   OPEN       =	$ffc0	; Open Vector [F40A] Open File
    107  9000							; Preparing: SETLFS, SETNAM
    108  9000		       ff c3	   CLOSE      =	$ffc3	; Close Vector [F34A] Close File
    109  9000		       ff ba	   SETLFS     =	$ffba	; Set Logical File Parameters
    110  9000		       ff bd	   SETNAM     =	$ffbd	; Set Filename / Command
    111  9000		       ff d5	   LOAD       =	$ffd5	; Load RAM From Device
    112  9000							;CHROUT  = $ffd2     ; Output Vector, chrout [F27A] Output One Character
    113  9000							; Preparing: OPEN, CHKOUT (not for video output)
    114  9000		       ff c6	   CHKIN      =	$ffc6	; Set Input [F2C7] Set Input Device
    115  9000							; Preparing: OPEN
    116  9000		       ff cf	   CHRIN      =	$ffcf	; Input Vector, chrin [F20E] Input a byte
    117  9000							; Preparing: OPEN, CHKIN
    118  9000		       cb 1e	   PRNSTR     =	$cb1e	; print string in A/Y, 0 terminated
    119  9000		       dd cd	   PRNINT     =	$ddcd	; print integer in X/A
    120  9000		       c4 37	   PRNERR     =	$c437	; print basic error message in X = (from $01 to $1e)
    121  9000		       e4 67	   BASSFT     =	$e467	; BASIC Warm Restart [RUNSTOP-RESTORE]
    122  9000		       00 79	   CHRGETSUB  =	$0079	; CHRGET subroutine return point after modify
    123  9000		       c3 bf	   SY_MOVEMEM =	$c3bf	; Move memory from (start($5f-$60)/end+1($5a-$5b)) to (end+1($58-$59))
    124  9000		       ff e4	   GETIN      =	$ffe4	; Get a byte From Keyboad or serial device
    125  9000		       cd 9e	   FRMEVL     =	$cd9e	; Evaluate Expression in Text
    126  9000		       fd 22	   RESET      =	$fd22	; Reset Vic
    127  9000		       c4 74	   READY      =	$c474	; Restart BASIC
    128  9000		       e5 18	   CINT1      =	$e518	; Initialize I/O
    129  9000		       e5 5f	   CLRSCN     =	$e55f	; clear screen
    130  9000
    131  9000							; TurboLoad
    132  9000		       ff 93	   secnd      =	$ff93	; send secondary address for LISTEN
    133  9000		       ff a8	   ciout      =	$ffa8	; write serial data
    134  9000		       ff ae	   unlsn      =	$ffae	; send UNLISTEN command
    135  9000		       ff b1	   listn      =	$ffb1	; send LISTEN command
    136  9000		       00 ba	   fa	      =	$ba	; Current Device Number
    137  9000
    138  9000		       ff cc	   CLRCH      =	$ffcc	; Restore Default I/O status
    139  9000
    140  9000		       00 ba	   dir_current_device =	$ba
    141  9000		       00 d3	   dir_current_curposline =	$d3
    142  9000		       00 90	   dir_status_word_st =	$90
    143  9000		       00 c7	   dir_reverse_flag =	$c7
    144  9000		       00 2b	   dir_basicstartaddress_lo =	$2b
    145  9000		       00 2c	   dir_basicstartaddress_hi =	$2c
    146  9000
    147  9000		       00 3a	   dir_basiclinenumber_hi =	$3a
    148  9000		       00 22	   dir_index1_lo =	$22
    149  9000		       00 23	   dir_index1_hi =	$23
    150  9000		       00 7a	   dir_basicpointer_lo =	$7a
    151  9000		       00 7b	   dir_basicpointer_hi =	$7b
    152  9000		       00 9b	   dir_tapecharparity =	$9b	;unmovable ???
    153  9000		       00 c5	   dir_current_key =	$c5
    154  9000		       00 c6	   dir_chars_in_key_buffer =	$c6
    155  9000		       00 9d	   dir_output_control =	$9d	;Direct=$80/RUN=0
    156  9000		       00 ce	   dir_char_under_cursor =	$ce
    157  9000
    158  9000							; TurboLoad
    159  9000		       00 90	   fl_status_word_st =	$90
    160  9000		       00 93	   fl_load_verify_flag =	$93	; Load=0 else Verify
    161  9000		       00 ba	   fl_current_device =	$ba
    162  9000		       00 b7	   fl_char_in_file_name =	$b7
    163  9000		       00 bb	   fl_filename_pointer_lo =	$bb
    164  9000		       00 bc	   fl_filename_pointer_hi =	$bc
    165  9000		       00 b9	   fl_current_sa =	$b9
    166  9000		       00 b8	   fl_current_logical_file =	$b8
    167  9000		       00 ae	   fl_endprogram_address_lo =	$ae	; is used as temp pointer of code
    168  9000		       00 af	   fl_endprogram_address_hi =	$af	; to send to the drive too
    169  9000		       00 bb	   fl_filename_pointer =	$bb	; $BB-$BC Pointer: to file name
    170  9000		       00 9d	   fl_output_control =	$9d	; Direct=$80/RUN=0 
    171  9000
    172  9000		       00 2b	   fl_basicstartaddress_lo =	$2b
    173  9000		       00 2c	   fl_basicstartaddress_hi =	$2c
    174  9000
    175  9000							; ----- other zero page locations (movable) ------
    176  9000
    177  9000		       00 fd	   dir_old_key =	$fd
    178  9000		       00 fe	   dir_command_set =	$fe
    179  9000
    180  9000							; TurboLoad
    181  9000							; $f7-$fa is RS232 pointers, $fb-$fe is unused
    182  9000		       00 f7	   iec0d1a    =	$f7
    183  9000		       00 f8	   iec0d1b    =	$f8
    184  9000		       00 f9	   iec1d1a    =	$f9
    185  9000		       00 fa	   iec1d1b    =	$fa
    186  9000
    187  9000		       00 fc	   store      =	$fc
    188  9000
    189  9000		       00 f7	   mwcmd      =	$f7	;f7-fc used first to temp store SETLFS & SETNAM parameters
    190  9000							;	and after to send the "M-W" command to the drive.
    191  9000							;	Since these operations are made before the
    192  9000							;	fastloading process i share the same location of
    193  9000							;	iec0d1a,iec0d1b,iec1d1a,iec1d1b and store variables.
    194  9000							;	Used as temp value for loader start routine too.
    195  9000
    196  9000							; shared address because used with CTRL+F1/F3/F5/F7 
    197  9000		       00 f7	   From_Lo    =	$f7	;FB	    ;From address (lo-byte)
    198  9000		       00 f8	   From_Hi    =	$f8	;FC	    ;From address (hi-byte)
    199  9000		       00 f9	   To_Lo      =	$f9	;FD	    ;to address (lo-byte)
    200  9000		       00 fa	   To_Hi      =	$fa	;FE	    ;ti address (hi-byte)
    201  9000
    202  9000							; **************** other page locations used ****************
    203  9000
    204  9000							; ----- used by the kernal (unmovable) ------
    205  9000		       02 8d	   dir_shift_ctrl_cbm_flag =	$028d
    206  9000		       02 77	   dir_keyboard_buffer =	$0277	;($0277-$0280)
    207  9000
    208  9000		       02 82	   dir_start_memory_hi =	$282	; Start of memory (hi-byte)
    209  9000		       02 84	   dir_top_memory_hi =	$284	; Top of memory (hi-byte)
    210  9000		       02 88	   dir_screen_mem_page =	$288	; Screen memory page start (hi-byte)
    211  9000
    212  9000
    213  9000							; **************** I/O constants ****************************
    214  9000
    215  9000							; TurboLoad
    216  9000		       00 20	   AMOUNT     =	$20	; amount of data bytes to transfer with one M-W command
    217  9000		       00 ef	   ESCBYTE    =	$ef	; the escape char used in the transfers
    218  9000		       00 14	   RETRIES    =	20	; amount of retries in reading a block
    219  9000
    220  9000		       00 08	   DEFAULT_DEVICE =	8	; Default device number
    221  9000
    222  9000		       00 d6	   CheckByte  =	#214
    223  9000
    224  9000		       91 2c	   iecport1   =	$912c	;$dd00	;$912c
    225  9000		       00 20	   dato       =	32	;32	;32
    226  9000		       00 02	   clko       =	2	;16	;2
    227  9000		       91 1f	   iecport2   =	$911f	;$dd00	;$911f
    228  9000		       00 80	   atno       =	128	;8	;128
    229  9000		       00 01	   clki       =	1	;64	;1
    230  9000		       00 02	   dati       =	2	;128	;2
    231  9000
    232  9000							; ***********************************************************************
    233  9000
    234  9000
    235  9000
    236  9000
    237  9000
    238  9000
    239  9000
    240  9000							; ==============================================================
    241  9000							; Startup screen
    242  9000							; ==============================================================
    243  9000
    244  9000				   STARTUPSCREEN
    245  9000							; dc.b CLRHOME, WHITE, CR, RVSON, "DISK UTILITY CARTRIDGE", CR, CR
    246  9000		       93 0e 9e 12*	      dc.b	CLRHOME,FONT2,YELLOW,RVSON,"*fINAL eXPANSION V3.2*", CR
    247  901b		       12 35 31 32*	      dc.b	RVSON, "512/512kb sYSTEM R022D", CR, CR, CR
    248  9035		       05 12 66 31*	      dc.b	WHITE,RVSON,"f1",RVSOFF," ram mANAGER", CR, CR
    249  9048							;  dc.b "",RVSON,"f2",RVSOFF,"  basic uN-new", CR, CR
    250  9048		       0d 0d		      dc.b	CR, CR
    251  904a		       12 66 33 92*	      dc.b	RVSON,"f3",RVSOFF," dISK lOADER", CR, CR
    252  905c		       12 66 34 92*	      dc.b	RVSON,"f4",RVSOFF,"  hELP", CR, CR
    253  9068		       12 66 35 92*	      dc.b	RVSON,"f5",RVSOFF," cART lOADER", CR, CR
    254  907a							;  dc.b CR, CR
    255  907a		       12 66 36 92*	      dc.b	RVSON,"f6",RVSOFF,"  fe3 uTILITIES", CR, CR
    256  908f							;  dc.b CR, CR
    257  908f		       05 12 66 37*	      dc.b	WHITE,RVSON,"f7",RVSOFF," basic (wEDGE)", CR, CR
    258  90a4		       12 66 38 92*	      dc.b	"",RVSON,"f8",RVSOFF,"  basic (NORMAL)", CR, CR, CR
    259  90bb		       12 2b 92 2f*	      dc.b	RVSON,"+",RVSOFF,"/",RVSON,"-",RVSOFF," dRIVE #"
    260  90ca		       00		      dc.b	$00
    261  90cb
    262  90cb
    263  90cb							; ==============================================================
    264  90cb							; Help screen
    265  90cb							; ==============================================================
    266  90cb
    267  90cb
    268  90cb				   HELPSCREEN
    269  90cb		       05		      dc.b	WHITE
    270  90cc				   HELPSCREEN3
    271  90cc		       93 0e 12 66*	      dc.b	CLRHOME,FONT2,RVSON,"fe3 wEDGE cOMMANDS", CR, CR	;RVSOFF Not Needed
    272  90e3		       24 20 20 64*	      dc.b	"$  dIRECTORY", CR
    273  90f0		       40 20 20 73*	      dc.b	AT, "	sTATUS/cOMMAND", CR
    274  9102		       2f 20 20 6c*	      dc.b	"/  lOAD", CR
    275  910a		       25 20 20 6c*	      dc.b	"%  lOAD bINARY", CR
    276  9119		       23 20 20 64*	      dc.b	"#  dRIVE", CR,CR
    277  9123		       4f 4c 44 2f*	      dc.b	"OLD/UNNEW basic", CR
    278  9133		       4b 49 4c 4c*	      dc.b	"KILL/OFF  END WEDGE", CR
    279  9147		       4e 4f 49 4f*	      dc.b	"NOIO/BLKD/BLKP", CR
    280  9156		       52 45 53 45*	      dc.b	"RESET", CR
    281  915c		       0d		      dc.b	CR	;RVSOFF Not Needed
    282  915d		       73 79 73 34*	      dc.b	"sys41000 hELP", CR
    283  916b		       73 79 73 34*	      dc.b	"sys41003 wEDGE", CR
    284  917a		       73 79 73 34*	      dc.b	"sys41006 wEDGE at $340", CR, CR, CR
    285  9193		       00		      dc.b	$00
    286  9194
    287  9194							; ==============================================================
    288  9194							; RAM setting menu
    289  9194							; ==============================================================
    290  9194
    291  9194				   RAMSCREEN
    292  9194		       93 0e 9e 12*	      dc.b	CLRHOME,FONT2,YELLOW,RVSON, "	ram cONFIGURATION   ",CR,CR,CR
    293  91b1		       05 12 66 31*	      dc.b	WHITE,RVSON,"f1",RVSOFF," 3 kb (6655)", CR, CR
    294  91c4		       12 66 32 92*	      dc.b	"",RVSON,"f2",RVSOFF,"  8 kb (11775)", CR, CR
    295  91d8		       12 66 33 92*	      dc.b	RVSON,"f3",RVSOFF," 16 kb (19967)", CR, CR
    296  91ec		       12 66 34 92*	      dc.b	"",RVSON,"f4",RVSOFF,"  24 kb (28159)", CR, CR
    297  9201		       12 66 35 92*	      dc.b	RVSON,"f5",RVSOFF," 24+3 kb (28159)", CR, CR
    298  9217		       12 66 36 92*	      dc.b	"",RVSON,"f6",RVSOFF,"  oFF (NO wEDGE!)", CR, CR
    299  922e		       12 66 37 92*	      dc.b	RVSON,"f7",RVSOFF," aLL ram (28159)", CR, CR, CR
    300  9245		       12 66 38 92*	      dc.b	"",RVSON,"f8",RVSOFF,"  mAIN mENU", CR, CR, CR
    301  9257		       69 6f 20 12*	      dc.b	"io ",RVSON,"r",RVSOFF,"EGISTER ( )", CR
    302  9269		       65 41 53 59*	      dc.b	"eASY ",RVSON,"w",RVSOFF,"EDGE  ( )"
    303  927a		       00		      dc.b	$00
    304  927b
    305  927b
    306  927b							; ==============================================================
    307  927b							; UTILITY menu
    308  927b							; ==============================================================
    309  927b
    310  927b				   UTILSCREEN
    311  927b		       93 0e 9e 12*	      dc.b	CLRHOME,FONT2,YELLOW,RVSON, "	  fe3 uTILITIES     ",CR,CR,CR
    312  9298		       05 12 66 31*	      dc.b	WHITE,RVSON,"f1",RVSOFF," fLASH pROGRAM", CR, CR
    313  92ad		       12 66 32 92*	      dc.b	"",RVSON,"f2",RVSOFF,"  fLASH fIRMWARE", CR, CR
    314  92c3		       12 66 33 92*	      dc.b	RVSON,"f3",RVSOFF," fLASH iNFO", CR, CR
    315  92d4							;dc.b CR, CR
    316  92d4							;dc.b "",RVSON,"f4",RVSOFF,"  24 kb (28159)", CR, CR
    317  92d4		       0d 0d		      dc.b	CR, CR
    318  92d6							;  dc.b RVSON,"f5",RVSOFF," bACKUP fLASH", CR, CR
    319  92d6		       0d 0d		      dc.b	CR, CR
    320  92d8							;dc.b "",RVSON,"f6",RVSOFF,"  oFF", CR, CR
    321  92d8		       0d 0d		      dc.b	CR, CR
    322  92da							;  dc.b RVSON,"f7",RVSOFF," rESTORE fLASH", CR, CR, CR
    323  92da		       0d 0d 0d 	      dc.b	CR, CR, CR
    324  92dd				   F8SCREEN
    325  92dd		       12 66 38 92*	      dc.b	"",RVSON,"f8",RVSOFF,"  mAIN mENU", CR, CR, CR
    326  92ef		       00		      dc.b	$00
    327  92f0
    328  92f0
    329  92f0							; ==============================================================
    330  92f0							; MENU FOOTER
    331  92f0							; ==============================================================
    332  92f0
    333  92f0				   MENUSCREEN
    334  92f0		       13 9e 0d 0d	      dc.b	HOME,YELLOW, CR, CR
    335  92f4							;  dc.b 210,210,210,210,210,210,210,210,210,210,210
    336  92f4		       60 60 60 60*	      dc.b	96,96,96,96,96,96,96,96,96,96,96
    337  92ff		       60 60 60 60*	      dc.b	96,96,96,96,96,96,96,96,96,96,96
    338  930a		       0d 0d 0d 0d*	      dc.b	CR, CR, CR, CR, CR, CR, CR, CR, CR
    339  9313		       0d 0d 0d 0d*	      dc.b	CR, CR, CR, CR, CR, CR, CR, CR, CR
    340  931c		       60 60 60 60*	      dc.b	96,96,96,96,96,96,96,96,96,96,96
    341  9327		       60 60 60 60*	      dc.b	96,96,96,96,96,96,96,96,96,96,96, CR
    342  9333							;  dc.b 197,197,197,197,197,197,197,197,197,197,197,CR
    343  9333
    344  9333							;	"---- DISK LOADER -----"
    345  9333		       12 66 31 92*	      dc.b	RVSON,"f1",RVSOFF,"/",RVSON,"f3",RVSOFF,":pGuP/dWN "
    346  9346		       12 66 38 92*	      dc.b	RVSON,"f8",RVSOFF,":eXIT",CR
    347  9350		       12 66 35 92*	      dc.b	RVSON,"f5",RVSOFF,"/",RVSON,"f7",RVSOFF,":fIRST-/lAST lINE"
    348  936a		       13 00		      dc.b	HOME,$00
    349  936c
    350  936c
    351  936c							; ==============================================================
    352  936c							; The credits!
    353  936c							; ==============================================================
    354  936c
    355  936c				   THECREDITS
    356  936c		       93 9e 56 33*	      dc.b	CLRHOME, YELLOW, "V3 06/2009", CR, CR
    357  937a		       1c 43 52 45*	      dc.b	RED, "CREATED BY:", CR, CR
    358  9388		       90		      dc.b	BLACK
    359  9389		       4c 45 49 46*	      dc.b	"LEIF BLOOMQUIST", CR
    360  9399		       41 4e 44 45*	      dc.b	"ANDERS PERSSON", CR
    361  93a8		       41 4e 44 45*	      dc.b	"ANDERS CARLSSON", CR
    362  93b8		       43 48 52 49*	      dc.b	"CHRISTOPHER PREST", CR
    363  93ca		       42 52 49 41*	      dc.b	"BRIAN LYONS", CR
    364  93d6		       4c 45 45 20*	      dc.b	"LEE DAVIDSON", CR
    365  93e3		       53 43 48 4c*	      dc.b	"SCHLOWSKI", CR
    366  93ed		       56 49 50 45*	      dc.b	"VIPERSAN", CR
    367  93f6		       44 41 4e 49*	      dc.b	"DANIEL KAHLIN", CR
    368  9404		       4a 45 46 46*	      dc.b	"JEFF DANIELS", CR
    369  9411		       4d 49 43 48*	      dc.b	"MICHAEL KLEIN", CR
    370  941f		       44 41 56 49*	      dc.b	"DAVID A. HOOK", CR
    371  942d		       4e 49 4c 53*	      dc.b	"NILS EILERS", CR
    372  9439		       44 49 52 4b*	      dc.b	"DIRK VROOMEN", CR
    373  9446		       54 4f 4d 4d*	      dc.b	"TOMMY WINKLER", CR, CR
    374  9455		       00		      dc.b	$00
    375  9456
    376  9456				   THECREDITSP2
    377  9456		       9c		      dc.b	PURPLE
    378  9457		       57 57 57 2e*	      dc.b	"WWW.SLEEPINGELEPHANT", CR
    379  946c		       2e 43 4f 4d*	      dc.b	".COM/DENIAL/", CR
    380  9479		       1f		      dc.b	BLUE
    381  947a		       00		      dc.b	$00
    382  947b
    383  947b				   MSG_EXISTS
    384  947b		       0d 12 41 92*	      dc.b	CR,RVSON,"A",RVSOFF,"BORT ",RVSON,"R",RVSOFF,"EPLACE ",RVSON,"U",RVSOFF,"PDATE ",CR,0
    385  9499
    386  9499
    387  9499
    388  9499
    389  9499
    390  9499							; ==============================================================
    391  9499							; ROM $6 FUNCTIONS
    392  9499							; ==============================================================
    393  9499
    394  9499		       00 00	   EXEC_SAVE  =	0
    395  9499		       00 01	   EXEC_LOADER =	1
    396  9499
    397  9499
    398  9499				   DO_EXECUTE subroutine
    399  9499		       aa		      tax
    400  949a		       d0 03		      bne	.1
    401  949c		       4c a6 74 	      jmp	RPROC_SAVE
    402  949f
    403  949f				   .1
    404  949f		       ca		      dex
    405  94a0		       d0 03		      bne	.2
    406  94a2		       4c 7a 75 	      jmp	RPROC_LOADER
    407  94a5
    408  94a5				   .2
    409  94a5		       60		      rts
    410  94a6
    411  94a6
    412  94a6
    413  94a6
    414  94a6							; ==============================================================
    415  94a6							; PROC AFTER "FILE EXISTS"
    416  94a6							; ==============================================================
    417  94a6
    418  94a6		       00 27	   CH_OLDFILE =	39	; '
    419  94a6							;CH_OLDFILE = 36			  ; $
    420  94a6
    421  94a6
    422  94a6				   RPROC_SAVE subroutine
    423  94a6		       ad 00 01 	      lda	STP
    424  94a9		       c9 36		      cmp	#"6"
    425  94ab		       d0 25		      bne	.rts
    426  94ad		       ad 01 01 	      lda	STP +1
    427  94b0		       c9 33		      cmp	#"3"
    428  94b2		       d0 1e		      bne	.rts
    429  94b4
    430  94b4		       a9 7b		      lda	#<MSG_EXISTS
    431  94b6		       a0 74		      ldy	#>MSG_EXISTS
    432  94b8		       20 31 bf 	      jsr	STROUT
    433  94bb
    434  94bb				   .key
    435  94bb		       20 e0 a1 	      jsr	WAIT_KEY
    436  94be		       c9 41		      cmp	#"A"
    437  94c0		       f0 10		      beq	.rts
    438  94c2		       c9 52		      cmp	#"R"
    439  94c4		       f0 0e		      beq	.replace
    440  94c6		       c9 55		      cmp	#"U"
    441  94c8		       f0 1e		      beq	.update
    442  94ca		       d0 ef		      bne	.key
    443  94cc
    444  94cc				   .err
    445  94cc							;jsr PRINT_DISK_ERR
    446  94cc		       20 b5 b5 	      jsr	GET_DISK_STAT
    447  94cf		       20 9e b5 	      jsr	PRINT_BIP_0
    448  94d2				   .rts
    449  94d2		       18		      clc
    450  94d3		       60		      rts
    451  94d4
    452  94d4
    453  94d4				   .replace
    454  94d4		       a9 1e		      lda	#<MSG_DEL_FILE
    455  94d6		       a0 75		      ldy	#>MSG_DEL_FILE
    456  94d8		       20 1e cb 	      jsr	SY_STROUT
    457  94db				   .repl2
    458  94db		       20 5b 75 	      jsr	START_DISK_SCRATCH
    459  94de		       b0 ec		      bcs	.err
    460  94e0		       20 4d b5 	      jsr	IECNAMOUT_2
    461  94e3
    462  94e3				   .okul
    463  94e3		       20 17 bb 	      jsr	UNLISTEN
    464  94e6		       38		      sec
    465  94e7		       60		      rts
    466  94e8
    467  94e8
    468  94e8				   .update
    469  94e8		       a9 31		      lda	#<MSG_DEL_OLDFILE
    470  94ea		       a0 75		      ldy	#>MSG_DEL_OLDFILE
    471  94ec		       20 1e cb 	      jsr	SY_STROUT
    472  94ef
    473  94ef		       20 5b 75 	      jsr	START_DISK_SCRATCH
    474  94f2		       b0 d8		      bcs	.err
    475  94f4		       a9 27		      lda	#CH_OLDFILE
    476  94f6		       20 5b ba 	      jsr	IECOUT
    477  94f9		       20 4d b5 	      jsr	IECNAMOUT_2
    478  94fc		       20 17 bb 	      jsr	UNLISTEN
    479  94ff
    480  94ff		       a9 48		      lda	#<MSG_RENAME_FILE
    481  9501		       a0 75		      ldy	#>MSG_RENAME_FILE
    482  9503		       20 1e cb 	      jsr	SY_STROUT
    483  9506
    484  9506		       20 5f 75 	      jsr	START_DISK_RENAME
    485  9509		       b0 c1		      bcs	.err
    486  950b		       a9 27		      lda	#CH_OLDFILE
    487  950d		       20 5b ba 	      jsr	IECOUT
    488  9510		       20 4d b5 	      jsr	IECNAMOUT_2
    489  9513		       a9 3d		      lda	#"="
    490  9515		       20 5b ba 	      jsr	IECOUT
    491  9518		       20 4d b5 	      jsr	IECNAMOUT_2
    492  951b		       4c e3 74 	      jmp	.okul
    493  951e
    494  951e
    495  951e
    496  951e
    497  951e				   MSG_DEL_FILE
    498  951e		       44 45 4c 45*	      dc.b	"DELETING FILE ...",13,0
    499  9531				   MSG_DEL_OLDFILE
    500  9531		       44 45 4c 45*	      dc.b	"DELETING OLD FILE ...",13,0
    501  9548				   MSG_RENAME_FILE
    502  9548		       52 45 4e 41*	      dc.b	"RENAMING FILE ...",13,0
    503  955b
    504  955b
    505  955b
    506  955b
    507  955b							; ==============================================================
    508  955b							; DISK COMMANDS RENAME AND SCRATCH
    509  955b							; ==============================================================
    510  955b
    511  955b
    512  955b				   START_DISK_SCRATCH
    513  955b		       a9 53		      lda	#"S"
    514  955d		       d0 02		      bne	START_DISK_CMD
    515  955f
    516  955f				   START_DISK_RENAME
    517  955f		       a9 52		      lda	#"R"
    518  9561
    519  9561				   START_DISK_CMD subroutine
    520  9561		       48		      pha
    521  9562		       20 65 b5 	      jsr	DISK_LISTEN_6F
    522  9565		       a5 90		      lda	IECSTAT
    523  9567		       30 0b		      bmi	.err
    524  9569
    525  9569		       68		      pla
    526  956a		       20 5b ba 	      jsr	IECOUT
    527  956d		       a9 3a		      lda	#":"
    528  956f		       20 5b ba 	      jsr	IECOUT
    529  9572		       18		      clc
    530  9573		       60		      rts
    531  9574
    532  9574				   .err
    533  9574		       20 17 bb 	      jsr	UNLISTEN
    534  9577		       68		      pla
    535  9578		       38		      sec
    536  9579		       60		      rts
    537  957a
    538  957a
    539  957a
    540  957a
    541  957a							; =====================================================================
    542  957a							; MENU LOADER
    543  957a							; Schaltet in ROM Modus und ldt 1 oder mehrere Dateien in den Speicher
    544  957a							; Lade Instruktionen stehen in der Tabelle DL_LDBUF
    545  957a							; =====================================================================
    546  957a
    547  957a				   RPROC_LOADER subroutine
    548  957a							;LOADER PARAM	     :: "filename",B|P|C [,$adress]	B=BASIC Code,P=Program,C=Cartridge
    549  957a		       20 0f ab 	      jsr	SET_PT2_LDBUF
    550  957d
    551  957d		       ae 67 03 	      ldx	DL_CNTLDR
    552  9580				   .2
    553  9580		       8a		      txa
    554  9581		       48		      pha
    555  9582		       20 a8 75 	      jsr	PRINT_LOADMSG	;SET LOAD INFO, PRINT MESSAGE
    556  9585		       20 0a 76 	      jsr	GET_FILETYP
    557  9588		       e0 42		      cpx	#"B"
    558  958a		       d0 06		      bne	.3
    559  958c
    560  958c		       20 7c a8 	      jsr	LOAD_BASIC_2
    561  958f		       4c 95 75 	      jmp	.4
    562  9592
    563  9592				   .3
    564  9592		       20 6a b3 	      jsr	MY_IECLOAD
    565  9595				   .4
    566  9595		       b0 0d		      bcs	.ERR
    567  9597
    568  9597		       20 dc aa 	      jsr	ADD_PT2_LDBUF	;NEXT LDBUF
    569  959a
    570  959a		       68		      pla
    571  959b		       aa		      tax
    572  959c		       ca		      dex
    573  959d		       d0 e1		      bne	.2
    574  959f
    575  959f				   .E
    576  959f		       20 67 b2 	      jsr	PRINT_IO
    577  95a2		       18		      clc
    578  95a3		       60		      rts
    579  95a4
    580  95a4				   .ERR
    581  95a4		       68		      pla
    582  95a5		       4c d4 aa 	      jmp	LOAD_ERR
    583  95a8
    584  95a8
    585  95a8
    586  95a8
    587  95a8							;PRINT LOAD MESSAGE
    588  95a8				   PRINT_LOADMSG subroutine
    589  95a8		       a0 12		      ldy	#LDBUF_LAD
    590  95aa		       b1 24		      lda	(PT2),y	; LOAD ADR LOW
    591  95ac		       85 c3		      sta	LOADPTR
    592  95ae		       c8		      iny
    593  95af		       b1 24		      lda	(PT2),y	; LOAD ADR HIGH
    594  95b1		       85 c4		      sta	LOADPTR +1
    595  95b3		       f0 02		      beq	.2B
    596  95b5
    597  95b5		       a9 ff		      lda	#$ff
    598  95b7				   .2B
    599  95b7		       a8		      tay		; SA
    600  95b8		       c8		      iny
    601  95b9		       a9 01		      lda	#1
    602  95bb		       ae 3e 03 	      ldx	F_CURDEV	; device#
    603  95be		       20 ba ff 	      jsr	SETFNUM
    604  95c1
    605  95c1		       20 0a 76 	      jsr	GET_FILETYP
    606  95c4		       e0 42		      cpx	#"B"
    607  95c6		       d0 16		      bne	.3B
    608  95c8
    609  95c8		       20 e8 aa 	      jsr	PRINT_LOADING
    610  95cb		       4c 4f 41 44*	      dc.b	"LOAD BASIC PROG",0
    611  95db		       4c 82 a8 	      jmp	LOAD_BASIC_START
    612  95de
    613  95de				   .3B
    614  95de		       e0 43		      cpx	#"C"
    615  95e0		       d0 1a		      bne	.3C
    616  95e2
    617  95e2		       a5 c4		      lda	LOADPTR +1
    618  95e4		       d0 04		      bne	.3B2
    619  95e6		       a9 a0		      lda	#$a0	;DEFAULT CARTRIDGE ADDRESS
    620  95e8		       85 c4		      sta	LOADPTR +1
    621  95ea				   .3B2
    622  95ea		       a0 02		      ldy	#2
    623  95ec		       84 b9		      sty	SY_SA
    624  95ee		       20 e8 aa 	      jsr	PRINT_LOADING
    625  95f1		       4c 4f 41 44*	      dc.b	"LOAD CART",0
    626  95fb		       60		      rts
    627  95fc
    628  95fc				   .3C
    629  95fc		       20 e8 aa 	      jsr	PRINT_LOADING
    630  95ff		       4c 4f 41 44*	      dc.b	"LOAD PROG",0
    631  9609		       60		      rts
    632  960a
    633  960a				   GET_FILETYP subroutine
    634  960a		       a0 11		      ldy	#LDBUF_TYP
    635  960c		       b1 24		      lda	(PT2),y
    636  960e		       aa		      tax
    637  960f		       60		      rts
    638  9610
    639  9610
    640  9610
    641  9610
    642  9610
    643  9610							; ==============================================================
    644  9610							; END :: ROM $6 FUNCTIONS
    645  9610							; ==============================================================
    646  9610
    647  9610
    648  9610					      rend
    649  9610
    650  9610
    651  9610
    652  9610
    653  a000					      org	$a000,0	;$A000   (Fill value=0)
    654  a000
    655  a000							; ==============================================================
    656  a000							; Startup
    657  a000							; ==============================================================
    658  a000		       09 a0		      dc.w	START	; Entry point for power up
    659  a002		       a0 a1		      dc.w	RESTORE	; Entry point for warm start (RESTORE)
    660  a004
    661  a004				   CARTID
    662  a004		       41 30 c3 c2*	      dc.b	"A0",$C3,$C2,$CD	; 'A0CBM' boot string
    663  a009
    664  a009
    665  a009		       cb 1e	   SY_STROUT  =	$cb1e	;String in AC/YR ausgeben
    666  a009
    667  a009		       fd 8d	   SY_RAMTAS  =	$fd8d
    668  a009							;SY_RAMTAS2 = $fd9b
    669  a009		       fd 52	   SY_INITVEC =	$fd52
    670  a009		       fd f9	   SY_INITIO1 =	$fdf9
    671  a009		       e5 18	   SY_INITIO2 =	$e518
    672  a009
    673  a009		       e4 5b	   SY_INITVEC2 =	$e45b	; Init Vectors
    674  a009		       e3 a4	   SY_BASRAM  =	$e3a4	; BASIC RAM
    675  a009		       e4 04	   SY_INITMSG =	$e404	; INIT Message (needed so keycheck routine below works)
    676  a009
    677  a009
    678  a009
    679  a009
    680  a009				   START
    681  a009		       20 8d fd 	      jsr	SY_RAMTAS	; RAMTAS - Initialise System Constants
    682  a00c		       20 52 fd 	      jsr	SY_INITVEC	; Init Vectors
    683  a00f		       20 f9 fd 	      jsr	SY_INITIO1	; Init I/O
    684  a012		       20 18 e5 	      jsr	SY_INITIO2	; Init I/O
    685  a015		       58		      cli
    686  a016
    687  a016							;BASIC Init (Partial)
    688  a016		       20 5b e4 	      jsr	SY_INITVEC2	; Init Vectors
    689  a019		       20 a4 e3 	      jsr	SY_BASRAM	; BASIC RAM
    690  a01c		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message (needed so keycheck routine below works)
    691  a01f
    692  a01f							; Force startup with device #8 (disk)
    693  a01f		       a9 08		      lda	#$08
    694  a021		       8d 3e 03 	      sta	F_CURDEV
    695  a024		       d0 38		      bne	START2
    696  a026
    697  a026
    698  a028					      org	$a028	; - equals 41000 decimal, easy to remember!
    699  a028
    700  a028				   JMP_TABLE
    701  a028		       4c f5 a1 	      jmp	HELP2	; sys 41000: Help sreen
    702  a02b		       4c 9a af 	      jmp	MY_WEDGE_INIT	; sys 41003: Init Wedge
    703  a02e		       4c 83 ae 	      jmp	MOVE_WEDGE_LOW	; sys 41006: Copy Wedge to low mem
    704  a031		       4c e2 bb 	      jmp	SET_BASE_VECTORS	; sys 41009: Set Base vectors
    705  a034
    706  a034
    707  a034							; COPY FIRMWARE FROM EEPROM TO SRAM
    708  a034				   COPYROM    subroutine
    709  a034		       a9 a0		      lda	#>$a000
    710  a036		       a0 00		      ldy	#<$a000
    711  a038		       a2 20		      ldx	#32	; copy 32 pages
    712  a03a
    713  a03a				   COPYROM_2
    714  a03a		       85 25		      sta	PT2 +1
    715  a03c		       84 24		      sty	PT2
    716  a03e
    717  a03e		       20 70 a3 	      jsr	TEST_RAM	;RAM OK?
    718  a041		       90 14		      bcc	.02
    719  a043
    720  a043		       a0 00		      ldy	#0
    721  a045				   .01
    722  a045		       b1 24		      lda	(PT2),y
    723  a047		       91 24		      sta	(PT2),y
    724  a049		       c8		      iny
    725  a04a		       d0 f9		      bne	.01
    726  a04c		       e6 25		      inc	PT2 +1
    727  a04e		       ca		      dex
    728  a04f		       d0 f4		      bne	.01
    729  a051							;sty CARTID
    730  a051							;sty CARTID +1
    731  a051
    732  a051		       a9 90		      lda	#FEMOD_RAM_1 +$10	; ALL RAM, PROTECT BLK-5
    733  a053		       8d 02 9c 	      sta	IO_FINAL
    734  a056		       38		      sec
    735  a057				   .02
    736  a057		       60		      rts
    737  a058
    738  a058
    739  a058
    740  a058				   INIT_CART  subroutine
    741  a058		       a9 6e		      lda	#$6e	; Blue Screen
    742  a05a							;lda #$6d		   ; Blue Screen,green border
    743  a05a							;lda #$6b		   ; Blue Screen, cyan border
    744  a05a		       8d 0f 90 	      sta	$900f	; Screen Color
    745  a05d		       60		      rts
    746  a05e
    747  a05e
    748  a05e				   START2     subroutine
    749  a05e		       a9 2e		      lda	#"."
    750  a060		       8d 3c 03 	      sta	F_IO
    751  a063		       a9 58		      lda	#"X"
    752  a065		       8d 3d 03 	      sta	F_WE
    753  a068
    754  a068				   .CHECK
    755  a068							; Check which control keys are pressed.
    756  a068		       ad 8d 02 	      lda	$028d
    757  a06b
    758  a06b							; if C=, go straight to BASIC.
    759  a06b		       c9 02		      cmp	#$02
    760  a06d		       d0 03		      bne	.SHIFT
    761  a06f				   .basic
    762  a06f		       4c 93 a1 	      jmp	BASIC
    763  a072
    764  a072							; if SHIFT, go straight to BASIC with wedge enabled.
    765  a072				   .SHIFT
    766  a072		       c9 01		      cmp	#$01
    767  a074		       d0 03		      bne	.CTRL
    768  a076				   .wedge
    769  a076		       4c 68 a1 	      jmp	STARTWEDGE
    770  a079
    771  a079							; if CTRL, start Boot-LOADER
    772  a079				   .CTRL
    773  a079		       c9 04		      cmp	#$04
    774  a07b		       d0 4a		      bne	.01
    775  a07d
    776  a07d				   .bootloader		; execute boot-loader
    777  a07d		       a9 40		      lda	#FEMOD_ROM	;ROM
    778  a07f		       20 55 a3 	      jsr	UNLOCK_IO	;UNLOCK IO
    779  a082		       20 58 a0 	      jsr	INIT_CART
    780  a085		       20 34 a0 	      jsr	COPYROM
    781  a088		       a9 08		      lda	#$08
    782  a08a		       8d 3e 03 	      sta	F_CURDEV
    783  a08d
    784  a08d		       20 58 a0 	      jsr	INIT_CART	; Screen Colors
    785  a090		       20 69 bf 	      jsr	SPAR_PRINTSTRING
    786  a093		       93 9e 0e 12*	      dc.b	CLRHOME,YELLOW,FONT2,RVSON,"---- bOOT lOADER  ----",CR,CR,0
    787  a0b0		       20 34 a0 	      jsr	COPYROM	; COPY FIRMWARE TO SRAM
    788  a0b3		       20 53 a4 	      jsr	DLOADER_INIT
    789  a0b6		       20 a5 a7 	      jsr	BLD_TABLE
    790  a0b9		       20 11 a7 	      jsr	LIST_PAGE
    791  a0bc		       20 de a6 	      jsr	LIST_MARKER
    792  a0bf		       68		      pla
    793  a0c0		       68		      pla
    794  a0c1		       20 e9 a3 	      jsr	DLOA_00
    795  a0c4		       4c d3 a0 	      jmp	SSCREEN
    796  a0c7
    797  a0c7				   .01
    798  a0c7		       a9 40		      lda	#FEMOD_ROM	;ROM
    799  a0c9		       20 55 a3 	      jsr	UNLOCK_IO	;UNLOCK IO
    800  a0cc		       d0 a1		      bne	.basic
    801  a0ce		       20 34 a0 	      jsr	COPYROM
    802  a0d1		       90 9c		      bcc	.basic
    803  a0d3
    804  a0d3							;CARTID
    805  a0d3
    806  a0d3
    807  a0d3							; ==============================================================
    808  a0d3							; Default Startup - show init screen
    809  a0d3							; ==============================================================
    810  a0d3
    811  a0d3				   SSCREEN    subroutine
    812  a0d3		       20 58 a0 	      jsr	INIT_CART
    813  a0d6		       a9 00		      lda	#<STARTUPSCREEN
    814  a0d8		       a0 70		      ldy	#>STARTUPSCREEN
    815  a0da		       20 2c a1 	      jsr	STROUT_R
    816  a0dd		       20 1f a2 	      jsr	SHOWDRIVE
    817  a0e0
    818  a0e0				   SETUPTIMEOUT
    819  a0e0							;Initialize Timer
    820  a0e0							;  ldy $a1 ; part of TI clock, updated every 256/60 = 4.2 seconds
    821  a0e0							;  iny
    822  a0e0							;  iny
    823  a0e0							;  iny     ;Jump ahead three 'ticks' = 12.6 seconds
    824  a0e0
    825  a0e0							; Check for timeout
    826  a0e0				   .TIMEOUT
    827  a0e0							;  cpy $a1
    828  a0e0							;  bne KEYS
    829  a0e0
    830  a0e0							;STARTWEDGE_H
    831  a0e0							;  jmp STARTWEDGE
    832  a0e0
    833  a0e0							; Check keys
    834  a0e0				   .KEYS
    835  a0e0		       20 e0 a1 	      jsr	WAIT_KEY
    836  a0e3
    837  a0e3				   .DENIAL
    838  a0e3		       c9 43		      cmp	#$43	; 'C' --> show credits
    839  a0e5		       d0 06		      bne	.F1
    840  a0e7		       20 a3 a1 	      jsr	CREDITS
    841  a0ea		       4c b6 a1 	      jmp	WAITSPACE_2
    842  a0ed
    843  a0ed				   .F1
    844  a0ed		       c9 85		      cmp	#$85	;F1
    845  a0ef		       d0 03		      bne	.DEL
    846  a0f1		       4c 56 a2 	      jmp	RAMMENU
    847  a0f4
    848  a0f4				   .DEL
    849  a0f4							;  cmp #$14  ;DEL
    850  a0f4							;  bne .F2
    851  a0f4							;  jmp STARTWEDGE
    852  a0f4
    853  a0f4				   .F2
    854  a0f4							;  cmp #$89  ;F2
    855  a0f4							;  bne F3
    856  a0f4							;  jsr INIT_BASIC
    857  a0f4							;  jsr SY_INITMSG			  ; INIT Message
    858  a0f4							;  jmp DO_UNNEW
    859  a0f4
    860  a0f4				   .F3
    861  a0f4		       c9 86		      cmp	#$86	;F3
    862  a0f6		       d0 03		      bne	.F4
    863  a0f8
    864  a0f8		       4c f1 a3 	      jmp	DLOADER
    865  a0fb
    866  a0fb				   .F4
    867  a0fb		       c9 8a		      cmp	#$8a	;F4
    868  a0fd		       d0 03		      bne	.F5
    869  a0ff		       4c e8 a1 	      jmp	HELP
    870  a102
    871  a102				   .F5
    872  a102		       c9 87		      cmp	#$87	;F5
    873  a104		       d0 03		      bne	.F6
    874  a106		       4c 68 ab 	      jmp	CART_LOADER
    875  a109
    876  a109				   .F6
    877  a109		       c9 8b		      cmp	#$8b	;F6
    878  a10b		       d0 03		      bne	.PLUS
    879  a10d		       4c b7 a3 	      jmp	UTIL_MENU
    880  a110
    881  a110				   .PLUS
    882  a110		       c9 2b		      cmp	#$2b	;+
    883  a112		       d0 03		      bne	.MINUS
    884  a114		       4c fc a1 	      jmp	INCDRIVE
    885  a117
    886  a117				   .MINUS
    887  a117		       c9 2d		      cmp	#$2D	;-
    888  a119		       d0 03		      bne	.F7
    889  a11b		       4c 02 a2 	      jmp	DECDRIVE
    890  a11e
    891  a11e				   .F7
    892  a11e		       c9 88		      cmp	#$88	;F7
    893  a120		       d0 03		      bne	.F8
    894  a122		       4c 68 a1 	      jmp	STARTWEDGE
    895  a125
    896  a125				   .F8
    897  a125		       c9 8c		      cmp	#$8C
    898  a127		       d0 b7		      bne	.TIMEOUT
    899  a129		       4c 93 a1 	      jmp	BASIC
    900  a12c
    901  a12c
    902  a12c
    903  a12c
    904  a12c							; ==============================================================
    905  a12c							; DISPLAY STRING IN ROM    in AC/YR
    906  a12c							; ==============================================================
    907  a12c
    908  a12c				   STROUT_R   subroutine
    909  a12c		       20 41 a1 	      jsr	SET_ROM
    910  a12f		       20 31 bf 	      jsr	STROUT
    911  a132		       4c 3b a1 	      jmp	SET_BACK
    912  a135
    913  a135							; ==============================================================
    914  a135							; EXECUTE FUNCTION IN ROM    in AC
    915  a135							; ==============================================================
    916  a135
    917  a135				   EXECUTE_R  subroutine
    918  a135		       20 41 a1 	      jsr	SET_ROM
    919  a138		       20 99 74 	      jsr	DO_EXECUTE
    920  a13b
    921  a13b				   SET_BACK
    922  a13b		       a5 02		      lda	2
    923  a13d		       8d 02 9c 	      sta	IO_FINAL
    924  a140		       60		      rts
    925  a141
    926  a141				   SET_ROM
    927  a141		       48		      pha
    928  a142		       ad 02 9c 	      lda	IO_FINAL
    929  a145		       85 02		      sta	2
    930  a147		       a9 40		      lda	#FEMOD_ROM
    931  a149		       8d 02 9c 	      sta	IO_FINAL
    932  a14c		       68		      pla
    933  a14d		       60		      rts
    934  a14e
    935  a14e
    936  a14e							; ==============================================================
    937  a14e							; Start Wedge and return to BASIC
    938  a14e							; ==============================================================
    939  a14e				   INIT_BASIC
    940  a14e		       20 52 fd 	      jsr	SY_INITVEC	; Init Vectors
    941  a151		       20 f9 fd 	      jsr	SY_INITIO1	; Init I/O
    942  a154		       20 18 e5 	      jsr	SY_INITIO2	; Init I/O
    943  a157		       58		      cli
    944  a158
    945  a158							;  lda #$06
    946  a158							;  sta $0286 ; Restore blue text
    947  a158
    948  a158							;BASIC Init (Partial)
    949  a158		       20 5b e4 	      jsr	SY_INITVEC2	; Init Vectors
    950  a15b		       4c a4 e3 	      jmp	SY_BASRAM	; BASIC RAM
    951  a15e
    952  a15e							;Clear keyboard buffer
    953  a15e							;  lda #$00
    954  a15e							;  sta KEYANZ
    955  a15e
    956  a15e							; Restore normal startup colors
    957  a15e				   INIT_DEF
    958  a15e		       a9 1b		      lda	#$1b
    959  a160		       8d 0f 90 	      sta	$900f
    960  a163
    961  a163							; Restore normal startup colors
    962  a163		       a9 8e		      lda	#FONT1
    963  a165		       4c d1 b6 	      jmp	CHROUT
    964  a168
    965  a168
    966  a168		       e4 67	   BASIC_WARM =	$e467
    967  a168
    968  a168
    969  a168				   STARTWEDGE
    970  a168		       78		      sei
    971  a169		       20 8d fd 	      jsr	SY_RAMTAS	; RAMTAS - Initialise System Constants
    972  a16c		       20 4e a1 	      jsr	INIT_BASIC
    973  a16f
    974  a16f		       20 9a af 	      jsr	MY_WEDGE_INIT
    975  a172
    976  a172				   STARTWEDGE1
    977  a172		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message
    978  a175		       20 e2 bb 	      jsr	SET_BASE_VECTORS	; Set Base vectors
    979  a178
    980  a178				   STARTWEDGE2
    981  a178
    982  a178							;jsr COPYROM				; COPY FIRMWARE TO SRAM
    983  a178							;bcc xxx				; ==> RAM ERROR
    984  a178
    985  a178		       a9 cd		      lda	#<WEDGEMESSAGE1b
    986  a17a		       a0 bb		      ldy	#>WEDGEMESSAGE1b
    987  a17c		       20 2c a1 	      jsr	STROUT_R
    988  a17f
    989  a17f		       ad 03 03 	      lda	PTR_INPUT_LOOP +1
    990  a182
    991  a182				   STWE_3
    992  a182		       20 49 b8 	      jsr	HEXOUT2
    993  a185		       a9 8f		      lda	#<WEDGEMESSAGE2
    994  a187		       a0 a1		      ldy	#>WEDGEMESSAGE2
    995  a189		       20 2c a1 	      jsr	STROUT_R
    996  a18c		       4c 67 e4 	      jmp	BASIC_WARM
    997  a18f
    998  a18f
    999  a18f							; ==============================================================
   1000  a18f							; Wedge Message
   1001  a18f							; ==============================================================
   1002  a18f
   1003  a18f							;WEDGEMESSAGE1a
   1004  a18f							;  dc.b $11, $1C, "EASYWEDGE ($", 0
   1005  a18f
   1006  a18f				   WEDGEMESSAGE2
   1007  a18f		       29 11 1f 00	      dc.b	")",$11, $1F, 0
   1008  a193
   1009  a193
   1010  a193							; ==============================================================
   1011  a193							; Return to BASIC
   1012  a193							; ==============================================================
   1013  a193				   BASIC
   1014  a193		       78		      sei
   1015  a194		       20 8d fd 	      jsr	SY_RAMTAS	; RAMTAS - Initialise System Constants
   1016  a197		       20 4e a1 	      jsr	INIT_BASIC
   1017  a19a				   BASIC1
   1018  a19a		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message
   1019  a19d				   BASIC2
   1020  a19d							;lda #0
   1021  a19d							;jsr SY_RAMTAS2			 ;calculate RAM size
   1022  a19d
   1023  a19d							; Complete BASIC Warm Start (since init is done above)
   1024  a19d		       4c 67 e4 	      jmp	BASIC_WARM
   1025  a1a0
   1026  a1a0
   1027  a1a0
   1028  a1a0
   1029  a1a0
   1030  a1a0							; ==============================================================
   1031  a1a0							; Handle the RESTORE key
   1032  a1a0							; ==============================================================
   1033  a1a0				   RESTORE
   1034  a1a0		       4c c7 fe 	      jmp	$fec7	; Continue as if no cartridge installed
   1035  a1a3
   1036  a1a3
   1037  a1a3
   1038  a1a3							; ==============================================================
   1039  a1a3							; List all the Denial Helpers
   1040  a1a3							; ==============================================================
   1041  a1a3				   CREDITS
   1042  a1a3		       a9 1e		      lda	#$1e
   1043  a1a5		       8d 0f 90 	      sta	$900f	; Screen colors
   1044  a1a8		       a9 6c		      lda	#<THECREDITS
   1045  a1aa		       a0 73		      ldy	#>THECREDITS
   1046  a1ac		       20 2c a1 	      jsr	STROUT_R
   1047  a1af		       a9 56		      lda	#<THECREDITSP2
   1048  a1b1		       a0 74		      ldy	#>THECREDITSP2
   1049  a1b3		       4c 2c a1 	      jmp	STROUT_R
   1050  a1b6
   1051  a1b6
   1052  a1b6							; ==============================================================
   1053  a1b6							; Wait here for space bar or F8
   1054  a1b6							; ==============================================================
   1055  a1b6				   WAITSPACE_2
   1056  a1b6		       20 bc a1 	      jsr	WAITSPACE
   1057  a1b9		       4c d3 a0 	      jmp	SSCREEN
   1058  a1bc
   1059  a1bc
   1060  a1bc				   WAITSPACE
   1061  a1bc		       20 e4 ff 	      jsr	GETIN
   1062  a1bf		       c9 8c		      cmp	#$8C	;F8
   1063  a1c1		       f0 04		      beq	WASP_1
   1064  a1c3		       c9 20		      cmp	#$20	;SPACE
   1065  a1c5		       d0 f5		      bne	WAITSPACE
   1066  a1c7				   WASP_1
   1067  a1c7		       60		      rts
   1068  a1c8
   1069  a1c8				   WAIT_KEY_TX
   1070  a1c8		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   1071  a1cb		       0d 0d 50 52*	      dc.b	13,13,"PRESS ANY KEY ...",13,0
   1072  a1e0				   WAIT_KEY
   1073  a1e0		       20 e4 ff 	      jsr	GETIN
   1074  a1e3		       c9 00		      cmp	#0
   1075  a1e5		       f0 f9		      beq	WAIT_KEY
   1076  a1e7		       60		      rts
   1077  a1e8
   1078  a1e8
   1079  a1e8							; ==============================================================
   1080  a1e8							; Help Screen
   1081  a1e8							; ==============================================================
   1082  a1e8				   HELP
   1083  a1e8		       20 f5 a1 	      jsr	HELP2
   1084  a1eb		       a9 dd		      lda	#<F8SCREEN
   1085  a1ed		       a0 72		      ldy	#>F8SCREEN
   1086  a1ef		       20 2c a1 	      jsr	STROUT_R
   1087  a1f2		       4c b6 a1 	      jmp	WAITSPACE_2
   1088  a1f5
   1089  a1f5
   1090  a1f5				   HELP2
   1091  a1f5		       a9 cc		      lda	#<HELPSCREEN3
   1092  a1f7		       a0 70		      ldy	#>HELPSCREEN3
   1093  a1f9		       4c 2c a1 	      jmp	STROUT_R
   1094  a1fc
   1095  a1fc
   1096  a1fc							; ==============================================================
   1097  a1fc							; Increment/Decrement the drive#
   1098  a1fc							; ==============================================================
   1099  a1fc
   1100  a1fc				   INCDRIVE
   1101  a1fc		       ee 3e 03 	      inc	F_CURDEV
   1102  a1ff		       4c 05 a2 	      jmp	CHECKDRIVE
   1103  a202
   1104  a202				   DECDRIVE
   1105  a202		       ce 3e 03 	      dec	F_CURDEV
   1106  a205
   1107  a205							; Make sure drive is valid - 8 to 15
   1108  a205				   CHECKDRIVE
   1109  a205		       18		      clc
   1110  a206				   CHECKLOW
   1111  a206		       ad 3e 03 	      lda	F_CURDEV
   1112  a209		       e9 08		      sbc	#$08
   1113  a20b		       b0 05		      bcs	CHECKHIGH
   1114  a20d		       a9 08		      lda	#$08
   1115  a20f		       8d 3e 03 	      sta	F_CURDEV
   1116  a212				   CHECKHIGH
   1117  a212		       18		      clc
   1118  a213		       ad 3e 03 	      lda	F_CURDEV
   1119  a216		       e9 0f		      sbc	#$0F
   1120  a218		       90 05		      bcc	SHOWDRIVE
   1121  a21a		       a9 0f		      lda	#$0F
   1122  a21c		       8d 3e 03 	      sta	F_CURDEV
   1123  a21f
   1124  a21f				   SHOWDRIVE
   1125  a21f		       a9 01		      lda	#$01
   1126  a221		       8d 86 02 	      sta	$0286	;White text
   1127  a224
   1128  a224							;Move Cursor
   1129  a224		       a2 15		      ldx	#$15	; Row
   1130  a226		       a0 0b		      ldy	#$0b	; Column
   1131  a228		       20 65 bf 	      jsr	SET_CURSOR
   1132  a22b
   1133  a22b		       ad 3e 03 	      lda	F_CURDEV
   1134  a22e		       c9 08		      cmp	#$08
   1135  a230		       f0 07		      beq	DIGIT
   1136  a232		       c9 09		      cmp	#$09
   1137  a234		       f0 03		      beq	DIGIT
   1138  a236		       4c 46 a2 	      jmp	DIGITS
   1139  a239
   1140  a239				   DIGIT
   1141  a239		       69 2f		      adc	#$2F	;convert to ascii
   1142  a23b		       20 d2 ff 	      jsr	$ffd2
   1143  a23e		       a9 20		      lda	#$20
   1144  a240		       20 d2 ff 	      jsr	$ffd2	;append a space
   1145  a243		       4c e0 a0 	      jmp	SETUPTIMEOUT
   1146  a246
   1147  a246				   DIGITS
   1148  a246		       a9 31		      lda	#$31	;'1'
   1149  a248		       20 d2 ff 	      jsr	$ffd2
   1150  a24b		       ad 3e 03 	      lda	F_CURDEV
   1151  a24e		       69 26		      adc	#$26
   1152  a250		       20 d2 ff 	      jsr	$ffd2
   1153  a253		       4c e0 a0 	      jmp	SETUPTIMEOUT
   1154  a256
   1155  a256
   1156  a256							; ==============================================================
   1157  a256							; SUBMENU RAM CONFIG
   1158  a256							; ==============================================================
   1159  a256
   1160  a256				   RAMMENU
   1161  a256		       a9 94		      lda	#<RAMSCREEN
   1162  a258		       a0 71		      ldy	#>RAMSCREEN
   1163  a25a		       20 2c a1 	      jsr	STROUT_R
   1164  a25d
   1165  a25d							; Check keys
   1166  a25d				   KEYS_0
   1167  a25d		       20 9a a3 	      jsr	SHOW_IO
   1168  a260		       20 a7 a3 	      jsr	SHOW_WE
   1169  a263
   1170  a263				   KEYS_1
   1171  a263		       20 e4 ff 	      jsr	GETIN
   1172  a266
   1173  a266
   1174  a266
   1175  a266				   F1_1
   1176  a266		       c9 85		      cmp	#$85	;F1
   1177  a268		       d0 04		      bne	F2_1
   1178  a26a
   1179  a26a							;jsr SetVicAs3K
   1180  a26a		       a9 9e		      lda	#FEMOD_RAM_1 +$1E	;3KB RAM
   1181  a26c		       d0 62		      bne	SET_RAM
   1182  a26e
   1183  a26e				   F2_1
   1184  a26e		       c9 89		      cmp	#$89	;F2
   1185  a270		       d0 04		      bne	F3_1
   1186  a272
   1187  a272							;jsr SetVicAs8K
   1188  a272		       a9 9d		      lda	#FEMOD_RAM_1 +$1D	;8KB RAM
   1189  a274		       d0 5a		      bne	SET_RAM
   1190  a276
   1191  a276				   F3_1
   1192  a276		       c9 86		      cmp	#$86	;F3
   1193  a278		       d0 04		      bne	F4_1
   1194  a27a
   1195  a27a							;jsr SetVicAs16K
   1196  a27a		       a9 99		      lda	#FEMOD_RAM_1 +$19	;16KB RAM
   1197  a27c		       d0 52		      bne	SET_RAM
   1198  a27e
   1199  a27e				   F4_1
   1200  a27e		       c9 8a		      cmp	#$8a	;F4
   1201  a280		       d0 04		      bne	F5_1
   1202  a282
   1203  a282							;jsr SetVicAs24K
   1204  a282		       a9 91		      lda	#FEMOD_RAM_1 +$11	;24KB RAM
   1205  a284		       d0 4a		      bne	SET_RAM
   1206  a286
   1207  a286				   F5_1
   1208  a286		       c9 87		      cmp	#$87	;F5
   1209  a288		       d0 04		      bne	F6_1
   1210  a28a
   1211  a28a							;jsr SetVicAs24K
   1212  a28a		       a9 90		      lda	#FEMOD_RAM_1 +$10	;24+3KB RAM
   1213  a28c		       d0 42		      bne	SET_RAM
   1214  a28e
   1215  a28e				   F6_1
   1216  a28e		       c9 8b		      cmp	#$8b	;F6
   1217  a290		       d0 07		      bne	F7_1
   1218  a292
   1219  a292		       a9 80		      lda	#FEMOD_RAM_1	;3KB RAM
   1220  a294		       a2 ff		      ldx	#$FF	;OFF
   1221  a296		       4c ee b8 	      jmp	RESET_SYSTEM
   1222  a299
   1223  a299				   F7_1
   1224  a299		       c9 88		      cmp	#$88	;F7
   1225  a29b		       d0 04		      bne	F8_1
   1226  a29d
   1227  a29d							;jsr SetVicAs24K
   1228  a29d		       a9 80		      lda	#FEMOD_RAM_1	;ALL RAM
   1229  a29f		       d0 2f		      bne	SET_RAM
   1230  a2a1
   1231  a2a1				   F8_1
   1232  a2a1		       c9 8c		      cmp	#$8C
   1233  a2a3		       d0 03		      bne	KEY_W
   1234  a2a5		       4c d3 a0 	      jmp	SSCREEN
   1235  a2a8
   1236  a2a8				   KEY_W
   1237  a2a8		       c9 57		      cmp	#"W"
   1238  a2aa		       f0 15		      beq	W_FLAG
   1239  a2ac
   1240  a2ac				   KEY_R
   1241  a2ac		       c9 52		      cmp	#"R"
   1242  a2ae		       f0 02		      beq	IO_FLAG
   1243  a2b0		       d0 b1		      bne	KEYS_1
   1244  a2b2
   1245  a2b2
   1246  a2b2							;-------- CHANGE IO REGISTER FLAG
   1247  a2b2				   IO_FLAG
   1248  a2b2		       a9 2e		      lda	#"."
   1249  a2b4		       cd 3c 03 	      cmp	F_IO
   1250  a2b7		       d0 02		      bne	IOF2
   1251  a2b9		       a9 58		      lda	#"X"
   1252  a2bb
   1253  a2bb				   IOF2
   1254  a2bb		       8d 3c 03 	      sta	F_IO
   1255  a2be		       4c 5d a2 	      jmp	KEYS_0
   1256  a2c1
   1257  a2c1
   1258  a2c1							;-------- CHANGE WEDGE FLAG
   1259  a2c1				   W_FLAG
   1260  a2c1		       a9 2e		      lda	#"."
   1261  a2c3		       cd 3d 03 	      cmp	F_WE
   1262  a2c6		       d0 02		      bne	WEF2
   1263  a2c8		       a9 58		      lda	#"X"
   1264  a2ca
   1265  a2ca				   WEF2
   1266  a2ca		       8d 3d 03 	      sta	F_WE
   1267  a2cd		       4c 5d a2 	      jmp	KEYS_0
   1268  a2d0
   1269  a2d0
   1270  a2d0
   1271  a2d0
   1272  a2d0				   SET_RAM
   1273  a2d0							;sta DL_IOBASE
   1274  a2d0		       8d 02 9c 	      sta	IO_FINAL
   1275  a2d3		       8d 04 a0 	      sta	CARTID	;DELETE CARTRIDGE ID IF RAM
   1276  a2d6		       48		      pha
   1277  a2d7		       ae 3c 03 	      ldx	F_IO
   1278  a2da		       e0 2e		      cpx	#"."
   1279  a2dc		       d0 05		      bne	SET_RAM5
   1280  a2de
   1281  a2de		       a2 80		      ldx	#$80
   1282  a2e0		       8e 03 9c 	      stx	IO_FINAL +1	; LOCK IO (REGISTER INVISIBLE)
   1283  a2e3				   SET_RAM5
   1284  a2e3		       29 a0		      and	#$a0
   1285  a2e5		       c9 80		      cmp	#$80
   1286  a2e7		       d0 07		      bne	SET_RAM6	; WEDGE ONLY FOR RAM, RAM-NOIO
   1287  a2e9
   1288  a2e9		       ae 3d 03 	      ldx	F_WE
   1289  a2ec		       e0 58		      cpx	#"X"
   1290  a2ee		       f0 07		      beq	SET_RAM8
   1291  a2f0				   SET_RAM6
   1292  a2f0		       68		      pla
   1293  a2f1		       20 b0 ae 	      jsr	SetVicMemConfig
   1294  a2f4		       4c 9a a1 	      jmp	BASIC1
   1295  a2f7
   1296  a2f7				   SET_RAM8
   1297  a2f7		       68		      pla
   1298  a2f8		       48		      pha
   1299  a2f9		       20 b0 ae 	      jsr	SetVicMemConfig
   1300  a2fc		       68		      pla
   1301  a2fd		       29 bf		      and	#$bf
   1302  a2ff		       c9 80		      cmp	#$80	; WEDGE $5 ONLY FOR ALL RAM
   1303  a301		       d0 09		      bne	SET_RAM9
   1304  a303		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message
   1305  a306		       20 83 ae 	      jsr	MOVE_WEDGE_LOW	; COPY WEDGE TO $500
   1306  a309		       4c 78 a1 	      jmp	STARTWEDGE2
   1307  a30c				   SET_RAM9
   1308  a30c		       20 9a af 	      jsr	MY_WEDGE_INIT
   1309  a30f		       4c 72 a1 	      jmp	STARTWEDGE1
   1310  a312
   1311  a312
   1312  a312							;-------- SWITCH CARTRIDGE AND RUN BASIC
   1313  a312				   RUNBASIC
   1314  a312							;jsr INIT_BASIC
   1315  a312							;jsr $e404 ; INIT Message
   1316  a312
   1317  a312							; Complete BASIC Warm Start (since init is done above)
   1318  a312							;jmp BASIC_WARM
   1319  a312
   1320  a312		       a0 11		      ldy	#(__SET_IO_RUN_E - __SET_IO_RUN)
   1321  a314		       a9 a3		      lda	#>__SET_IO_RUN
   1322  a316		       a2 24		      ldx	#<__SET_IO_RUN
   1323  a318		       20 03 b9 	      jsr	COPY_PROC
   1324  a31b
   1325  a31b		       ad 94 02 	      lda	BIP_IOBASE
   1326  a31e		       ae 95 02 	      ldx	BIP_IOBASE +1
   1327  a321		       4c 00 02 	      jmp	BIP
   1328  a324
   1329  a324
   1330  a324							;-------- RAM PROCEDURE TO SWITCH CARTRIDGE AND RUN BASIC
   1331  a324				   __SET_IO_RUN
   1332  a324		       8d 02 9c 	      sta	IO_FINAL
   1333  a327		       8e 03 9c 	      stx	IO_FINAL +1
   1334  a32a							;  jsr SY_PGMLINK			  ;Relinks BASIC Program from and to any address...
   1335  a32a		       a9 00		      lda	#0
   1336  a32c		       20 90 ff 	      jsr	$ff90
   1337  a32f		       20 59 c6 	      JSR	SY_BASCLR2	;CLR
   1338  a332		       4c ae c7 	      JMP	$C7AE
   1339  a335				   __SET_IO_RUN_E
   1340  a335
   1341  a335
   1342  a335
   1343  a335
   1344  a335
   1345  a335							;-------- SWITCH CARTRIDGE AND RUN CODE
   1346  a335				   SYS_XY
   1347  a335		       98		      tya
   1348  a336		       48		      pha
   1349  a337		       8a		      txa
   1350  a338		       48		      pha
   1351  a339
   1352  a339							;jsr INIT_BASIC
   1353  a339
   1354  a339		       a0 09		      ldy	#(__SET_IO_RESET_E - __SET_IO_RESET)
   1355  a33b		       a9 b9		      lda	#>__SET_IO_RESET
   1356  a33d		       a2 11		      ldx	#<__SET_IO_RESET
   1357  a33f		       20 03 b9 	      jsr	COPY_PROC
   1358  a342
   1359  a342		       a0 07		      ldy	#(__SET_IO_RESET_E - __SET_IO_RESET) -2
   1360  a344		       68		      pla
   1361  a345		       99 00 02 	      sta	BIP,y
   1362  a348		       68		      pla
   1363  a349		       99 01 02 	      sta	BIP+1,y
   1364  a34c				   SYS_XY_2
   1365  a34c		       ad 94 02 	      lda	BIP_IOBASE
   1366  a34f		       ae 95 02 	      ldx	BIP_IOBASE +1
   1367  a352		       4c 00 02 	      jmp	BIP
   1368  a355
   1369  a355
   1370  a355
   1371  a355
   1372  a355
   1373  a355
   1374  a355
   1375  a355
   1376  a355							;-------- UNLOCK IO IN START-MODE
   1377  a355				   UNLOCK_IO
   1378  a355		       48		      pha
   1379  a356		       a0 0d		      ldy	#(__UNLOCK_IO_E - __UNLOCK_IO)
   1380  a358		       a9 a3		      lda	#>__UNLOCK_IO
   1381  a35a		       a2 63		      ldx	#<__UNLOCK_IO
   1382  a35c		       20 03 b9 	      jsr	COPY_PROC
   1383  a35f		       68		      pla
   1384  a360		       4c 00 02 	      jmp	BIP
   1385  a363
   1386  a363							;-------- UNLOCK START MODE AND SET MODE
   1387  a363				   __UNLOCK_IO
   1388  a363							;  sei
   1389  a363		       ae 00 a0 	      ldx	$a000	;
   1390  a366		       8e 00 a0 	      stx	$a000	;UNLOCK IO
   1391  a369		       8d 02 9c 	      sta	IO_FINAL
   1392  a36c		       cd 02 9c 	      cmp	IO_FINAL
   1393  a36f							;  cli
   1394  a36f		       60		      rts
   1395  a370				   __UNLOCK_IO_E
   1396  a370
   1397  a370
   1398  a370
   1399  a370
   1400  a370
   1401  a370
   1402  a370							;-------- TEST IF RAM IS AT (PT1)
   1403  a370				   TEST_RAM
   1404  a370		       a0 1e		      ldy	#(__TEST_RAM_E - __TEST_RAM)
   1405  a372		       a9 a3		      lda	#>__TEST_RAM
   1406  a374		       a2 7c		      ldx	#<__TEST_RAM
   1407  a376		       20 03 b9 	      jsr	COPY_PROC
   1408  a379		       4c 00 02 	      jmp	BIP
   1409  a37c
   1410  a37c							;-------- TEST IF RAM IS AT (PT1)  ZF=1 :: RAM IS OK
   1411  a37c				   __TEST_RAM
   1412  a37c							;ldx IO_FINAL
   1413  a37c		       78		      sei
   1414  a37d		       a9 80		      lda	#FEMOD_RAM_1	;RAM
   1415  a37f		       8d 02 9c 	      sta	IO_FINAL
   1416  a382
   1417  a382		       a0 00		      ldy	#0
   1418  a384		       b1 24		      lda	(PT2),y
   1419  a386		       48		      pha
   1420  a387		       49 ff		      eor	#$ff
   1421  a389		       91 24		      sta	(PT2),y	;STORE INVERTED VALUE
   1422  a38b		       d1 24		      cmp	(PT2),y	;CHECK IF ($A) WRITEABLE
   1423  a38d		       f0 01		      beq	__TERA_1
   1424  a38f		       18		      clc		;RAM ERROR!!
   1425  a390				   __TERA_1
   1426  a390		       68		      pla
   1427  a391		       91 24		      sta	(PT2),y	;RESTORE OLD VALUE
   1428  a393
   1429  a393		       a2 40		      ldx	#FEMOD_ROM	;ROM
   1430  a395		       8e 02 9c 	      stx	IO_FINAL
   1431  a398		       58		      cli
   1432  a399		       60		      rts
   1433  a39a				   __TEST_RAM_E
   1434  a39a
   1435  a39a
   1436  a39a
   1437  a39a
   1438  a39a				   SHOW_IO
   1439  a39a							;Move Cursor
   1440  a39a		       a2 15		      ldx	#21	; Row
   1441  a39c		       a0 0d		      ldy	#13	; Column
   1442  a39e		       20 65 bf 	      jsr	SET_CURSOR
   1443  a3a1
   1444  a3a1		       ad 3c 03 	      lda	F_IO
   1445  a3a4		       4c d2 ff 	      jmp	BSOUT
   1446  a3a7
   1447  a3a7				   SHOW_WE
   1448  a3a7							;Move Cursor
   1449  a3a7		       a2 16		      ldx	#22	; Row
   1450  a3a9		       a0 0d		      ldy	#13	; Column
   1451  a3ab		       20 65 bf 	      jsr	SET_CURSOR
   1452  a3ae
   1453  a3ae		       ad 3d 03 	      lda	F_WE
   1454  a3b1		       4c d2 ff 	      jmp	BSOUT
   1455  a3b4
   1456  a3b4
   1457  a3b4							; ==============================================================
   1458  a3b4							; Define some common PETSCII codes
   1459  a3b4							; http://sta.c64.org/cbm64petkey.html
   1460  a3b4							; ==============================================================
   1461  a3b4
   1462  a3b4		       00 93	   CLRHOME    =	$93
   1463  a3b4		       00 13	   HOME       =	$13
   1464  a3b4		       00 12	   RVSON      =	$12
   1465  a3b4		       00 92	   RVSOFF     =	$92
   1466  a3b4		       00 0d	   CR	      =	$0D
   1467  a3b4		       00 90	   BLACK      =	$90
   1468  a3b4		       00 05	   WHITE      =	$05
   1469  a3b4		       00 1c	   RED	      =	$1C
   1470  a3b4		       00 1f	   BLUE       =	$1F
   1471  a3b4		       00 1e	   GREEN      =	$1E
   1472  a3b4		       00 9c	   PURPLE     =	$9C
   1473  a3b4		       00 9e	   YELLOW     =	$9E
   1474  a3b4		       00 8e	   FONT1      =	142	; BIG LETTERS & GRAFIC
   1475  a3b4		       00 0e	   FONT2      =	14	; BIG AND SMALL LETTERS
   1476  a3b4		       00 40	   AT	      =	$40
   1477  a3b4
   1478  a3b4
   1479  a3b4
   1480  a3b4							; ==============================================================
   1481  a3b4							; SUBMENU UTILITY
   1482  a3b4							; ==============================================================
   1483  a3b4				   UTIL_FLI
   1484  a3b4		       20 fc ac 	      jsr	FLASH_INFO
   1485  a3b7
   1486  a3b7				   UTIL_MENU  subroutine
   1487  a3b7		       20 58 a0 	      jsr	INIT_CART	; Screen Colors
   1488  a3ba		       a9 7b		      lda	#<UTILSCREEN
   1489  a3bc		       a0 72		      ldy	#>UTILSCREEN
   1490  a3be		       20 2c a1 	      jsr	STROUT_R
   1491  a3c1
   1492  a3c1							; Check keys
   1493  a3c1				   .KEYS
   1494  a3c1							;jsr SHOW_IO
   1495  a3c1							;jsr SHOW_WE
   1496  a3c1
   1497  a3c1		       20 e4 ff 	      jsr	GETIN
   1498  a3c4
   1499  a3c4
   1500  a3c4
   1501  a3c4				   .F1
   1502  a3c4		       c9 85		      cmp	#$85	;F1
   1503  a3c6		       d0 03		      bne	.F2
   1504  a3c8
   1505  a3c8		       4c 13 a9 	      jmp	CART_FLASHER
   1506  a3cb
   1507  a3cb
   1508  a3cb				   .F2
   1509  a3cb		       c9 89		      cmp	#$89	;F2
   1510  a3cd		       d0 03		      bne	F3_UT1
   1511  a3cf
   1512  a3cf		       4c a8 a8 	      jmp	FIRMW_FLASHER
   1513  a3d2
   1514  a3d2
   1515  a3d2				   F3_UT1
   1516  a3d2		       c9 86		      cmp	#$86	;F3
   1517  a3d4		       f0 de		      beq	UTIL_FLI
   1518  a3d6
   1519  a3d6				   .F4
   1520  a3d6							;  cmp #$8a  ;F4
   1521  a3d6							;  bne F5_UT1
   1522  a3d6
   1523  a3d6
   1524  a3d6				   .F5
   1525  a3d6		       c9 87		      cmp	#$87	;F5
   1526  a3d8		       d0 00		      bne	.F6
   1527  a3da
   1528  a3da
   1529  a3da				   .F6
   1530  a3da		       c9 8b		      cmp	#$8b	;F6
   1531  a3dc		       d0 00		      bne	.F7
   1532  a3de
   1533  a3de
   1534  a3de				   .F7
   1535  a3de		       c9 88		      cmp	#$88	;F7
   1536  a3e0		       d0 00		      bne	.F8
   1537  a3e2
   1538  a3e2
   1539  a3e2				   .F8
   1540  a3e2		       c9 8c		      cmp	#$8C
   1541  a3e4		       d0 db		      bne	.KEYS
   1542  a3e6		       4c d3 a0 	      jmp	SSCREEN
   1543  a3e9
   1544  a3e9
   1545  a3e9
   1546  a3e9
   1547  a3e9							; ========================================================================
   1548  a3e9							; DISK LOADER
   1549  a3e9							; Schaltet in den RAM Modus
   1550  a3e9							; Ladet die Loaderkonfig Datei (LOADER) in den BASIC Speicher
   1551  a3e9							; Baut eine String Zeigertabelle auf ab TBL_NAMES ($6)
   1552  a3e9							; Fhrt die Men Auswahl Prozedur aus
   1553  a3e9							; ========================================================================
   1554  a3e9
   1555  a3e9
   1556  a3e9
   1557  a3e9							;-------------- PRINT DLOADER SCREEN
   1558  a3e9				   DLOA_00    subroutine
   1559  a3e9		       20 be a5 	      jsr	MENU_SEL
   1560  a3ec		       90 03		      bcc	.01
   1561  a3ee		       20 3b a6 	      jsr	MESE_EXEC
   1562  a3f1				   .01
   1563  a3f1
   1564  a3f1				   DLOADER    subroutine
   1565  a3f1		       a9 91		      lda	#$91	; Patch von dabone, damit auf 24k umgeschaltet wird
   1566  a3f3		       20 b0 ae 	      jsr	SetVicMemConfig
   1567  a3f6		       20 58 a0 	      jsr	INIT_CART	; Screen Colors
   1568  a3f9		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   1569  a3fc		       93 9e 0e 12*	      dc.b	CLRHOME,YELLOW,FONT2,RVSON,"---- dISK lOADER  ----",CR,CR,0
   1570  a419
   1571  a419		       20 23 a4 	      jsr	DLOADER1
   1572  a41c		       e0 0d		      cpx	#13	;CR
   1573  a41e		       f0 c9		      beq	DLOA_00
   1574  a420		       4c d3 a0 	      jmp	SSCREEN
   1575  a423
   1576  a423
   1577  a423				   DLOADER1   subroutine
   1578  a423		       20 34 a0 	      jsr	COPYROM	; COPY FIRMWARE TO SRAM
   1579  a426		       b0 1d		      bcs	.02	; ==> RAM OK
   1580  a428
   1581  a428		       20 7d bf 	      jsr	SPAR_MSGBOX
   1582  a42b		       02 03 1c 72*	      dc.b	2, 3, RED, "ram eRROR at $a ...",0
   1583  a442				   .exit
   1584  a442		       a2 00		      ldx	#0
   1585  a444		       60		      rts
   1586  a445
   1587  a445							;lda #<MSG_RAMMERR
   1588  a445							;ldy #>MSG_RAMMERR
   1589  a445							;jmp MSG_BOX
   1590  a445
   1591  a445
   1592  a445				   .02
   1593  a445		       20 53 a4 	      jsr	DLOADER_INIT
   1594  a448		       b0 f8		      bcs	.exit
   1595  a44a
   1596  a44a		       20 a5 a7 	      jsr	BLD_TABLE
   1597  a44d		       20 d9 a4 	      jsr	MENU_HANDLER
   1598  a450		       b8		      clv
   1599  a451		       50 d0		      bvc	DLOADER1
   1600  a453
   1601  a453
   1602  a453							;-------------- LOAD LOADER FILE
   1603  a453				   DLOADER_INIT
   1604  a453		       20 73 a4 	      jsr	MENU_INIT
   1605  a456
   1606  a456							;lda #<MSG_LOAD
   1607  a456							;ldy #>MSG_LOAD
   1608  a456							;jsr STR_AT
   1609  a456		       20 72 bf 	      jsr	SPAR_PRINTSTRING_AT
   1610  a459		       01 03 05 4c*	      dc.b	1, 3, WHITE, "LOADING ...",0
   1611  a468
   1612  a468		       20 5a a8 	      jsr	LOAD_MENU
   1613  a46b		       08		      php
   1614  a46c		       a2 01		      ldx	#1
   1615  a46e		       20 56 bf 	      jsr	DEL_LINE
   1616  a471		       28		      plp
   1617  a472				   DLOADER_E
   1618  a472		       60		      rts
   1619  a473
   1620  a473
   1621  a473							;-------------- PRINT DLOADER SCREEN
   1622  a473				   MENU_INIT
   1623  a473		       a9 f0		      lda	#<MENUSCREEN
   1624  a475		       a0 72		      ldy	#>MENUSCREEN
   1625  a477		       20 2c a1 	      jsr	STROUT_R
   1626  a47a
   1627  a47a		       a9 05		      lda	#5
   1628  a47c		       85 08		      sta	FLGCOM
   1629  a47e		       a9 00		      lda	#0
   1630  a480		       8d 61 03 	      sta	DL_SLINIDX
   1631  a483		       a9 03		      lda	#DL_STARTLINE
   1632  a485		       8d 64 03 	      sta	DL_SEL
   1633  a488				   MEIN_E
   1634  a488		       60		      rts
   1635  a489
   1636  a489
   1637  a489							; ==============================================================
   1638  a489							; GET KEY / JOYSTICK
   1639  a489							; ==============================================================
   1640  a489
   1641  a489				   GETJOY
   1642  a489		       a5 a2		      lda	$a2
   1643  a48b		       cd 3f 03 	      cmp	F_JOYREP
   1644  a48e		       d0 41		      bne	GEJO_E
   1645  a490
   1646  a490		       18		      clc
   1647  a491		       69 04		      adc	#4
   1648  a493		       8d 3f 03 	      sta	F_JOYREP
   1649  a496
   1650  a496		       78		      sei
   1651  a497		       ad 1f 91 	      lda	VIA1 +$f
   1652  a49a		       29 3c		      and	#$3c
   1653  a49c		       a2 7f		      ldx	#127
   1654  a49e		       8e 22 91 	      stx	VIA2 +$2
   1655  a4a1		       ae 20 91 	      ldx	VIA2
   1656  a4a4		       30 02		      bmi	GEJO_1
   1657  a4a6		       09 02		      ora	#2
   1658  a4a8				   GEJO_1
   1659  a4a8		       a2 ff		      ldx	#255
   1660  a4aa		       8e 22 91 	      stx	VIA2 +$2
   1661  a4ad		       58		      cli
   1662  a4ae		       a8		      tay
   1663  a4af		       a2 11		      ldx	#17
   1664  a4b1		       29 08		      and	#8	;down
   1665  a4b3		       f0 1f		      beq	GEJO_9
   1666  a4b5		       98		      tya
   1667  a4b6		       a2 91		      ldx	#145
   1668  a4b8		       29 04		      and	#4	;up
   1669  a4ba		       f0 18		      beq	GEJO_9
   1670  a4bc		       98		      tya
   1671  a4bd		       a2 0d		      ldx	#13
   1672  a4bf		       29 20		      and	#32	;fire
   1673  a4c1		       f0 11		      beq	GEJO_9
   1674  a4c3		       98		      tya
   1675  a4c4		       a2 1d		      ldx	#29
   1676  a4c6		       29 02		      and	#2	;right
   1677  a4c8		       f0 0a		      beq	GEJO_9
   1678  a4ca		       98		      tya
   1679  a4cb		       a2 9d		      ldx	#157
   1680  a4cd		       29 10		      and	#16	;left
   1681  a4cf		       f0 03		      beq	GEJO_9
   1682  a4d1				   GEJO_E
   1683  a4d1		       4c e4 ff 	      jmp	GETIN
   1684  a4d4
   1685  a4d4				   GEJO_9
   1686  a4d4		       8a		      txa
   1687  a4d5		       60		      rts
   1688  a4d6
   1689  a4d6
   1690  a4d6							; ==============================================================
   1691  a4d6							; MENU HANDLER
   1692  a4d6							; ==============================================================
   1693  a4d6
   1694  a4d6		       60 00	   TBL_NAMES  =	$6000
   1695  a4d6
   1696  a4d6		       60 00	   TBL_NAMES_CNT =	TBL_NAMES
   1697  a4d6
   1698  a4d6
   1699  a4d6		       00 d6	   DL_CURLIN  =	C_ROW	;TEMP. AKT LINE TO DRAW
   1700  a4d6
   1701  a4d6		       03 41	   TBL_CLBUF  =	F_END	;CATALOG BUFFER (CATALOG ENTRY)
   1702  a4d6
   1703  a4d6		       03 61	   TBL_DATA   =	F_END + CLBUF_END
   1704  a4d6		       03 61	   DL_SLINIDX =	TBL_DATA	;INDEX OF FIRST LINE
   1705  a4d6		       03 62	   DL_CURIDX  =	TBL_DATA +1	;TEMP. AKT. INDEX
   1706  a4d6		       03 63	   DL_CNT     =	TBL_DATA +2	;TEMP. COUNTER
   1707  a4d6		       03 64	   DL_SEL     =	TBL_DATA +3	;selected menu line
   1708  a4d6		       03 65	   DL_LINCNT  =	TBL_DATA +4	;count of lines
   1709  a4d6		       03 66	   DL_LASTLIN =	TBL_DATA +5	;last line
   1710  a4d6		       03 67	   DL_CNTLDR  =	TBL_DATA +6	;LOAD FILES COUNT
   1711  a4d6		       03 68	   DL_CNTLDR2 =	TBL_DATA +7	;LOAD FILES COUNT
   1712  a4d6		       03 69	   DL_IOBASE  =	TBL_DATA +8	;BASE FOR IO2 REGISTER 1 AND 2
   1713  a4d6							;DL_RUNADR  = TBL_DATA +10		 ;RUN ADDRESS: 0=RUN BASIC, 1=RESET, 2=invalid, n=SYS
   1714  a4d6
   1715  a4d6
   1716  a4d6							;FILE HEADER (LOAD BUFFER)
   1717  a4d6		       03 6d	   DL_LDBUF   =	TBL_DATA +12	;LOAD BUFFER - bis zu 4 x DATEI,OPTIONS
   1718  a4d6		       00 00	   LDBUF_LEN  =	0	;OFFSET FILENAME LENGTH
   1719  a4d6		       00 01	   LDBUF_FN   =	1	;OFFSET FILENAME
   1720  a4d6		       00 11	   LDBUF_TYP  =	17	;OFFSET TYPE: B=BASIC, P=PROGRAM, C=CARTRIDGE
   1721  a4d6		       00 12	   LDBUF_LAD  =	18	;OFFSET LOAD ADRESS
   1722  a4d6		       00 14	   LDBUF_FLEN =	20	;OFFSET FILE LENGTH
   1723  a4d6		       00 16	   LDBUF_END  =	22	;STRUCT LDBUF LEN
   1724  a4d6
   1725  a4d6
   1726  a4d6							;CATALOG ENTRY
   1727  a4d6		       00 00	   CLBUF_LEN  =	0	;OFFSET ENTRY NAME LENGTH
   1728  a4d6		       00 01	   CLBUF_NAM  =	1	;OFFSET ENTRY NAME
   1729  a4d6		       00 15	   CLBUF_CNT  =	21	;OFFSET FILES COUNT
   1730  a4d6		       00 16	   CLBUF_PLEN =	22	;OFFSET PACKAGE LENGTH
   1731  a4d6		       00 18	   CLBUF_SADR =	24	;OFFSET START ADDRESS
   1732  a4d6		       00 1a	   CLBUF_SBANK =	26	;OFFSET START BANK
   1733  a4d6		       00 1b	   CLBUF_EADR =	27	;OFFSET END ADDRESS
   1734  a4d6		       00 1d	   CLBUF_EBANK =	29	;OFFSET END BANK
   1735  a4d6		       00 20	   CLBUF_END  =	32	;STRUCT LDBUF LEN
   1736  a4d6
   1737  a4d6
   1738  a4d6							;CLOADER PACKAGE HEADER
   1739  a4d6		       00 00	   CLHDR_CMD  =	0	;OFFSET START COMMAND (SYS/RES/RUN)
   1740  a4d6		       00 01	   CLHDR_IO1  =	1	;OFFSET IO REGISTER 1
   1741  a4d6		       00 02	   CLHDR_IO2  =	2	;OFFSET IO REGISTER 2
   1742  a4d6		       00 03	   CLHDR_ADR  =	3	;OFFSET START ADDRESS
   1743  a4d6		       00 05	   CLHDR_END  =	5	;STRUCT LDHDR LEN
   1744  a4d6
   1745  a4d6
   1746  a4d6
   1747  a4d6
   1748  a4d6
   1749  a4d6
   1750  a4d6
   1751  a4d6		       00 03	   DL_STARTLINE =	3	;start line
   1752  a4d6		       00 11	   DL_LINES   =	17	;number of lines
   1753  a4d6
   1754  a4d6
   1755  a4d6
   1756  a4d6							;-------------- RETURN TO MAIN SCREEN
   1757  a4d6				   MEHA_E
   1758  a4d6		       68		      pla
   1759  a4d7		       68		      pla
   1760  a4d8		       60		      rts
   1761  a4d9
   1762  a4d9
   1763  a4d9							;-------------- HANDLE MENU KEY INPUT
   1764  a4d9				   MENU_HANDLER
   1765  a4d9		       20 11 a7 	      jsr	LIST_PAGE
   1766  a4dc		       20 de a6 	      jsr	LIST_MARKER
   1767  a4df
   1768  a4df				   MEHA_1
   1769  a4df		       a9 00		      lda	#0
   1770  a4e1		       85 c6		      sta	KEYANZ
   1771  a4e3				   MEHA_5
   1772  a4e3		       20 89 a4 	      jsr	GETJOY
   1773  a4e6		       aa		      tax
   1774  a4e7
   1775  a4e7		       c9 00		      cmp	#$00
   1776  a4e9		       f0 f8		      beq	MEHA_5
   1777  a4eb
   1778  a4eb		       c9 8c		      cmp	#$8C	;F8
   1779  a4ed		       f0 e7		      beq	MEHA_E
   1780  a4ef
   1781  a4ef		       c9 0d		      cmp	#13	;CR
   1782  a4f1		       f0 e3		      beq	MEHA_E
   1783  a4f3
   1784  a4f3		       20 f9 a4 	      jsr	MEHA_8
   1785  a4f6		       b8		      clv
   1786  a4f7		       50 e6		      bvc	MEHA_1
   1787  a4f9
   1788  a4f9
   1789  a4f9				   MEHA_8
   1790  a4f9		       c9 11		      cmp	#17	;CURSOR DOWN
   1791  a4fb		       f0 5c		      beq	MARKER_DOWN
   1792  a4fd
   1793  a4fd		       c9 91		      cmp	#145	;CURSOR up
   1794  a4ff		       f0 48		      beq	MARKER_UP
   1795  a501
   1796  a501		       c9 85		      cmp	#$85	;F1
   1797  a503		       f0 0d		      beq	PAGEUP
   1798  a505
   1799  a505		       c9 86		      cmp	#$86	;F3
   1800  a507		       f0 21		      beq	PAGEDWN
   1801  a509
   1802  a509		       c9 87		      cmp	#$87	;F5
   1803  a50b		       f0 2d		      beq	MARKER_FIRST
   1804  a50d
   1805  a50d		       c9 88		      cmp	#$88	;F7
   1806  a50f		       f0 30		      beq	MARKER_LAST
   1807  a511		       60		      rts
   1808  a512
   1809  a512
   1810  a512							;--------------------
   1811  a512				   PAGEUP
   1812  a512		       ad 61 03 	      lda	DL_SLINIDX
   1813  a515		       f0 11		      beq	PAUP_E
   1814  a517		       38		      sec
   1815  a518		       e9 11		      sbc	#DL_LINES
   1816  a51a				   PAUP_1
   1817  a51a		       8d 61 03 	      sta	DL_SLINIDX
   1818  a51d		       20 11 a7 	      jsr	LIST_PAGE
   1819  a520
   1820  a520		       ae 64 03 	      ldx	DL_SEL
   1821  a523		       ec 66 03 	      cpx	DL_LASTLIN
   1822  a526		       b0 31		      bcs	MARKER_DOWN
   1823  a528				   PAUP_E
   1824  a528		       e8		      inx
   1825  a529		       60		      rts
   1826  a52a
   1827  a52a
   1828  a52a				   PAGEDWN
   1829  a52a		       ad 61 03 	      lda	DL_SLINIDX
   1830  a52d		       18		      clc
   1831  a52e		       69 11		      adc	#DL_LINES
   1832  a530		       b0 05		      bcs	PADW_E
   1833  a532		       cd 00 60 	      cmp	TBL_NAMES_CNT
   1834  a535		       90 e3		      bcc	PAUP_1
   1835  a537				   PADW_E
   1836  a537		       a2 01		      ldx	#1
   1837  a539		       60		      rts
   1838  a53a
   1839  a53a
   1840  a53a				   MARKER_FIRST
   1841  a53a		       20 fd a6 	      jsr	HIDE_MARKER
   1842  a53d		       a2 03		      ldx	#(DL_STARTLINE)
   1843  a53f		       d0 26		      bne	SET_MARKER
   1844  a541
   1845  a541				   MARKER_LAST
   1846  a541		       20 fd a6 	      jsr	HIDE_MARKER
   1847  a544		       ae 66 03 	      ldx	DL_LASTLIN
   1848  a547		       d0 1e		      bne	SET_MARKER
   1849  a549
   1850  a549				   MARKER_UP
   1851  a549		       20 fd a6 	      jsr	HIDE_MARKER
   1852  a54c		       ae 64 03 	      ldx	DL_SEL
   1853  a54f		       ca		      dex
   1854  a550		       e0 02		      cpx	#DL_STARTLINE-1
   1855  a552		       d0 03		      bne	MAUP_2
   1856  a554		       ae 66 03 	      ldx	DL_LASTLIN
   1857  a557				   MAUP_2
   1858  a557		       d0 0e		      bne	SET_MARKER
   1859  a559
   1860  a559				   MARKER_DOWN
   1861  a559		       20 fd a6 	      jsr	HIDE_MARKER
   1862  a55c		       ae 64 03 	      ldx	DL_SEL
   1863  a55f		       ec 66 03 	      cpx	DL_LASTLIN
   1864  a562		       90 02		      bcc	MADO_2
   1865  a564				   MADO_0
   1866  a564		       a2 02		      ldx	#(DL_STARTLINE-1)
   1867  a566				   MADO_2
   1868  a566		       e8		      inx
   1869  a567
   1870  a567				   SET_MARKER
   1871  a567		       8e 64 03 	      stx	DL_SEL
   1872  a56a		       4c de a6 	      jmp	LIST_MARKER
   1873  a56d
   1874  a56d
   1875  a56d
   1876  a56d
   1877  a56d							; ========================================================================
   1878  a56d							; DISK LOADER - SELEKTIERTEN MENPUNKT AUSFHREN
   1879  a56d							; Sucht den gewhlten Men Eintrag im BASIC Text
   1880  a56d							; Interpretiert die Befehle im BASIC Text
   1881  a56d							; Datei Ladebefehle kommen in einen Buffer (DL_LDBUF) fr den LOADER
   1882  a56d							; Diskbefehle werden sofort ausgefhrt
   1883  a56d							; Folgebefehle werden interpretiert (RAM Konfig, IO Konfig, Start Modus)
   1884  a56d							; ========================================================================
   1885  a56d
   1886  a56d							;----MENU PUNKT GEWHLT!
   1887  a56d		       00 7a	   BASPTR     =	$7a
   1888  a56d
   1889  a56d
   1890  a56d
   1891  a56d
   1892  a56d							;INIT CATALOG BUFFER
   1893  a56d				   INIT_CATALOG subroutine
   1894  a56d		       a9 00		      lda	#0
   1895  a56f		       a0 1f		      ldy	#CLBUF_END -1
   1896  a571				   .00
   1897  a571		       99 41 03 	      sta	TBL_CLBUF,y
   1898  a574		       88		      dey
   1899  a575		       10 fa		      bpl	.00
   1900  a577
   1901  a577		       a2 00		      ldx	#0
   1902  a579
   1903  a579							;COPY ENTRY STRING
   1904  a579		       a0 05		      ldy	#5
   1905  a57b				   .1
   1906  a57b		       b1 24		      lda	(PT2),y
   1907  a57d		       f0 0d		      beq	.E
   1908  a57f		       c9 22		      cmp	#34
   1909  a581		       f0 09		      beq	.E
   1910  a583
   1911  a583		       9d 42 03 	      sta	TBL_CLBUF+1,x	;
   1912  a586		       e8		      inx
   1913  a587		       c8		      iny
   1914  a588		       e0 14		      cpx	#(CLBUF_CNT - CLBUF_NAM)	;MAX. LENGTH
   1915  a58a		       d0 ef		      bne	.1
   1916  a58c				   .E
   1917  a58c		       8e 41 03 	      stx	TBL_CLBUF	;ENTRY LENGTH
   1918  a58f		       60		      rts
   1919  a590
   1920  a590
   1921  a590
   1922  a590							;SET PTR TO LOADER TAB
   1923  a590				   SET_LDBUF  subroutine
   1924  a590		       a9 6d		      lda	#<(DL_LDBUF)
   1925  a592		       a0 03		      ldy	#>(DL_LDBUF)
   1926  a594		       85 22		      sta	PT1
   1927  a596		       84 23		      sty	PT1 +1
   1928  a598		       60		      rts
   1929  a599
   1930  a599
   1931  a599
   1932  a599
   1933  a599
   1934  a599							;PROCESS SELECTED MENU ENTRY
   1935  a599				   MENU_SEL_INIT subroutine
   1936  a599		       a9 00		      lda	#0
   1937  a59b		       8d 93 02 	      sta	BIP_CMD
   1938  a59e		       8d 67 03 	      sta	DL_CNTLDR
   1939  a5a1		       20 77 a6 	      jsr	INV_ADDR
   1940  a5a4
   1941  a5a4		       a9 80		      lda	#FEMOD_RAM_1	;RAM SELECT
   1942  a5a6		       8d 69 03 	      sta	DL_IOBASE
   1943  a5a9		       a9 00		      lda	#0	;ALL RESOURCES
   1944  a5ab		       8d 6a 03 	      sta	DL_IOBASE +1
   1945  a5ae
   1946  a5ae		       ad 64 03 	      lda	DL_SEL
   1947  a5b1		       38		      sec
   1948  a5b2		       e9 03		      sbc	#DL_STARTLINE
   1949  a5b4		       b0 01		      bcs	.1
   1950  a5b6		       60		      rts
   1951  a5b7				   .1
   1952  a5b7		       18		      clc
   1953  a5b8		       6d 61 03 	      adc	DL_SLINIDX
   1954  a5bb		       4c 83 a7 	      jmp	TBL_PTR	;SET PT2 TO ENTRY STRING
   1955  a5be
   1956  a5be
   1957  a5be							;PROCESS SELECTED MENU ENTRY
   1958  a5be				   MENU_SEL   subroutine
   1959  a5be		       ad 65 03 	      lda	DL_LINCNT
   1960  a5c1		       d0 02		      bne	.0
   1961  a5c3		       18		      clc
   1962  a5c4		       60		      rts
   1963  a5c5
   1964  a5c5				   .0
   1965  a5c5		       20 99 a5 	      jsr	MENU_SEL_INIT	;SET PT2 TO ENTRY STRING
   1966  a5c8		       b0 61		      bcs	.EE
   1967  a5ca
   1968  a5ca		       20 6d a5 	      jsr	INIT_CATALOG	;INITIALIZE CATALOG BUFFER
   1969  a5cd		       20 90 a5 	      jsr	SET_LDBUF	;
   1970  a5d0
   1971  a5d0				   .nextline
   1972  a5d0		       20 ce a6 	      jsr	NEXTLINE
   1973  a5d3		       f0 58		      beq	.E
   1974  a5d5		       a0 04		      ldy	#4
   1975  a5d7				   .5
   1976  a5d7		       b1 24		      lda	(PT2),y
   1977  a5d9		       f0 52		      beq	.E	;CODE ENDE
   1978  a5db		       c9 22		      cmp	#34	;NEXT MENU ENTRY
   1979  a5dd		       f0 4e		      beq	.E
   1980  a5df
   1981  a5df		       c9 aa		      cmp	#$aa	;"+" - LOADER ANWEISUNG
   1982  a5e1		       d0 ed		      bne	.nextline
   1983  a5e3
   1984  a5e3		       98		      tya
   1985  a5e4		       38		      sec
   1986  a5e5		       65 24		      adc	PT2
   1987  a5e7		       85 7a		      sta	CHRPTR
   1988  a5e9		       a5 25		      lda	PT2 +1
   1989  a5eb		       69 00		      adc	#0
   1990  a5ed		       85 7b		      sta	CHRPTR +1
   1991  a5ef
   1992  a5ef				   .do_cmd
   1993  a5ef		       20 79 00 	      jsr	CHRGOT
   1994  a5f2		       d0 08		      bne	.2b
   1995  a5f4				   .2c
   1996  a5f4		       aa		      tax
   1997  a5f5		       f0 d9		      beq	.nextline
   1998  a5f7
   1999  a5f7		       20 73 00 	      jsr	CHRGET	;SKIP ":"
   2000  a5fa		       f0 f8		      beq	.2c
   2001  a5fc				   .2b
   2002  a5fc		       20 02 a6 	      jsr	.do_line
   2003  a5ff		       4c ef a5 	      jmp	.do_cmd
   2004  a602
   2005  a602							;INTERPRET COMMAND
   2006  a602				   .do_line
   2007  a602		       c9 22		      cmp	#34	;+"FILENAME"
   2008  a604		       d0 03		      bne	.6
   2009  a606		       4c e9 a7 	      jmp	SEL_LOAD
   2010  a609
   2011  a609				   .6
   2012  a609		       c9 40		      cmp	#"@"	;+@"diskcmd"
   2013  a60b		       d0 03		      bne	.7
   2014  a60d		       4c 97 b1 	      jmp	DO_DISKCMD
   2015  a610
   2016  a610				   .7
   2017  a610		       20 ab b8 	      jsr	TOKENIZER
   2018  a613		       d0 03		      bne	.8
   2019  a615		       4c e8 b8 	      jmp	NEXT_STATEMENT
   2020  a618
   2021  a618				   .8
   2022  a618		       e0 01		      cpx	#TOK_NOIO	;NOIO
   2023  a61a		       f0 68		      beq	SEL_NOIO
   2024  a61c		       e0 02		      cpx	#TOK_BLKP	;BLOCK WRITE PROTECT
   2025  a61e		       f0 6d		      beq	SEL_BLOCK1
   2026  a620		       e0 03		      cpx	#TOK_BLKD	;BLOCK DISABLE
   2027  a622		       f0 6d		      beq	SEL_BLOCK2
   2028  a624
   2029  a624		       8e 93 02 	      stx	BIP_CMD
   2030  a627							;cpx #TOK_RELO 			;RELOAD
   2031  a627							;beq SEL_RELOAD
   2032  a627							;cpx #TOK_RUN				;RUN
   2033  a627							;beq SEL_RUN
   2034  a627		       e0 07		      cpx	#TOK_SYS	;SYS
   2035  a629		       f0 47		      beq	SEL_SYS
   2036  a62b							;cpx #TOK_RES				;RESET
   2037  a62b							;beq SEL_RESET
   2038  a62b				   .EE
   2039  a62b		       18		      clc
   2040  a62c		       60		      rts
   2041  a62d
   2042  a62d				   .E
   2043  a62d				   SET_BIP_IOBASE SUBROUTINE
   2044  a62d		       ad 6a 03 	      lda	DL_IOBASE +1
   2045  a630		       8d 95 02 	      sta	BIP_IOBASE +1
   2046  a633		       ad 69 03 	      lda	DL_IOBASE
   2047  a636		       8d 94 02 	      sta	BIP_IOBASE
   2048  a639		       38		      sec
   2049  a63a		       60		      rts
   2050  a63b
   2051  a63b
   2052  a63b
   2053  a63b
   2054  a63b							; ========================================================================
   2055  a63b							; DISK LOADER - SELEKTIERTEN MENPUNKT AUSFHREN
   2056  a63b							; Alle Zeilen mit Anweisungen sind bereits verarbeitet
   2057  a63b							; + Anweisungen auf den Stack
   2058  a63b							; + Dateien laden
   2059  a63b							; + Anweisungen vom Stack ausfhren
   2060  a63b							; ========================================================================
   2061  a63b
   2062  a63b		       02 93	   BIP_CMD    =	$0293	;COMMAND BYTE
   2063  a63b		       02 94	   BIP_IOBASE =	BIP_CMD +1	;BASE FOR IO2 REGISTER 1 AND 2
   2064  a63b		       02 96	   BIP_RUNADR =	BIP_CMD +3	;RUN ADDRESS: 0=RUN BASIC, 1=RESET, 2=invalid, n=SYS
   2065  a63b
   2066  a63b
   2067  a63b							;EXECUTE DLOADER BUFFER
   2068  a63b				   MESE_EXEC  subroutine
   2069  a63b		       ad 67 03 	      lda	DL_CNTLDR
   2070  a63e		       f0 31		      beq	.RELOAD
   2071  a640		       ae 93 02 	      ldx	BIP_CMD
   2072  a643		       f0 2c		      beq	.RELOAD
   2073  a645		       e0 05		      cpx	#TOK_RELO	;RELOAD
   2074  a647		       f0 28		      beq	.RELOAD
   2075  a649
   2076  a649		       20 c5 b6 	      jsr	CLROUT
   2077  a64c		       20 a7 ae 	      jsr	SET_MEM_CONFIG
   2078  a64f		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message (e404)
   2079  a652		       20 c9 b6 	      jsr	CROUT
   2080  a655
   2081  a655		       a9 40		      lda	#FEMOD_ROM
   2082  a657		       8d 02 9c 	      sta	IO_FINAL	; EEPROM!
   2083  a65a		       20 55 a8 	      jsr	DO_LOADER	; LOAD FILES
   2084  a65d		       b0 0f		      bcs	.err
   2085  a65f
   2086  a65f				   EXEC_PACKAGE
   2087  a65f		       ae 93 02 	      ldx	BIP_CMD
   2088  a662		       e0 04		      cpx	#TOK_RES	;RESET
   2089  a664		       f0 30		      beq	LOCO_RES
   2090  a666		       e0 06		      cpx	#TOK_RUN	;RUN
   2091  a668		       f0 3c		      beq	LOCO_RUN
   2092  a66a		       e0 07		      cpx	#TOK_SYS	;SYS
   2093  a66c		       f0 42		      beq	LOCO_SYS
   2094  a66e				   .err
   2095  a66e		       4c f1 a3 	      jmp	DLOADER
   2096  a671
   2097  a671				   .RELOAD
   2098  a671		       60		      rts
   2099  a672
   2100  a672
   2101  a672							;------------
   2102  a672				   SEL_SYS    subroutine
   2103  a672		       20 94 b7 	      jsr	GETADR
   2104  a675		       b0 06		      bcs	.5
   2105  a677				   INV_ADDR
   2106  a677		       a9 00		      lda	#0
   2107  a679		       aa		      tax
   2108  a67a		       8d 93 02 	      sta	BIP_CMD
   2109  a67d				   .5
   2110  a67d		       8e 96 02 	      stx	BIP_RUNADR
   2111  a680		       8d 97 02 	      sta	BIP_RUNADR +1
   2112  a683		       60		      rts
   2113  a684
   2114  a684
   2115  a684							;------------
   2116  a684				   SEL_NOIO   subroutine
   2117  a684		       a9 80		      lda	#$80	;RAM, NO-IO
   2118  a686		       0d 6a 03 	      ora	DL_IOBASE +1
   2119  a689		       8d 6a 03 	      sta	DL_IOBASE +1
   2120  a68c		       60		      rts
   2121  a68d
   2122  a68d
   2123  a68d
   2124  a68d
   2125  a68d							;------------ BLOCK WRITE PROTECT
   2126  a68d				   SEL_BLOCK1 subroutine
   2127  a68d		       a0 00		      ldy	#0
   2128  a68f		       f0 02		      beq	.2a
   2129  a691
   2130  a691
   2131  a691							;------------ BLOCK DISABLE
   2132  a691				   SEL_BLOCK2
   2133  a691		       a0 01		      ldy	#1
   2134  a693				   .2a
   2135  a693		       4c 86 b2 	      jmp	SEL_BLOCK_P
   2136  a696
   2137  a696
   2138  a696							;------------
   2139  a696				   LOCO_RES   subroutine
   2140  a696		       a9 7f		      lda	#<MSG_RES
   2141  a698		       a0 bb		      ldy	#>MSG_RES
   2142  a69a		       20 31 bf 	      jsr	STROUT
   2143  a69d
   2144  a69d		       ad 94 02 	      lda	BIP_IOBASE
   2145  a6a0		       ae 95 02 	      ldx	BIP_IOBASE +1
   2146  a6a3		       4c ee b8 	      jmp	RESET_SYSTEM
   2147  a6a6
   2148  a6a6							;------------
   2149  a6a6				   LOCO_RUN   subroutine
   2150  a6a6		       a9 99		      lda	#<MSG_RUN
   2151  a6a8		       a0 a8		      ldy	#>MSG_RUN
   2152  a6aa		       20 31 bf 	      jsr	STROUT
   2153  a6ad		       4c 12 a3 	      jmp	RUNBASIC
   2154  a6b0
   2155  a6b0							;------------
   2156  a6b0				   LOCO_SYS   subroutine
   2157  a6b0		       a9 95		      lda	#<MSG_SYS
   2158  a6b2		       a0 a8		      ldy	#>MSG_SYS
   2159  a6b4		       20 31 bf 	      jsr	STROUT
   2160  a6b7		       a9 20		      lda	#32
   2161  a6b9		       20 d2 ff 	      jsr	BSOUT
   2162  a6bc		       ae 96 02 	      ldx	BIP_RUNADR
   2163  a6bf		       ad 97 02 	      lda	BIP_RUNADR +1
   2164  a6c2		       20 3c b8 	      jsr	HEXOUT
   2165  a6c5
   2166  a6c5		       ae 96 02 	      ldx	BIP_RUNADR
   2167  a6c8		       ac 97 02 	      ldy	BIP_RUNADR +1
   2168  a6cb
   2169  a6cb		       4c 35 a3 	      jmp	SYS_XY
   2170  a6ce
   2171  a6ce
   2172  a6ce
   2173  a6ce							; ==============================================================
   2174  a6ce							; SUBS
   2175  a6ce							; ==============================================================
   2176  a6ce
   2177  a6ce
   2178  a6ce
   2179  a6ce				   NEXTLINE   subroutine
   2180  a6ce		       a0 01		      ldy	#1
   2181  a6d0		       b1 24		      lda	(PT2),y
   2182  a6d2		       f0 09		      beq	.E
   2183  a6d4		       aa		      tax
   2184  a6d5		       88		      dey
   2185  a6d6		       b1 24		      lda	(PT2),y
   2186  a6d8		       85 24		      sta	PT2
   2187  a6da		       86 25		      stx	PT2 +1
   2188  a6dc		       8a		      txa		;RESET Z
   2189  a6dd				   .E
   2190  a6dd		       60		      rts
   2191  a6de
   2192  a6de
   2193  a6de							;----PRINT MARKER
   2194  a6de				   LIST_MARKER subroutine
   2195  a6de		       ad 65 03 	      lda	DL_LINCNT
   2196  a6e1		       d0 01		      bne	LIMA_1
   2197  a6e3		       60		      rts
   2198  a6e4
   2199  a6e4				   LIMA_1
   2200  a6e4		       a9 9e		      lda	#YELLOW
   2201  a6e6		       20 d1 b6 	      jsr	CHROUT
   2202  a6e9		       ae 64 03 	      ldx	DL_SEL
   2203  a6ec		       a0 00		      ldy	#0
   2204  a6ee		       20 65 bf 	      jsr	SET_CURSOR
   2205  a6f1		       a9 3e		      lda	#62	;">"
   2206  a6f3		       20 14 b7 	      jsr	PUTCHR
   2207  a6f6		       a9 3c		      lda	#60	;"<"
   2208  a6f8		       a0 15		      ldy	#$15
   2209  a6fa		       4c 1b b7 	      jmp	PUTCHR3
   2210  a6fd
   2211  a6fd				   HIDE_MARKER subroutine
   2212  a6fd		       ae 64 03 	      ldx	DL_SEL
   2213  a700		       a0 00		      ldy	#0
   2214  a702		       20 65 bf 	      jsr	SET_CURSOR
   2215  a705		       a9 20		      lda	#32
   2216  a707		       20 14 b7 	      jsr	PUTCHR
   2217  a70a		       a0 15		      ldy	#$15
   2218  a70c		       a9 20		      lda	#32
   2219  a70e		       4c 1b b7 	      jmp	PUTCHR3
   2220  a711
   2221  a711
   2222  a711
   2223  a711
   2224  a711
   2225  a711
   2226  a711							;----LIST PAGE
   2227  a711				   LIST_PAGE  subroutine
   2228  a711		       a9 00		      lda	#0
   2229  a713		       8d 65 03 	      sta	DL_LINCNT
   2230  a716		       a9 03		      lda	#DL_STARTLINE
   2231  a718		       85 d6		      sta	DL_CURLIN
   2232  a71a		       a9 11		      lda	#DL_LINES
   2233  a71c		       8d 63 03 	      sta	DL_CNT
   2234  a71f
   2235  a71f		       ad 61 03 	      lda	DL_SLINIDX
   2236  a722		       8d 62 03 	      sta	DL_CURIDX
   2237  a725
   2238  a725				   LIPA_2
   2239  a725		       a6 d6		      ldx	DL_CURLIN
   2240  a727		       a0 01		      ldy	#1
   2241  a729		       20 65 bf 	      jsr	SET_CURSOR
   2242  a72c		       20 b2 ea 	      jsr	$eab2	;zeiger in color RAM
   2243  a72f
   2244  a72f		       a9 05		      lda	#WHITE
   2245  a731		       20 d1 b6 	      jsr	CHROUT
   2246  a734
   2247  a734		       ad 62 03 	      lda	DL_CURIDX
   2248  a737		       20 4e a7 	      jsr	LIST_LINE	;LIST LINE (AC)
   2249  a73a		       e6 d6		      inc	DL_CURLIN
   2250  a73c		       ee 62 03 	      inc	DL_CURIDX
   2251  a73f		       ce 63 03 	      dec	DL_CNT
   2252  a742		       d0 e1		      bne	LIPA_2
   2253  a744
   2254  a744		       ad 65 03 	      lda	DL_LINCNT
   2255  a747		       18		      clc
   2256  a748		       69 02		      adc	#DL_STARTLINE -1
   2257  a74a		       8d 66 03 	      sta	DL_LASTLIN
   2258  a74d		       60		      rts
   2259  a74e
   2260  a74e
   2261  a74e
   2262  a74e							;----LIST LINE. AC=TAB ENTRY
   2263  a74e				   LIST_LINE  subroutine
   2264  a74e		       20 83 a7 	      jsr	TBL_PTR	;SET PT2 TO ENTRY STRING
   2265  a751		       b0 24		      bcs	.E
   2266  a753
   2267  a753		       ee 65 03 	      inc	DL_LINCNT
   2268  a756							;ldy #5
   2269  a756		       a4 08		      ldy	FLGCOM
   2270  a758				   .1
   2271  a758		       b1 24		      lda	(PT2),y
   2272  a75a		       f0 1b		      beq	.E
   2273  a75c		       c9 22		      cmp	#34
   2274  a75e		       f0 17		      beq	.E
   2275  a760							;jsr CHROUT
   2276  a760		       20 23 b7 	      jsr	CONVCHR
   2277  a763		       90 0f		      bcc	.5
   2278  a765				   .3
   2279  a765		       84 d7		      sty	C_CHR
   2280  a767		       20 19 b7 	      jsr	PUTCHR2
   2281  a76a		       a5 d3		      lda	C_COL
   2282  a76c		       c9 15		      cmp	#$15
   2283  a76e		       f0 12		      beq	.EE
   2284  a770		       e6 d3		      inc	C_COL
   2285  a772		       a4 d7		      ldy	C_CHR
   2286  a774				   .5
   2287  a774		       c8		      iny
   2288  a775		       d0 e1		      bne	.1
   2289  a777				   .E
   2290  a777		       a9 20		      lda	#32
   2291  a779		       a4 d3		      ldy	$d3
   2292  a77b				   .E2
   2293  a77b		       91 d1		      sta	(C_LINE),y
   2294  a77d		       c8		      iny
   2295  a77e		       c0 15		      cpy	#$15
   2296  a780		       d0 f9		      bne	.E2
   2297  a782				   .EE
   2298  a782		       60		      rts
   2299  a783
   2300  a783
   2301  a783							;----OFFSET (AC) --> TAB POINTER
   2302  a783							; :: SET PT1 TO MENU ENTRY TABLE
   2303  a783							; :: SET PT2 TO MENU ENTRY STRING
   2304  a783				   TBL_PTR    subroutine
   2305  a783		       cd 00 60 	      cmp	TBL_NAMES	;NUMBER OF ENTRIES
   2306  a786		       b0 1c		      bcs	.exit
   2307  a788
   2308  a788		       a0 60		      ldy	#>(TBL_NAMES+1)
   2309  a78a		       0a		      asl		;*2
   2310  a78b		       90 02		      bcc	.1
   2311  a78d		       c8		      iny
   2312  a78e		       18		      clc
   2313  a78f				   .1
   2314  a78f		       69 01		      adc	#<(TBL_NAMES+1)
   2315  a791		       85 22		      sta	PT1	;ADDR LO - ENTRY
   2316  a793		       90 01		      bcc	.2
   2317  a795		       c8		      iny
   2318  a796				   .2
   2319  a796		       84 23		      sty	PT1 +1	;ADDR HI - ENTRY
   2320  a798
   2321  a798		       a0 01		      ldy	#1
   2322  a79a		       b1 22		      lda	(PT1),y
   2323  a79c		       85 25		      sta	PT2 +1	;ADDR LO - ENTRY STRING
   2324  a79e		       88		      dey
   2325  a79f		       b1 22		      lda	(PT1),y
   2326  a7a1		       85 24		      sta	PT2	;ADDR HI - ENTRY STRING
   2327  a7a3
   2328  a7a3		       18		      clc
   2329  a7a4				   .exit
   2330  a7a4		       60		      rts
   2331  a7a5
   2332  a7a5
   2333  a7a5							;----BUILD NAME TABLE FROM BASIC TEXT
   2334  a7a5				   BLD_TABLE  subroutine
   2335  a7a5		       20 db a7 	      jsr	BLD_TABLE_INIT	;INITIALIZE BLD TABLE
   2336  a7a8
   2337  a7a8		       a5 2b		      lda	BASSTRT
   2338  a7aa		       a6 2c		      ldx	BASSTRT +1
   2339  a7ac
   2340  a7ac				   .2
   2341  a7ac		       85 22		      sta	PT1
   2342  a7ae		       86 23		      stx	PT1 +1
   2343  a7b0
   2344  a7b0		       a0 01		      ldy	#1
   2345  a7b2		       b1 22		      lda	(PT1),y
   2346  a7b4		       f0 24		      beq	.E
   2347  a7b6
   2348  a7b6		       aa		      tax
   2349  a7b7		       a0 04		      ldy	#4
   2350  a7b9		       b1 22		      lda	(PT1),y
   2351  a7bb		       c9 22		      cmp	#34
   2352  a7bd		       d0 14		      bne	.5
   2353  a7bf
   2354  a7bf							; FOUND PROGRAM NAME
   2355  a7bf		       a0 00		      ldy	#0
   2356  a7c1		       a5 22		      lda	PT1
   2357  a7c3		       91 24		      sta	(PT2),y
   2358  a7c5		       a5 23		      lda	PT1 +1
   2359  a7c7		       c8		      iny
   2360  a7c8		       91 24		      sta	(PT2),y
   2361  a7ca
   2362  a7ca		       20 f5 ab 	      jsr	INC_PT2
   2363  a7cd		       20 f5 ab 	      jsr	INC_PT2
   2364  a7d0		       ee 00 60 	      inc	TBL_NAMES
   2365  a7d3
   2366  a7d3				   .5
   2367  a7d3		       a0 00		      ldy	#0
   2368  a7d5		       b1 22		      lda	(PT1),y
   2369  a7d7		       4c ac a7 	      jmp	.2
   2370  a7da
   2371  a7da				   .E
   2372  a7da		       60		      rts
   2373  a7db
   2374  a7db							;INITIALIZE BLD TABLE
   2375  a7db				   BLD_TABLE_INIT subroutine
   2376  a7db		       a9 00		      lda	#0
   2377  a7dd		       8d 00 60 	      sta	TBL_NAMES
   2378  a7e0
   2379  a7e0		       a9 01		      lda	#<(TBL_NAMES+1)
   2380  a7e2		       a0 60		      ldy	#>(TBL_NAMES+1)
   2381  a7e4		       85 24		      sta	PT2
   2382  a7e6		       84 25		      sty	PT2 +1
   2383  a7e8		       60		      rts
   2384  a7e9
   2385  a7e9
   2386  a7e9
   2387  a7e9
   2388  a7e9							; ==============================================================
   2389  a7e9							; MENU SELECT PARAM
   2390  a7e9							; ==============================================================
   2391  a7e9
   2392  a7e9				   SEL_LOAD
   2393  a7e9							;LOADER PARAM	     :: +"filename",B|P|C|@ [,$adress]
   2394  a7e9							;			B=BASIC Code,P=Program,C=Cartridge,@=DOS COMMAND
   2395  a7e9		       a0 01		      ldy	#LDBUF_FN
   2396  a7eb		       a2 10		      ldx	#16
   2397  a7ed				   SELO_2
   2398  a7ed		       b1 7a		      lda	(CHRPTR),y
   2399  a7ef		       f0 0a		      beq	SELO_5
   2400  a7f1		       c9 22		      cmp	#34	; "
   2401  a7f3		       f0 06		      beq	SELO_5
   2402  a7f5		       91 22		      sta	(PT1),y	; SAVE FILENAME
   2403  a7f7		       c8		      iny
   2404  a7f8		       ca		      dex
   2405  a7f9		       d0 f2		      bne	SELO_2
   2406  a7fb				   SELO_5
   2407  a7fb		       88		      dey
   2408  a7fc		       f0 56		      beq	SELO_E
   2409  a7fe		       98		      tya
   2410  a7ff		       48		      pha
   2411  a800		       8a		      txa
   2412  a801		       f0 08		      beq	SELO_7a
   2413  a803		       a9 00		      lda	#0
   2414  a805				   SELO_7
   2415  a805		       c8		      iny
   2416  a806		       91 22		      sta	(PT1),y	; FILL FILENAME WITH 0
   2417  a808		       ca		      dex
   2418  a809		       d0 fa		      bne	SELO_7
   2419  a80b				   SELO_7a
   2420  a80b		       a8		      tay
   2421  a80c		       68		      pla
   2422  a80d		       91 22		      sta	(PT1),y	; SAVE FILENAME LENGTH
   2423  a80f		       38		      sec
   2424  a810		       65 7a		      adc	CHRPTR
   2425  a812		       85 7a		      sta	CHRPTR
   2426  a814		       90 02		      bcc	SELO_8
   2427  a816		       e6 7b		      inc	CHRPTR +1
   2428  a818				   SELO_8
   2429  a818		       20 73 00 	      jsr	CHRGET
   2430  a81b		       20 aa b7 	      jsr	CHKCOM
   2431  a81e		       b0 08		      bcs	SELO_8a
   2432  a820		       c9 42		      cmp	#"B"	;BASIC FILE
   2433  a822		       f0 06		      beq	SELO_9
   2434  a824		       c9 43		      cmp	#"C"	;CARTRIDGE FILE
   2435  a826		       f0 02		      beq	SELO_9
   2436  a828							;cmp #"@"
   2437  a828							;beq SELO_9
   2438  a828				   SELO_8a
   2439  a828		       a9 50		      lda	#"P"	;NORMAL PROG
   2440  a82a				   SELO_9
   2441  a82a		       a0 11		      ldy	#LDBUF_TYP
   2442  a82c		       91 22		      sta	(PT1),y	; PROGRAM TYPE
   2443  a82e		       20 73 00 	      jsr	CHRGET
   2444  a831		       20 aa b7 	      jsr	CHKCOM
   2445  a834		       b0 05		      bcs	SELO_9a
   2446  a836		       20 94 b7 	      jsr	GETADR
   2447  a839		       b0 03		      bcs	SELO_9b
   2448  a83b				   SELO_9a
   2449  a83b		       a9 00		      lda	#0
   2450  a83d		       aa		      tax
   2451  a83e				   SELO_9b
   2452  a83e		       a0 13		      ldy	#LDBUF_LAD +1
   2453  a840		       91 22		      sta	(PT1),y	; LOAD ADR HIGH
   2454  a842		       88		      dey
   2455  a843		       8a		      txa
   2456  a844		       91 22		      sta	(PT1),y	; LOAD ADR LOW
   2457  a846
   2458  a846		       ee 67 03 	      inc	DL_CNTLDR
   2459  a849		       18		      clc
   2460  a84a		       a9 16		      lda	#LDBUF_END
   2461  a84c		       65 22		      adc	PT1
   2462  a84e		       85 22		      sta	PT1
   2463  a850		       90 02		      bcc	SELO_E
   2464  a852		       e6 23		      inc	PT1 +1
   2465  a854				   SELO_E
   2466  a854		       60		      rts
   2467  a855
   2468  a855
   2469  a855
   2470  a855
   2471  a855							; =====================================================================
   2472  a855							; MENU LOADER
   2473  a855							; Schaltet in ROM Modus und ldt 1 oder mehrere Dateien in den Speicher
   2474  a855							; Lade Instruktionen stehen in der Tabelle DL_LDBUF
   2475  a855							; =====================================================================
   2476  a855
   2477  a855				   DO_LOADER  subroutine
   2478  a855		       a9 01		      lda	#EXEC_LOADER
   2479  a857		       4c 35 a1 	      jmp	EXECUTE_R
   2480  a85a
   2481  a85a
   2482  a85a
   2483  a85a							; ==============================================================
   2484  a85a							; LOAD MENU DATA    "LOADER"
   2485  a85a							; ==============================================================
   2486  a85a
   2487  a85a		       ff ba	   SETFNUM    =	$ffba
   2488  a85a		       ff bd	   SETFNAM    =	$ffbd
   2489  a85a		       ff d5	   LOAD       =	$ffd5
   2490  a85a
   2491  a85a		       c6 59	   SY_BASCLR2 =	$c659
   2492  a85a		       c6 60	   SY_BASCLR  =	$c660
   2493  a85a		       c5 33	   SY_PGMLINK =	$c533
   2494  a85a
   2495  a85a				   LOAD_MENU  subroutine
   2496  a85a		       a2 9d		      ldx	#<(MSG_LOADER)
   2497  a85c		       a0 a8		      ldy	#>(MSG_LOADER)
   2498  a85e		       a9 06		      lda	#6
   2499  a860		       20 bd ff 	      jsr	SETFNAM
   2500  a863		       a9 01		      lda	#1
   2501  a865		       ae 3e 03 	      ldx	F_CURDEV	; device#
   2502  a868		       a0 00		      ldy	#0
   2503  a86a		       20 ba ff 	      jsr	SETFNUM
   2504  a86d		       a9 00		      lda	#0	;load
   2505  a86f		       a6 2b		      ldx	BASSTRT	;Start lo#
   2506  a871		       a4 2c		      ldy	BASSTRT +1	;Start hi#
   2507  a873		       20 d5 ff 	      jsr	LOAD
   2508  a876		       4c 57 b1 	      jmp	BASLOAD_END
   2509  a879
   2510  a879				   LOAD_BASIC subroutine
   2511  a879		       20 82 a8 	      jsr	LOAD_BASIC_START
   2512  a87c				   LOAD_BASIC_2
   2513  a87c		       20 6a b3 	      jsr	MY_IECLOAD
   2514  a87f		       4c 57 b1 	      jmp	BASLOAD_END
   2515  a882
   2516  a882				   LOAD_BASIC_START subroutine
   2517  a882		       a9 01		      lda	#1
   2518  a884		       ae 3e 03 	      ldx	F_CURDEV	; device#
   2519  a887		       a0 00		      ldy	#0
   2520  a889		       20 ba ff 	      jsr	SETFNUM
   2521  a88c		       a6 2b		      ldx	BASSTRT	;Start lo#
   2522  a88e		       a4 2c		      ldy	BASSTRT +1	;Start hi#
   2523  a890		       86 c3		      stx	LOADPTR
   2524  a892		       84 c4		      sty	LOADPTR +1
   2525  a894		       60		      rts
   2526  a895
   2527  a895
   2528  a895
   2529  a895
   2530  a895		       f4 95	   SYS_IECOPEN =	$f495
   2531  a895		       ee 14	   SYS_TALK   =	$ee14
   2532  a895		       ee ce	   SYS_TALKSA =	$eece
   2533  a895							;SYS_LOAD2   = $f58a
   2534  a895							;SYS_LOAD2C  = $f5a3
   2535  a895		       e4 c1	   SYS_SETADR =	$e4c1
   2536  a895
   2537  a895
   2538  a895
   2539  a895
   2540  a895							; ==============================================================
   2541  a895							; LOADER TEXT
   2542  a895							; ==============================================================
   2543  a895
   2544  a895				   MSG_SYS
   2545  a895		       53 59 53 00	      dc.b	"SYS",0
   2546  a899				   MSG_RUN
   2547  a899		       52 55 4e 00	      dc.b	"RUN",0
   2548  a89d
   2549  a89d				   MSG_LOADER
   2550  a89d		       4c 4f 41 44*	      dc.b	"LOADER",0
   2551  a8a4
   2552  a8a4				   MSG_DOS
   2553  a8a4		       40 20 3c 00	      dc.b	"@ ",60,0
   2554  a8a8							;  lda #60				    ;"<"
   2555  a8a8							;  lda #62				    ;">"
   2556  a8a8
   2557  a8a8
   2558  a8a8
   2559  a8a8
   2560  a8a8
   2561  a8a8
   2562  a8a8							; ========================================================================
   2563  a8a8							; FIRMWARE FLASHER
   2564  a8a8							; Schaltet in den RAM Modus
   2565  a8a8							; Ladet die Firmware Datei (FE3FIRMWARE) in den Speicher ab $2
   2566  a8a8							; Flashed den Bereich $2 bis $4 in den EEPROM
   2567  a8a8							; ========================================================================
   2568  a8a8
   2569  a8a8
   2570  a8a8		       20 00	   FLLO_STARTADR =	$2000
   2571  a8a8
   2572  a8a8
   2573  a8a8				   FIRMW_FLASHER subroutine
   2574  a8a8		       a9 90		      lda	#FEMOD_RAM_1 +$10	;RAM MODUS, BLK-5 PROTECTED
   2575  a8aa		       8d 02 9c 	      sta	IO_FINAL
   2576  a8ad		       20 b0 ae 	      jsr	SetVicMemConfig
   2577  a8b0
   2578  a8b0		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message (e404)
   2579  a8b3		       20 c9 b6 	      jsr	CROUT
   2580  a8b6
   2581  a8b6							;CHANGE TO ROOT
   2582  a8b6		       20 94 bf 	      jsr	SPAR_DISKCMD
   2583  a8b9		       43 44 5f 00	      dc.b	"CD_",0	;EXIT D64
   2584  a8bd		       20 94 bf 	      jsr	SPAR_DISKCMD
   2585  a8c0		       43 44 2f 2f*	      dc.b	"CD//",0	;--> ROOT
   2586  a8c5
   2587  a8c5							;SET FILENAME PARAM
   2588  a8c5		       20 8e bf 	      jsr	SPAR_GETSTRING
   2589  a8c8		       0b 46 45 33*	      dc.b	11,"FE3FIRMWARE",0
   2590  a8d5		       85 24		      sta	PT2
   2591  a8d7		       84 25		      sty	PT2 +1
   2592  a8d9
   2593  a8d9							;SET FILE PARAM
   2594  a8d9		       20 21 ab 	      jsr	LOAD_CART_AT
   2595  a8dc		       90 1d		      bcc	.ok
   2596  a8de
   2597  a8de		       20 8e bf 	      jsr	SPAR_GETSTRING
   2598  a8e1		       0f 46 45 33*	      dc.b	15,"FE3FIRMWARE.PRG",0
   2599  a8f2		       85 24		      sta	PT2
   2600  a8f4		       84 25		      sty	PT2 +1
   2601  a8f6		       20 21 ab 	      jsr	LOAD_CART_AT
   2602  a8f9		       b0 0a		      bcs	.err
   2603  a8fb
   2604  a8fb				   .ok
   2605  a8fb							;FLASH FIRMWARE
   2606  a8fb		       20 b4 bc 	      jsr	MOVE_FLASH_FW
   2607  a8fe		       a9 00		      lda	#<FLLO_STARTADR
   2608  a900		       a0 20		      ldy	#>FLLO_STARTADR
   2609  a902		       20 5c 12 	      jsr	FLASHER
   2610  a905
   2611  a905				   .err
   2612  a905		       20 e0 a1 	      jsr	WAIT_KEY
   2613  a908		       4c b7 a3 	      jmp	UTIL_MENU
   2614  a90b
   2615  a90b
   2616  a90b
   2617  a90b
   2618  a90b							; ========================================================================
   2619  a90b							; CART FLASHER
   2620  a90b							; Schaltet in den RAM Modus
   2621  a90b							; Ladet die Loaderkonfig Datei (LOADER) in den BASIC Speicher
   2622  a90b							; Baut eine String Zeigertabelle auf ab TBL_NAMES ($6)
   2623  a90b							; Fhrt die Men Auswahl Prozedur aus
   2624  a90b							; ========================================================================
   2625  a90b
   2626  a90b
   2627  a90b
   2628  a90b							;-------------- PRINT DLOADER SCREEN AND FLASH SELECTED FILES
   2629  a90b
   2630  a90b					      subroutine
   2631  a90b				   .00
   2632  a90b		       20 be a5 	      jsr	MENU_SEL
   2633  a90e		       90 03		      bcc	.01
   2634  a910		       20 40 a9 	      jsr	MENU_FLASHER
   2635  a913				   .01
   2636  a913
   2637  a913				   CART_FLASHER
   2638  a913		       20 58 a0 	      jsr	INIT_CART	; Screen Colors
   2639  a916		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2640  a919		       93 9e 0e 12*	      dc.b	CLRHOME,YELLOW,FONT2,RVSON,"---- cART fLASHER ----",CR,CR,0
   2641  a936
   2642  a936		       20 23 a4 	      jsr	DLOADER1
   2643  a939		       e0 0d		      cpx	#13	;CR
   2644  a93b		       f0 ce		      beq	.00
   2645  a93d		       4c b7 a3 	      jmp	UTIL_MENU
   2646  a940
   2647  a940
   2648  a940
   2649  a940							;-------------- EXECUTE SELECTED MENU
   2650  a940
   2651  a940				   MENU_FLASHER subroutine
   2652  a940		       ad 67 03 	      lda	DL_CNTLDR	;NUMBER OF FILES
   2653  a943		       f0 61		      beq	.exit
   2654  a945
   2655  a945		       20 c5 b6 	      jsr	CLROUT	;CLEAR SCREEN
   2656  a948
   2657  a948		       ae 93 02 	      ldx	BIP_CMD
   2658  a94b		       f0 59		      beq	.exit
   2659  a94d		       e0 05		      cpx	#TOK_RELO	;RELOAD
   2660  a94f		       f0 55		      beq	.exit
   2661  a951
   2662  a951		       a9 90		      lda	#FEMOD_RAM_1 +$10	;RAM MODUS, BLK-5 PROTECTED
   2663  a953		       8d 02 9c 	      sta	IO_FINAL
   2664  a956		       20 b0 ae 	      jsr	SetVicMemConfig
   2665  a959
   2666  a959		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message (e404)
   2667  a95c		       20 c9 b6 	      jsr	CROUT
   2668  a95f
   2669  a95f							;SAVE FILE COUNT
   2670  a95f		       ad 67 03 	      lda	DL_CNTLDR
   2671  a962		       8d 56 03 	      sta	TBL_CLBUF +CLBUF_CNT
   2672  a965
   2673  a965							;GET ENTRY COUNT
   2674  a965		       20 6a ad 	      jsr	FLASH_SEARCH_END	;SEARCH LAST ENTRY
   2675  a968		       8a		      txa
   2676  a969		       30 3e		      bmi	.errfull
   2677  a96b
   2678  a96b							;LOAD FILES TO RAM DISK
   2679  a96b		       20 fc ad 	      jsr	RAMD_INIT	; INIT RAM DISK
   2680  a96e		       20 84 aa 	      jsr	FLSH_LOADER	; LOAD FILES
   2681  a971		       b0 33		      bcs	.exit
   2682  a973
   2683  a973		       20 05 ae 	      jsr	RAMD_SIZE	; GET LENGTH OF PACKAGE
   2684  a976		       85 af		      sta	LOADEND +1
   2685  a978		       86 ae		      stx	LOADEND
   2686  a97a		       8d 58 03 	      sta	TBL_CLBUF +CLBUF_PLEN +1
   2687  a97d		       8e 57 03 	      stx	TBL_CLBUF +CLBUF_PLEN
   2688  a980
   2689  a980							;PRINT PACKAGE SIZE
   2690  a980		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2691  a983		       0d 50 41 43*	      dc.b	13,"PACKAGE SIZE ",0
   2692  a992		       a5 af		      lda	LOADEND +1
   2693  a994		       a6 ae		      ldx	LOADEND
   2694  a996		       20 3c b8 	      jsr	HEXOUT
   2695  a999
   2696  a999				   FLASH_PACKAGE_DEBUG
   2697  a999		       20 d4 a9 	      jsr	FLASH_PACKAGE	; FLASH PACKAGE
   2698  a99c		       b0 21		      bcs	.errflash
   2699  a99e
   2700  a99e		       20 3d aa 	      jsr	FLASH_ENTRY	; FLASH CATALOG
   2701  a9a1		       b0 1c		      bcs	.errflash
   2702  a9a3
   2703  a9a3				   .wait
   2704  a9a3		       20 c8 a1 	      jsr	WAIT_KEY_TX
   2705  a9a6				   .exit
   2706  a9a6		       4c 13 a9 	      jmp	CART_FLASHER
   2707  a9a9
   2708  a9a9
   2709  a9a9
   2710  a9a9				   .errfull
   2711  a9a9		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2712  a9ac		       0d 1c 43 41*	      dc.b	CR,RED,"CATALOG FULL!",0
   2713  a9bc		       18		      clc
   2714  a9bd		       90 e7		      bcc	.exit
   2715  a9bf
   2716  a9bf				   .errflash
   2717  a9bf		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2718  a9c2		       0d 1c 46 4c*	      dc.b	CR,RED,"FLASH ERROR!",0
   2719  a9d1		       18		      clc
   2720  a9d2		       90 cf		      bcc	.wait
   2721  a9d4
   2722  a9d4
   2723  a9d4							;WRITE PACKAGE INTO FLASH
   2724  a9d4				   FLASH_PACKAGE subroutine
   2725  a9d4		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2726  a9d7		       0d 46 4c 41*	      dc.b	CR,"FLASHING PACKAGE...",0
   2727  a9ec
   2728  a9ec							;------------------------
   2729  a9ec							;PREPARE TO FLASH PACKAGE
   2730  a9ec							;------------------------
   2731  a9ec		       20 fc ad 	      jsr	RAMD_INIT	;INIT RAM DISK
   2732  a9ef		       20 b4 bc 	      jsr	MOVE_FLASH_FW	;PREPARE FLASH CODE
   2733  a9f2
   2734  a9f2		       20 6a ad 	      jsr	FLASH_SEARCH_END	;SEARCH LAST ENTRY
   2735  a9f5		       20 9a ad 	      jsr	FLASH_EADR	;GET FLASH START ADDRESS
   2736  a9f8		       8d 5a 03 	      sta	TBL_CLBUF +CLBUF_SADR +1	;ADR HI
   2737  a9fb		       8e 59 03 	      stx	TBL_CLBUF +CLBUF_SADR	;ADR LO
   2738  a9fe		       8c 5b 03 	      sty	TBL_CLBUF +CLBUF_SBANK	;BANK
   2739  aa01
   2740  aa01							;PREPARE RAMD WRITE TO FLASH
   2741  aa01		       86 c1		      stx	SAVESTART
   2742  aa03		       85 c2		      sta	SAVESTART +1
   2743  aa05		       98		      tya
   2744  aa06		       09 20		      ora	#FEMOD_FLASH	;PROG MODE
   2745  aa08		       8d 22 13 	      sta	__flash_BANK
   2746  aa0b
   2747  aa0b		       a0 00		      ldy	#0
   2748  aa0d				   .flash
   2749  aa0d		       a5 ae		      lda	LOADEND
   2750  aa0f		       d0 06		      bne	.05
   2751  aa11		       a5 af		      lda	LOADEND +1
   2752  aa13		       f0 12		      beq	.exit
   2753  aa15		       c6 af		      dec	LOADEND +1
   2754  aa17				   .05
   2755  aa17		       c6 ae		      dec	LOADEND
   2756  aa19		       20 34 ae 	      jsr	RAMD_GETC	;BYTE FROM RAMDISK
   2757  aa1c
   2758  aa1c		       20 20 13 	      jsr	FlashCodeWriteXP
   2759  aa1f		       b0 1b		      bcs	.rts
   2760  aa21		       20 3a 13 	      jsr	FlashCodeWriteXpInc	;INCREMENT ADDRESS
   2761  aa24		       4c 0d aa 	      jmp	.flash
   2762  aa27
   2763  aa27				   .exit
   2764  aa27							;SET END BANK/ADDRESS
   2765  aa27		       ad 22 13 	      lda	__flash_BANK
   2766  aa2a		       29 0f		      and	#$0f
   2767  aa2c		       a6 c1		      ldx	SAVESTART
   2768  aa2e		       a4 c2		      ldy	SAVESTART +1
   2769  aa30
   2770  aa30		       8c 5d 03 	      sty	TBL_CLBUF +CLBUF_EADR +1	;ADR HI
   2771  aa33		       8e 5c 03 	      stx	TBL_CLBUF +CLBUF_EADR	;ADR LO
   2772  aa36		       8d 5e 03 	      sta	TBL_CLBUF +CLBUF_EBANK	;BANK
   2773  aa39		       18		      clc		;OK!
   2774  aa3a		       90 3e		      bcc	PRINT_OK
   2775  aa3c
   2776  aa3c				   .rts
   2777  aa3c		       60		      rts
   2778  aa3d
   2779  aa3d
   2780  aa3d
   2781  aa3d							;WRITE ENTRY INTO CATALOG
   2782  aa3d				   FLASH_ENTRY subroutine
   2783  aa3d		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2784  aa40		       0d 46 4c 41*	      dc.b	CR,"FLASHING CATALOG...",0
   2785  aa55
   2786  aa55		       20 6a ad 	      jsr	FLASH_SEARCH_END	;SEARCH LAST ENTRY
   2787  aa58		       8a		      txa		;ENTRY COUNT
   2788  aa59		       f0 03		      beq	.00
   2789  aa5b		       20 8a ad 	      jsr	ADD_CLBUF	;NEXT ENTRY (FREE SLOT)
   2790  aa5e				   .00
   2791  aa5e							;jsr FLASH_EADR		       ;GET FLASH ADDRESS
   2792  aa5e		       a5 c3		      lda	LOADPTR
   2793  aa60		       a6 c4		      ldx	LOADPTR +1
   2794  aa62		       85 c1		      sta	SAVESTART
   2795  aa64		       86 c2		      stx	SAVESTART +1
   2796  aa66
   2797  aa66		       a9 20		      lda	#FEMOD_FLASH	;PROG MODE, BANK 0
   2798  aa68		       8d 22 13 	      sta	__flash_BANK
   2799  aa6b
   2800  aa6b		       a0 00		      ldy	#0
   2801  aa6d				   .04
   2802  aa6d		       b9 41 03 	      lda	TBL_CLBUF,y
   2803  aa70		       20 20 13 	      jsr	FlashCodeWriteXP
   2804  aa73		       b0 0e		      bcs	.rts
   2805  aa75
   2806  aa75		       c8		      iny
   2807  aa76		       c0 20		      cpy	#CLBUF_END
   2808  aa78		       d0 f3		      bne	.04
   2809  aa7a
   2810  aa7a				   PRINT_OK
   2811  aa7a		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2812  aa7d		       1e 4f 4b 1f*	      dc.b	GREEN,"OK",BLUE,0
   2813  aa82		       18		      clc
   2814  aa83				   .rts
   2815  aa83		       60		      rts
   2816  aa84
   2817  aa84
   2818  aa84
   2819  aa84							; =====================================================================
   2820  aa84							; FLASH LOADER
   2821  aa84							; ldt eine oder mehrere Dateien in den Speicher ab $2
   2822  aa84							; kopiert die Ladeanweisungen + Datei in den Super RAM
   2823  aa84							; =====================================================================
   2824  aa84
   2825  aa84
   2826  aa84							;FLASH LOADER PARAM	   :: "filename",B|P|C [,$adress]     B=BASIC Code,P=Program,C=Cartridge
   2827  aa84				   FLSH_LOADER subroutine
   2828  aa84		       20 52 ab 	      jsr	WRITE_CLHDR	;WRITE PACKAGE HEADER
   2829  aa87
   2830  aa87		       20 0f ab 	      jsr	SET_PT2_LDBUF
   2831  aa8a				   .00
   2832  aa8a							;  lda #2				  ; SA=2: CARTRIDGE - WHOLE FILE
   2833  aa8a		       20 21 ab 	      jsr	LOAD_CART_AT
   2834  aa8d		       b0 45		      bcs	.err
   2835  aa8f
   2836  aa8f							;CALC FILE LENGTH
   2837  aa8f							;  ldx LOADEND
   2838  aa8f							;  ldy LOADEND +1
   2839  aa8f		       98		      tya
   2840  aa90		       38		      sec
   2841  aa91		       e9 20		      sbc	#>FLLO_STARTADR
   2842  aa93		       85 af		      sta	LOADEND +1
   2843  aa95
   2844  aa95
   2845  aa95							;STORE FILE LENGTH INTO LOAD BUFFER
   2846  aa95		       a0 15		      ldy	#LDBUF_FLEN +1
   2847  aa97		       91 24		      sta	(PT2),y	; FILE LENGTGH HI
   2848  aa99		       88		      dey
   2849  aa9a		       8a		      txa
   2850  aa9b		       91 24		      sta	(PT2),y	; FILE LENGTGH LO
   2851  aa9d
   2852  aa9d
   2853  aa9d
   2854  aa9d							;COPY LOAD BUFFER INTO RAMDISK
   2855  aa9d		       a2 16		      ldx	#LDBUF_END
   2856  aa9f		       a0 00		      ldy	#0
   2857  aaa1				   .05
   2858  aaa1		       b1 24		      lda	(PT2),y
   2859  aaa3		       20 1d ae 	      jsr	RAMD_PUTC
   2860  aaa6		       c8		      iny
   2861  aaa7		       ca		      dex
   2862  aaa8		       d0 f7		      bne	.05
   2863  aaaa
   2864  aaaa
   2865  aaaa							;COPY FILE INTO RAMDISK
   2866  aaaa		       20 18 ab 	      jsr	SET_LPT_STARTADR
   2867  aaad		       a0 00		      ldy	#0
   2868  aaaf				   .07
   2869  aaaf		       a5 ae		      lda	LOADEND
   2870  aab1		       d0 06		      bne	.06
   2871  aab3		       a5 af		      lda	LOADEND +1
   2872  aab5		       f0 10		      beq	.09
   2873  aab7		       c6 af		      dec	LOADEND +1
   2874  aab9				   .06
   2875  aab9		       c6 ae		      dec	LOADEND
   2876  aabb
   2877  aabb		       b1 c3		      lda	(LOADPTR),y	;BYTE FROM FILE
   2878  aabd		       20 1d ae 	      jsr	RAMD_PUTC	;INTO RAMDISK
   2879  aac0
   2880  aac0		       c8		      iny
   2881  aac1		       d0 ec		      bne	.07
   2882  aac3		       e6 c4		      inc	LOADPTR +1
   2883  aac5		       d0 e8		      bne	.07
   2884  aac7
   2885  aac7				   .09
   2886  aac7
   2887  aac7
   2888  aac7							;GOTO NEXT FILE
   2889  aac7		       20 dc aa 	      jsr	ADD_PT2_LDBUF
   2890  aaca		       ce 67 03 	      dec	DL_CNTLDR
   2891  aacd		       d0 bb		      bne	.00
   2892  aacf
   2893  aacf				   .exit
   2894  aacf		       20 67 b2 	      jsr	PRINT_IO
   2895  aad2		       18		      clc
   2896  aad3		       60		      rts
   2897  aad4
   2898  aad4				   .err
   2899  aad4				   LOAD_ERR
   2900  aad4		       20 3f ab 	      jsr	PRINT_LOADERR
   2901  aad7		       20 bc a1 	      jsr	WAITSPACE
   2902  aada		       38		      sec
   2903  aadb		       60		      rts
   2904  aadc
   2905  aadc
   2906  aadc
   2907  aadc							;NEXT LOAD HEADER
   2908  aadc				   ADD_PT2_LDBUF subroutine
   2909  aadc		       18		      clc
   2910  aadd		       a9 16		      lda	#LDBUF_END
   2911  aadf		       65 24		      adc	PT2
   2912  aae1		       85 24		      sta	PT2
   2913  aae3		       90 02		      bcc	.0
   2914  aae5		       e6 25		      inc	PT2 +1
   2915  aae7				   .0
   2916  aae7		       60		      rts
   2917  aae8
   2918  aae8
   2919  aae8							;PRINT LOAD MESSAGE, GET FILENAME
   2920  aae8				   PRINT_LOADING subroutine
   2921  aae8		       20 9d bf 	      jsr	SPAR_GETPTR
   2922  aaeb		       20 6c bf 	      jsr	SPAR_PRINTSTRING_2
   2923  aaee
   2924  aaee		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2925  aaf1		       0d 20 20 3c*	      dc.b	CR, "	",60,0
   2926  aaf6
   2927  aaf6		       a0 00		      ldy	#LDBUF_LEN
   2928  aaf8		       b1 24		      lda	(PT2),y	; FILENAME LEN
   2929  aafa		       a4 25		      ldy	PT2 +1
   2930  aafc		       a6 24		      ldx	PT2
   2931  aafe		       e8		      inx
   2932  aaff		       d0 01		      bne	.2
   2933  ab01		       c8		      iny
   2934  ab02				   .2
   2935  ab02		       20 bd ff 	      jsr	SETFNAM	;SET FILENAME
   2936  ab05		       20 d8 bf 	      jsr	STRNOUT	;PRINT FILENAME
   2937  ab08
   2938  ab08		       a9 3e		      lda	#62	;">"
   2939  ab0a		       a2 0d		      ldx	#CR
   2940  ab0c		       4c cd b6 	      jmp	CHROUT2
   2941  ab0f
   2942  ab0f
   2943  ab0f
   2944  ab0f							;------------
   2945  ab0f				   SET_PT2_LDBUF subroutine
   2946  ab0f							;LOADER PARAM	     :: "filename",B|P|C [,$adress]	B=BASIC Code,P=Program,C=Cartridge
   2947  ab0f		       a9 6d		      lda	#<(DL_LDBUF)
   2948  ab11		       a0 03		      ldy	#>(DL_LDBUF)
   2949  ab13				   SET_PT2_AY
   2950  ab13		       85 24		      sta	PT2
   2951  ab15		       84 25		      sty	PT2 +1
   2952  ab17		       60		      rts
   2953  ab18
   2954  ab18							;------------
   2955  ab18				   SET_LPT_STARTADR subroutine
   2956  ab18		       a9 00		      lda	#<FLLO_STARTADR
   2957  ab1a		       a0 20		      ldy	#>FLLO_STARTADR
   2958  ab1c				   SET_LPT_AY
   2959  ab1c		       85 c3		      sta	LOADPTR
   2960  ab1e		       84 c4		      sty	LOADPTR +1
   2961  ab20		       60		      rts
   2962  ab21
   2963  ab21
   2964  ab21							;LOAD FILE INTO BUFFER
   2965  ab21				   LOAD_CART_AT subroutine
   2966  ab21		       a9 02		      lda	#2	; SA! - CARTRIDGE
   2967  ab23				   LOAD_AT    subroutine
   2968  ab23		       a8		      tay		; SA
   2969  ab24		       ae 3e 03 	      ldx	F_CURDEV	; device#
   2970  ab27		       20 ba ff 	      jsr	SETFNUM
   2971  ab2a
   2972  ab2a		       20 e8 aa 	      jsr	PRINT_LOADING
   2973  ab2d		       4c 4f 41 44*	      dc.b	"LOAD FILE",0
   2974  ab37
   2975  ab37		       20 18 ab 	      jsr	SET_LPT_STARTADR
   2976  ab3a
   2977  ab3a							;LOAD FILE AT (FLLO_STARTADR)
   2978  ab3a		       20 6a b3 	      jsr	MY_IECLOAD
   2979  ab3d		       90 12		      bcc	.ok
   2980  ab3f				   PRINT_LOADERR
   2981  ab3f				   .err
   2982  ab3f		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   2983  ab42		       0d 4c 4f 41*	      dc.b	13,"LOAD ERROR!",13,0
   2984  ab50		       38		      sec
   2985  ab51				   .ok
   2986  ab51		       60		      rts
   2987  ab52
   2988  ab52
   2989  ab52
   2990  ab52
   2991  ab52
   2992  ab52							;BIP_CMD     = $0293			  ;COMMAND BYTE
   2993  ab52							;BIP_IOBASE  = BIP_CMD +1		  ;BASE FOR IO2 REGISTER 1 AND 2
   2994  ab52							;BIP_RUNADR  = BIP_CMD +3		  ;RUN ADDRESS: 0=RUN BASIC, 1=RESET, 2=invalid, n=SYS
   2995  ab52
   2996  ab52
   2997  ab52
   2998  ab52
   2999  ab52							;WRITE PACKAGE HEADER
   3000  ab52				   WRITE_CLHDR subroutine
   3001  ab52		       a0 00		      ldy	#0
   3002  ab54				   .00
   3003  ab54		       b9 93 02 	      lda	BIP_CMD,y
   3004  ab57		       20 1d ae 	      jsr	RAMD_PUTC
   3005  ab5a		       c8		      iny
   3006  ab5b		       c0 05		      cpy	#CLHDR_END
   3007  ab5d		       90 f5		      bcc	.00
   3008  ab5f		       60		      rts
   3009  ab60
   3010  ab60
   3011  ab60
   3012  ab60
   3013  ab60							; ========================================================================
   3014  ab60							; CART LOADER
   3015  ab60							; Schaltet in den RAM Modus
   3016  ab60							; Ladet die Flash File List in den BASIC Speicher
   3017  ab60							; Baut eine String Zeigertabelle auf ab TBL_NAMES ($6)
   3018  ab60							; Fhrt die Men Auswahl Prozedur aus
   3019  ab60							; ========================================================================
   3020  ab60
   3021  ab60							;-------------- PRINT CLOADER SCREEN AND START SELECTED FILES
   3022  ab60
   3023  ab60					      subroutine
   3024  ab60				   .00
   3025  ab60		       20 03 ac 	      jsr	MENU_CSEL
   3026  ab63		       b0 03		      bcs	.01
   3027  ab65		       20 16 ac 	      jsr	MENU_CLOADER
   3028  ab68				   .01
   3029  ab68
   3030  ab68				   CART_LOADER
   3031  ab68		       20 58 a0 	      jsr	INIT_CART	; Screen Colors
   3032  ab6b		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   3033  ab6e		       93 9e 0e 12*	      dc.b	CLRHOME,YELLOW,FONT2,RVSON,"---- cART	lOADER ----",CR,CR,0
   3034  ab8b
   3035  ab8b		       20 95 ab 	      jsr	CLOADER1
   3036  ab8e		       e0 0d		      cpx	#13	;CR
   3037  ab90		       f0 ce		      beq	.00
   3038  ab92		       4c d3 a0 	      jmp	SSCREEN
   3039  ab95
   3040  ab95
   3041  ab95
   3042  ab95				   CLOADER1   subroutine
   3043  ab95		       20 34 a0 	      jsr	COPYROM	; COPY FIRMWARE TO SRAM
   3044  ab98		       b0 1d		      bcs	.02	; ==> RAM OK
   3045  ab9a
   3046  ab9a		       20 7d bf 	      jsr	SPAR_MSGBOX
   3047  ab9d		       02 03 1c 72*	      dc.b	2, 3, RED, "ram eRROR at $a ...",0
   3048  abb4				   .exit
   3049  abb4		       a2 00		      ldx	#0
   3050  abb6		       60		      rts
   3051  abb7
   3052  abb7				   .02
   3053  abb7		       20 73 a4 	      jsr	MENU_INIT
   3054  abba		       a9 01		      lda	#1
   3055  abbc		       85 08		      sta	FLGCOM	;STRING OFFSET
   3056  abbe		       20 c7 ab 	      jsr	MENU_CATALOG
   3057  abc1							;bcs .exit
   3058  abc1
   3059  abc1		       20 d9 a4 	      jsr	MENU_HANDLER
   3060  abc4
   3061  abc4		       b8		      clv
   3062  abc5		       50 ce		      bvc	CLOADER1
   3063  abc7
   3064  abc7
   3065  abc7							;-------------- LOAD CATALOG LOADER FILE
   3066  abc7				   MENU_CATALOG subroutine
   3067  abc7		       a9 20		      lda	#>$2000
   3068  abc9		       a0 00		      ldy	#<$2000
   3069  abcb		       a2 10		      ldx	#16	; copy 16 pages
   3070  abcd		       20 3a a0 	      jsr	COPYROM_2	; COPY CATALOG TO SRAM
   3071  abd0
   3072  abd0							;jsr FLASH_SEARCH_END
   3073  abd0							;  jmp BLD_TABLE_CAT
   3074  abd0
   3075  abd0
   3076  abd0
   3077  abd0							;----BUILD NAME TABLE FROM CATALOG
   3078  abd0				   BLD_TABLE_CAT subroutine
   3079  abd0		       20 db a7 	      jsr	BLD_TABLE_INIT	;INITIALIZE BLD TABLE
   3080  abd3		       20 e8 ad 	      jsr	SET_CLO_START	;SET CLOADER TABLE ADDRESS
   3081  abd6		       a0 00		      ldy	#0
   3082  abd8				   .00
   3083  abd8		       b1 c3		      lda	(LOADPTR),y
   3084  abda		       c9 ff		      cmp	#$ff
   3085  abdc		       f0 16		      beq	.tblend	;TABLE END!!
   3086  abde
   3087  abde		       a5 c3		      lda	LOADPTR
   3088  abe0		       91 24		      sta	(PT2),y
   3089  abe2		       20 f5 ab 	      jsr	INC_PT2
   3090  abe5
   3091  abe5		       a5 c4		      lda	LOADPTR +1
   3092  abe7		       91 24		      sta	(PT2),y
   3093  abe9		       20 f5 ab 	      jsr	INC_PT2
   3094  abec
   3095  abec		       20 8a ad 	      jsr	ADD_CLBUF
   3096  abef
   3097  abef		       ee 00 60 	      inc	TBL_NAMES
   3098  abf2		       10 e4		      bpl	.00
   3099  abf4
   3100  abf4				   .tblend
   3101  abf4		       60		      rts
   3102  abf5
   3103  abf5
   3104  abf5
   3105  abf5
   3106  abf5
   3107  abf5							;INCREMENT PT2
   3108  abf5				   INC_PT2    subroutine
   3109  abf5		       e6 24		      inc	PT2
   3110  abf7		       d0 02		      bne	.2
   3111  abf9		       e6 25		      inc	PT2 +1
   3112  abfb				   .2
   3113  abfb		       60		      rts
   3114  abfc
   3115  abfc
   3116  abfc
   3117  abfc							;INCREMENT LOADPTR
   3118  abfc				   INC_LOADPTR subroutine
   3119  abfc		       e6 c3		      inc	LOADPTR
   3120  abfe		       d0 02		      bne	.2
   3121  ac00		       e6 c4		      inc	LOADPTR +1
   3122  ac02				   .2
   3123  ac02		       60		      rts
   3124  ac03
   3125  ac03
   3126  ac03
   3127  ac03							;---EXECUTE SELECTED MENU ENTRY
   3128  ac03				   MENU_CSEL  subroutine
   3129  ac03		       20 99 a5 	      jsr	MENU_SEL_INIT	;SET PT2 TO ENTRY STRING
   3130  ac06		       b0 0d		      bcs	.err
   3131  ac08
   3132  ac08							;COPY CATALOG ENTRY
   3133  ac08				   COPY_CATALOG
   3134  ac08		       a0 00		      ldy	#0
   3135  ac0a				   .1
   3136  ac0a		       b1 24		      lda	(PT2),y
   3137  ac0c		       99 41 03 	      sta	TBL_CLBUF,y
   3138  ac0f		       c8		      iny
   3139  ac10		       c0 20		      cpy	#CLBUF_END	;LENGTH
   3140  ac12		       d0 f6		      bne	.1
   3141  ac14		       18		      clc
   3142  ac15				   .err
   3143  ac15		       60		      rts
   3144  ac16
   3145  ac16
   3146  ac16
   3147  ac16
   3148  ac16							;---LOAD SELECTED MENU ENTRY
   3149  ac16				   MENU_CLOADER subroutine
   3150  ac16							;SAVE FILE COUNT
   3151  ac16		       ad 56 03 	      lda	TBL_CLBUF +CLBUF_CNT
   3152  ac19		       d0 01		      bne	.1
   3153  ac1b		       60		      rts
   3154  ac1c				   .1
   3155  ac1c		       8d 67 03 	      sta	DL_CNTLDR
   3156  ac1f
   3157  ac1f							;------------------------
   3158  ac1f							;PREPARE TO READ PACKAGE
   3159  ac1f							;------------------------
   3160  ac1f		       20 fc ad 	      jsr	RAMD_INIT	;INIT RAM DISK
   3161  ac22		       a9 40		      lda	#FEMOD_ROM	;ROM MODUS
   3162  ac24		       8d 1a 02 	      sta	__RAMD_READ_MODE
   3163  ac27
   3164  ac27		       a9 40		      lda	#FEMOD_ROM	;ROM MODUS
   3165  ac29		       0d 5b 03 	      ora	TBL_CLBUF +CLBUF_SBANK	;+ BANK
   3166  ac2c		       a8		      tay
   3167  ac2d		       ad 5a 03 	      lda	TBL_CLBUF +CLBUF_SADR +1
   3168  ac30		       ae 59 03 	      ldx	TBL_CLBUF +CLBUF_SADR
   3169  ac33		       8d 17 02 	      sta	__RAMD_READ_ADR +1	;ADR HI
   3170  ac36		       8e 16 02 	      stx	__RAMD_READ_ADR	;ADR LO
   3171  ac39		       8c 11 02 	      sty	__RAMD_READ_BANK	;BANK
   3172  ac3c		       20 79 ac 	      jsr	READ_CLHDR	;RESTORE PACKAGE HEADER
   3173  ac3f
   3174  ac3f		       20 a7 ae 	      jsr	SET_MEM_CONFIG
   3175  ac42		       20 04 e4 	      jsr	SY_INITMSG	; INIT Message (e404)
   3176  ac45		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   3177  ac48		       0d 0d 4c 4f*	      dc.b	CR,CR,"LOADING PACKAGE...",CR,0
   3178  ac5e
   3179  ac5e		       a9 40		      lda	#FEMOD_ROM
   3180  ac60		       8d 02 9c 	      sta	IO_FINAL	; EEPROM!
   3181  ac63
   3182  ac63		       ad 67 03 	      lda	DL_CNTLDR
   3183  ac66				   .loadfile
   3184  ac66		       48		      pha
   3185  ac67		       20 87 ac 	      jsr	READ_LDBUF	;RESTORE FILE LOAD BUFFER
   3186  ac6a		       20 95 ac 	      jsr	READ_FILE	;READ FILE FROM RAMDISK
   3187  ac6d		       68		      pla
   3188  ac6e		       aa		      tax
   3189  ac6f		       ca		      dex
   3190  ac70		       8a		      txa
   3191  ac71							;dec DL_CNTLDR
   3192  ac71		       d0 f3		      bne	.loadfile
   3193  ac73
   3194  ac73		       20 67 b2 	      jsr	PRINT_IO	;PRINT IO SETTING
   3195  ac76							;  jsr WAIT_KEY
   3196  ac76		       4c 5f a6 	      jmp	EXEC_PACKAGE
   3197  ac79
   3198  ac79
   3199  ac79
   3200  ac79							;RESTORE PACKAGE HEADER
   3201  ac79				   READ_CLHDR subroutine
   3202  ac79		       a0 00		      ldy	#0
   3203  ac7b				   .00
   3204  ac7b		       20 34 ae 	      jsr	RAMD_GETC
   3205  ac7e		       99 93 02 	      sta	BIP_CMD,y
   3206  ac81		       c8		      iny
   3207  ac82		       c0 05		      cpy	#CLHDR_END
   3208  ac84		       90 f5		      bcc	.00
   3209  ac86		       60		      rts
   3210  ac87
   3211  ac87
   3212  ac87
   3213  ac87							;RESTORE FILE LOAD BUFFER
   3214  ac87				   READ_LDBUF subroutine
   3215  ac87		       a0 00		      ldy	#0
   3216  ac89				   .00
   3217  ac89		       20 34 ae 	      jsr	RAMD_GETC
   3218  ac8c		       99 6d 03 	      sta	DL_LDBUF,y
   3219  ac8f		       c8		      iny
   3220  ac90		       c0 16		      cpy	#LDBUF_END
   3221  ac92		       90 f5		      bcc	.00
   3222  ac94		       60		      rts
   3223  ac95
   3224  ac95
   3225  ac95
   3226  ac95							;READ FILE FROM RAMDISK
   3227  ac95				   READ_FILE  subroutine
   3228  ac95		       20 0f ab 	      jsr	SET_PT2_LDBUF
   3229  ac98		       20 a8 75 	      jsr	PRINT_LOADMSG	;SET LOAD INFO, PRINT MESSAGE
   3230  ac9b
   3231  ac9b		       ad 81 03 	      lda	DL_LDBUF +LDBUF_FLEN
   3232  ac9e		       85 ae		      sta	LOADEND	;FILE LENGTH
   3233  aca0		       ad 82 03 	      lda	DL_LDBUF +LDBUF_FLEN +1
   3234  aca3		       85 af		      sta	LOADEND +1	;FILE LENGTH HI
   3235  aca5
   3236  aca5							;ldx DL_LDBUF +LDBUF_TYP
   3237  aca5							;cpx #"C"
   3238  aca5							;beq .0
   3239  aca5
   3240  aca5		       a6 b9		      ldx	SY_SA	;SA
   3241  aca7		       e0 02		      cpx	#2
   3242  aca9		       f0 19		      beq	.0	;CARTRIDGE
   3243  acab
   3244  acab		       a5 ae		      lda	LOADEND	;SUBTRACT LOAD ADDRESS
   3245  acad		       38		      sec
   3246  acae		       e9 02		      sbc	#2
   3247  acb0		       85 ae		      sta	LOADEND
   3248  acb2		       b0 02		      bcs	.01
   3249  acb4		       c6 af		      dec	LOADEND +1
   3250  acb6				   .01
   3251  acb6
   3252  acb6		       20 34 ae 	      jsr	RAMD_GETC	;SKIP LOAD ADDRESS
   3253  acb9		       a8		      tay
   3254  acba		       20 34 ae 	      jsr	RAMD_GETC
   3255  acbd		       ca		      dex
   3256  acbe		       d0 04		      bne	.0	;SA=0: -->
   3257  acc0		       85 c4		      sta	LOADPTR +1
   3258  acc2		       84 c3		      sty	LOADPTR	;LOAD ADDRESS FROM FILE
   3259  acc4				   .0
   3260  acc4		       a9 c3		      lda	#LOADPTR
   3261  acc6		       20 94 b4 	      jsr	PRINT_ATADR_2	;PRINT LOADING FROM $xxxx
   3262  acc9		       a0 00		      ldy	#0
   3263  accb				   .1
   3264  accb		       a5 ae		      lda	LOADEND
   3265  accd		       d0 06		      bne	.2
   3266  accf		       a5 af		      lda	LOADEND +1
   3267  acd1		       f0 11		      beq	.le
   3268  acd3		       c6 af		      dec	LOADEND +1
   3269  acd5				   .2
   3270  acd5		       c6 ae		      dec	LOADEND
   3271  acd7		       20 34 ae 	      jsr	RAMD_GETC
   3272  acda		       91 c3		      sta	(LOADPTR),y
   3273  acdc		       e6 c3		      inc	LOADPTR
   3274  acde		       d0 eb		      bne	.1
   3275  ace0		       e6 c4		      inc	LOADPTR +1
   3276  ace2		       d0 e7		      bne	.1
   3277  ace4
   3278  ace4				   .le
   3279  ace4		       a9 c3		      lda	#LOADPTR
   3280  ace6		       20 af b4 	      jsr	PRINT_TOADR_2	;PRINT TO $xxxx
   3281  ace9
   3282  ace9		       a6 c3		      ldx	LOADPTR
   3283  aceb		       a4 c4		      ldy	LOADPTR +1
   3284  aced		       86 ae		      stx	LOADEND	;LOAD END POINTER FOR 3d LABY ...
   3285  acef		       84 af		      sty	LOADEND +1
   3286  acf1		       ad 7e 03 	      lda	DL_LDBUF +LDBUF_TYP
   3287  acf4		       c9 42		      cmp	#"B"
   3288  acf6		       d0 03		      bne	.nobas	;BASIC PROG? --> no
   3289  acf8		       20 59 b1 	      jsr	BASLOAD_END_2	;RELINK BASIC
   3290  acfb				   .nobas
   3291  acfb		       60		      rts
   3292  acfc
   3293  acfc
   3294  acfc
   3295  acfc
   3296  acfc		       03 6d	   DL_LDBUF   =	TBL_DATA +12	;LOAD BUFFER - bis zu 4 x DATEI,OPTIONS
   3297  acfc		       00 00	   LDBUF_LEN  =	0	;OFFSET FILENAME LENGTH
   3298  acfc		       00 01	   LDBUF_FN   =	1	;OFFSET FILENAME
   3299  acfc		       00 11	   LDBUF_TYP  =	17	;OFFSET TYPE: B=BASIC, P=PROGRAM, C=CARTRIDGE
   3300  acfc		       00 12	   LDBUF_LAD  =	18	;OFFSET LOAD ADRESS
   3301  acfc		       00 14	   LDBUF_FLEN =	20	;OFFSET FILE LENGTH
   3302  acfc		       00 16	   LDBUF_END  =	22	;STRUCT LDBUF LEN
   3303  acfc
   3304  acfc
   3305  acfc
   3306  acfc		       00 00	   CLBUF_LEN  =	0	;OFFSET ENTRY NAME LENGTH
   3307  acfc		       00 01	   CLBUF_NAM  =	1	;OFFSET ENTRY NAME
   3308  acfc		       00 15	   CLBUF_CNT  =	21	;OFFSET FILES COUNT
   3309  acfc		       00 16	   CLBUF_PLEN =	22	;OFFSET PACKAGE LENGTH
   3310  acfc		       00 18	   CLBUF_SADR =	24	;OFFSET START ADDRESS
   3311  acfc		       00 1a	   CLBUF_SBANK =	26	;OFFSET START BANK
   3312  acfc		       00 1b	   CLBUF_EADR =	27	;OFFSET END ADDRESS
   3313  acfc		       00 1d	   CLBUF_EBANK =	29	;OFFSET END BANK
   3314  acfc		       00 20	   CLBUF_END  =	32	;STRUCT LDBUF LEN
   3315  acfc
   3316  acfc		       00 00	   CLHDR_CMD  =	0	;OFFSET START COMMAND (SYS/RES/RUN)
   3317  acfc		       00 01	   CLHDR_IO1  =	1	;OFFSET IO REGISTER 1
   3318  acfc		       00 02	   CLHDR_IO2  =	2	;OFFSET IO REGISTER 2
   3319  acfc		       00 03	   CLHDR_ADR  =	3	;OFFSET START ADDRESS
   3320  acfc		       00 05	   CLHDR_END  =	5	;STRUCT LDHDR LEN
   3321  acfc
   3322  acfc
   3323  acfc							; ========================================================================
   3324  acfc							; FLASH STATISTIC (F6,F3)
   3325  acfc							; get info: number of entries, bytes free, bytes allocated
   3326  acfc							; print info, wait for key
   3327  acfc							; ========================================================================
   3328  acfc
   3329  acfc		       20 00	   CLO_STARTADR =	$2000
   3330  acfc
   3331  acfc				   FLASH_INFO subroutine
   3332  acfc							;jsr CLROUT			       ;CLEAR SCREEN
   3333  acfc		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   3334  acff		       93 0e 9e 	      dc.b	CLRHOME,FONT2,YELLOW
   3335  ad02		       23 23 20 66*	      dc.b	"## fLASH sTATUS ##",13,13,13
   3336  ad17		       05 65 4e 54*	      dc.b	WHITE,"eNTRIES: ",0
   3337  ad22
   3338  ad22		       20 6a ad 	      jsr	FLASH_SEARCH_END	;SEARCH LAST ENTRY
   3339  ad25		       a9 00		      lda	#0
   3340  ad27		       20 cd dd 	      jsr	PRNINT	;print integer in X/A
   3341  ad2a
   3342  ad2a							;txa
   3343  ad2a							;jsr HEXOUT2
   3344  ad2a
   3345  ad2a		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   3346  ad2d		       0d 0d 0d 62*	      dc.b	13,13,13,"bYTES FREE:$",0
   3347  ad3d		       20 be ad 	      jsr	FLASH_FREE	;BYTES FREE
   3348  ad40		       20 5e ad 	      jsr	HEXOUT_LA
   3349  ad43
   3350  ad43		       20 69 bf 	      jsr	SPAR_PRINTSTRING
   3351  ad46		       0d 0d 41 4c*	      dc.b	13,13,"ALLOCATED: $",0
   3352  ad55		       20 d5 ad 	      jsr	FLASH_ALLOC	;BYTES ALLOCATED
   3353  ad58		       20 5e ad 	      jsr	HEXOUT_LA
   3354  ad5b		       4c e0 a1 	      jmp	WAIT_KEY
   3355  ad5e
   3356  ad5e
   3357  ad5e
   3358  ad5e
   3359  ad5e							;PRINT LARGE ADDRESS (24 bit)
   3360  ad5e				   HEXOUT_LA  subroutine
   3361  ad5e		       a5 b7		      lda	LEN_FNAM
   3362  ad60		       20 49 b8 	      jsr	HEXOUT2
   3363  ad63		       a5 bc		      lda	PTR_FNAM +1
   3364  ad65		       a6 bb		      ldx	PTR_FNAM
   3365  ad67		       4c 45 b8 	      jmp	HEXOUT4
   3366  ad6a
   3367  ad6a
   3368  ad6a
   3369  ad6a							;SEARCH LAST ENTRY / COUNT IN XR
   3370  ad6a				   FLASH_SEARCH_END subroutine
   3371  ad6a		       a9 40		      lda	#FEMOD_ROM	;ROM MODUS
   3372  ad6c		       8d 02 9c 	      sta	IO_FINAL
   3373  ad6f		       20 e8 ad 	      jsr	SET_CLO_START	;SET CLOADER TABLE ADDRESS
   3374  ad72		       a2 00		      ldx	#0
   3375  ad74		       a0 00		      ldy	#0
   3376  ad76		       f0 03		      beq	.00
   3377  ad78
   3378  ad78				   .03
   3379  ad78		       20 8c ad 	      jsr	.07
   3380  ad7b				   .00
   3381  ad7b		       b1 c3		      lda	(LOADPTR),y
   3382  ad7d		       c9 ff		      cmp	#$ff
   3383  ad7f		       f0 08		      beq	.tblend	;TABLE END!!
   3384  ad81		       e8		      inx
   3385  ad82		       98		      tya
   3386  ad83		       d0 f3		      bne	.03
   3387  ad85
   3388  ad85		       a0 20		      ldy	#CLBUF_END	;ENTRY LENGTH
   3389  ad87		       d0 f2		      bne	.00
   3390  ad89
   3391  ad89				   .tblend
   3392  ad89		       60		      rts
   3393  ad8a
   3394  ad8a
   3395  ad8a				   ADD_CLBUF
   3396  ad8a		       a9 20		      lda	#CLBUF_END	;ENTRY LENGTH
   3397  ad8c				   .07
   3398  ad8c		       18		      clc
   3399  ad8d		       65 c3		      adc	LOADPTR
   3400  ad8f		       85 c3		      sta	LOADPTR
   3401  ad91		       90 02		      bcc	.08
   3402  ad93		       e6 c4		      inc	LOADPTR +1
   3403  ad95				   .08
   3404  ad95		       60		      rts
   3405  ad96
   3406  ad96
   3407  ad96
   3408  ad96							;CALC PACKAGE START ADDRESS
   3409  ad96				   FLASH_SADR subroutine
   3410  ad96		       a0 18		      ldy	#CLBUF_SADR
   3411  ad98		       d0 02		      bne	.00
   3412  ad9a
   3413  ad9a							;CALC PACKAGE END ADDRESS
   3414  ad9a				   FLASH_EADR
   3415  ad9a		       a0 1b		      ldy	#CLBUF_EADR
   3416  ad9c				   .00
   3417  ad9c		       b1 c3		      lda	(LOADPTR),y
   3418  ad9e		       aa		      tax
   3419  ad9f		       c8		      iny
   3420  ada0		       b1 c3		      lda	(LOADPTR),y
   3421  ada2		       48		      pha
   3422  ada3		       c8		      iny
   3423  ada4		       b1 c3		      lda	(LOADPTR),y
   3424  ada6		       c9 ff		      cmp	#$ff
   3425  ada8		       d0 09		      bne	.01
   3426  adaa
   3427  adaa		       68		      pla
   3428  adab		       a9 20		      lda	#>$2000	;BLK 1 :: START OF CATALOG
   3429  adad		       a2 00		      ldx	#<$2000
   3430  adaf		       a0 01		      ldy	#1
   3431  adb1		       d0 04		      bne	.02
   3432  adb3
   3433  adb3				   .01
   3434  adb3		       29 0f		      and	#$0f	;BANK
   3435  adb5		       a8		      tay
   3436  adb6		       68		      pla
   3437  adb7				   .02
   3438  adb7		       85 bc		      sta	PTR_FNAM +1	;ADR HI
   3439  adb9		       86 bb		      stx	PTR_FNAM	;ADR LO
   3440  adbb		       84 b7		      sty	LEN_FNAM	;BANK
   3441  adbd		       60		      rts
   3442  adbe
   3443  adbe
   3444  adbe
   3445  adbe							;CALC ALLOCATED BYTES IN FLASH (YR/XR/AC)
   3446  adbe				   FLASH_FREE subroutine
   3447  adbe		       20 d5 ad 	      jsr	FLASH_ALLOC
   3448  adc1		       38		      sec
   3449  adc2		       a9 00		      lda	#0	;BUILD COMPLEMENT
   3450  adc4		       e5 bb		      sbc	PTR_FNAM
   3451  adc6		       85 bb		      sta	PTR_FNAM
   3452  adc8		       a9 80		      lda	#$80
   3453  adca		       e5 bc		      sbc	PTR_FNAM +1
   3454  adcc		       85 bc		      sta	PTR_FNAM +1
   3455  adce		       a9 07		      lda	#7
   3456  add0		       e5 b7		      sbc	LEN_FNAM
   3457  add2		       85 b7		      sta	LEN_FNAM
   3458  add4		       60		      rts
   3459  add5
   3460  add5
   3461  add5
   3462  add5							;CALC FREE BYTES IN FLASH (YR/XR/AC)
   3463  add5				   FLASH_ALLOC subroutine
   3464  add5		       20 9a ad 	      jsr	FLASH_EADR
   3465  add8		       a5 bc		      lda	PTR_FNAM +1	;ADR HI
   3466  adda		       20 ef ad 	      jsr	CALC_BLK2OFFS	;BLOCK ADDRESS TO OFFSET
   3467  addd		       c6 b7		      dec	LEN_FNAM
   3468  addf		       46 b7		      lsr	LEN_FNAM	;64K BLOCK - HI HI
   3469  ade1		       90 02		      bcc	.04
   3470  ade3		       09 80		      ora	#$80	;ADD 32K ON ODD BANK
   3471  ade5				   .04
   3472  ade5		       85 bc		      sta	PTR_FNAM +1	;ADR HI
   3473  ade7		       60		      rts
   3474  ade8
   3475  ade8
   3476  ade8
   3477  ade8							;---- SET CLOADER TABLE ADDRESS
   3478  ade8				   SET_CLO_START subroutine
   3479  ade8		       a9 00		      lda	#<CLO_STARTADR
   3480  adea		       a0 20		      ldy	#>CLO_STARTADR
   3481  adec		       4c 1c ab 	      jmp	SET_LPT_AY
   3482  adef
   3483  adef
   3484  adef
   3485  adef							;---- BLOCK ADDRESS TO OFFSET
   3486  adef				   CALC_BLK2OFFS subroutine
   3487  adef		       c9 a0		      cmp	#$a0
   3488  adf1		       90 03		      bcc	.00
   3489  adf3							;adr $A to $C
   3490  adf3		       38		      sec
   3491  adf4		       e9 20		      sbc	#$20
   3492  adf6				   .00
   3493  adf6							;adr $2 to $8
   3494  adf6		       38		      sec
   3495  adf7		       e9 20		      sbc	#$20
   3496  adf9		       29 7f		      and	#$7f
   3497  adfb		       60		      rts
   3498  adfc
   3499  adfc
   3500  adfc
   3501  adfc
   3502  adfc							;CLOADER HEADER (CLOAD BUFFER)
   3503  adfc		       00 00	   CLBUF_LEN  =	0	;OFFSET ENTRY NAME LENGTH
   3504  adfc		       00 01	   CLBUF_NAM  =	1	;OFFSET ENTRY NAME
   3505  adfc		       00 15	   CLBUF_CNT  =	21	;OFFSET FILES COUNT
   3506  adfc		       00 16	   CLBUF_PLEN =	22	;OFFSET PACKAGE LENGTH
   3507  adfc		       00 18	   CLBUF_SADR =	24	;OFFSET START ADDRESS
   3508  adfc		       00 1a	   CLBUF_SBANK =	26	;OFFSET START BANK
   3509  adfc		       00 1b	   CLBUF_EADR =	27	;OFFSET END ADDRESS
   3510  adfc		       00 1d	   CLBUF_EBANK =	29	;OFFSET END BANK
   3511  adfc		       00 20	   CLBUF_END  =	32	;STRUCT LDBUF LEN
   3512  adfc
   3513  adfc
   3514  adfc
   3515  adfc							; ========================================================================
   3516  adfc							; RAM DISK
   3517  adfc							; ========================================================================
   3518  adfc
   3519  adfc							;PREPARE FOR READ
   3520  adfc				   RAMD_INIT  subroutine
   3521  adfc		       a0 20		      ldy	#(__RAMDISK_E - __RAMDISK)
   3522  adfe		       a9 ae		      lda	#>__RAMDISK
   3523  ae00		       a2 63		      ldx	#<__RAMDISK
   3524  ae02		       4c 03 b9 	      jmp	COPY_PROC
   3525  ae05
   3526  ae05
   3527  ae05							;GET SIZE
   3528  ae05				   RAMD_SIZE  subroutine
   3529  ae05		       ad 02 02 	      lda	__RAMD_WRITE_BANK
   3530  ae08		       29 0f		      and	#15
   3531  ae0a		       a8		      tay
   3532  ae0b		       88		      dey
   3533  ae0c		       88		      dey
   3534  ae0d
   3535  ae0d		       ad 09 02 	      lda	__RAMD_WRITE_ADR +1
   3536  ae10		       c9 80		      cmp	#$80
   3537  ae12		       90 02		      bcc	.08
   3538  ae14
   3539  ae14		       e9 20		      sbc	#($A0 - $80)
   3540  ae16				   .08
   3541  ae16		       38		      sec
   3542  ae17		       e9 20		      sbc	#>FLLO_STARTADR
   3543  ae19
   3544  ae19		       ae 08 02 	      ldx	__RAMD_WRITE_ADR
   3545  ae1c		       60		      rts
   3546  ae1d
   3547  ae1d
   3548  ae1d							;-----------------------
   3549  ae1d				   RAMD_PUTC  subroutine
   3550  ae1d		       20 00 02 	      jsr	__RAMD_PUTC
   3551  ae20							;-----------------------
   3552  ae20				   RAMD_PUTC_REST subroutine
   3553  ae20		       ee 08 02 	      inc	__RAMD_WRITE_ADR
   3554  ae23		       d0 0e		      bne	.exit
   3555  ae25
   3556  ae25		       ad 09 02 	      lda	__RAMD_WRITE_ADR +1
   3557  ae28		       20 4d ae 	      jsr	RAMD_INC_PTR
   3558  ae2b		       8d 09 02 	      sta	__RAMD_WRITE_ADR +1
   3559  ae2e		       90 03		      bcc	.exit
   3560  ae30
   3561  ae30		       ee 02 02 	      inc	__RAMD_WRITE_BANK
   3562  ae33				   .exit
   3563  ae33		       60		      rts
   3564  ae34
   3565  ae34
   3566  ae34							;-----------------------
   3567  ae34				   RAMD_GETC  subroutine
   3568  ae34		       20 10 02 	      jsr	__RAMD_GETC
   3569  ae37							;-----------------------
   3570  ae37				   RAMD_GETC_REST subroutine
   3571  ae37		       ee 16 02 	      inc	__RAMD_READ_ADR
   3572  ae3a		       d0 10		      bne	.exit
   3573  ae3c
   3574  ae3c		       48		      pha
   3575  ae3d		       ad 17 02 	      lda	__RAMD_READ_ADR +1
   3576  ae40		       20 4d ae 	      jsr	RAMD_INC_PTR
   3577  ae43		       8d 17 02 	      sta	__RAMD_READ_ADR +1
   3578  ae46		       90 03		      bcc	.exit2
   3579  ae48		       ee 11 02 	      inc	__RAMD_READ_BANK
   3580  ae4b				   .exit2
   3581  ae4b		       68		      pla
   3582  ae4c				   .exit
   3583  ae4c		       60		      rts
   3584  ae4d
   3585  ae4d
   3586  ae4d
   3587  ae4d							;-----------------------
   3588  ae4d				   RAMD_INC_PTR subroutine
   3589  ae4d		       38		      sec
   3590  ae4e		       69 00		      adc	#0
   3591  ae50		       c9 80		      cmp	#$80
   3592  ae52		       90 0e		      bcc	.exit
   3593  ae54
   3594  ae54		       c9 a0		      cmp	#$A0
   3595  ae56		       b0 04		      bcs	.01
   3596  ae58
   3597  ae58		       a9 a0		      lda	#$A0
   3598  ae5a		       d0 06		      bne	.exit
   3599  ae5c
   3600  ae5c				   .01
   3601  ae5c		       c9 c0		      cmp	#$C0
   3602  ae5e		       90 02		      bcc	.exit
   3603  ae60				   .02
   3604  ae60		       a9 20		      lda	#>FLLO_STARTADR
   3605  ae62				   .exit
   3606  ae62		       60		      rts
   3607  ae63
   3608  ae63
   3609  ae63
   3610  ae63							;-------- SUPER RAM PROCEDURE TO WRITE A BYTE
   3611  ae63				   __RAMDISK
   3612  ae63					      RORG	BIP
   3613  ae63
   3614  ae63				   __RAMD_PUTC subroutine
   3615  ae63		       48		      pha
   3616  ae64
   3617  ae64		       02 02	   __RAMD_WRITE_BANK =	. +1
   3618  ae64		       a9 a0		      lda	#FEMOD_SRAM + 0	;SUPER RAM MODUS, BANK 0
   3619  ae66		       8d 02 9c 	      sta	IO_FINAL
   3620  ae69
   3621  ae69		       68		      pla
   3622  ae69		       02 08	   __RAMD_WRITE_ADR =	. +1
   3623  ae6a		       8d 00 20 	      sta	FLLO_STARTADR
   3624  ae6d
   3625  ae6d		       02 0b	   __RAMD_WRITE_MODE =	. +1
   3626  ae6d		       a9 90		      lda	#FEMOD_RAM_1 +$10	;RAM MODUS, BLK-5 PROTECTED
   3627  ae6f							; lda #FEMOD_ROM			 ;ROM MODUS
   3628  ae6f		       8d 02 9c 	      sta	IO_FINAL
   3629  ae72		       60		      rts
   3630  ae73
   3631  ae73
   3632  ae73							;-------- SUPER RAM PROCEDURE TO READ A BYTE
   3633  ae73
   3634  ae73				   __RAMD_GETC subroutine
   3635  ae73		       02 11	   __RAMD_READ_BANK =	. +1
   3636  ae73		       a9 a0		      lda	#FEMOD_SRAM + 0	;SUPER RAM MODUS, BANK 0
   3637  ae75		       8d 02 9c 	      sta	IO_FINAL
   3638  ae78
   3639  ae78		       02 16	   __RAMD_READ_ADR =	. +1
   3640  ae78		       ad 00 20 	      lda	FLLO_STARTADR
   3641  ae7b		       48		      pha
   3642  ae7c
   3643  ae7c		       02 1a	   __RAMD_READ_MODE =	. +1
   3644  ae7c							;  lda #FEMOD_RAM_1 +$10		  ;RAM MODUS, BLK-5 PROTECTED
   3645  ae7c		       a9 40		      lda	#FEMOD_ROM	;ROM MODUS
   3646  ae7e		       8d 02 9c 	      sta	IO_FINAL
   3647  ae81		       68		      pla
   3648  ae82		       60		      rts
   3649  ae83
   3650  ae83					      REND
   3651  ae83				   __RAMDISK_E
   3652  ae83
   3653  ae83
   3654  ae83
   3655  ae83
   3656  ae83
   3657  ae83
   3658  ae83
   3659  ae83							; ==============================================================
   3660  ae83							; SET MEMORY CONFIG
   3661  ae83							; ==============================================================
   3662  ae83
   3663  ae83				   MOVE_WEDGE_LOW subroutine
   3664  ae83		       a9 40		      lda	#<MY_WEDGE_LO	; store the new dest address lo-byte
   3665  ae85		       a0 03		      ldy	#>MY_WEDGE_LO	; store the new dest address hi-byte $516
   3666  ae87
   3667  ae87
   3668  ae87							;MOVE_WEDGE
   3669  ae87							;sty mwcmd + 1 		       ; store the new dest address hi-byte $516
   3670  ae87							;stx mwcmd			       ; store the new dest address lo-byte
   3671  ae87							;txa
   3672  ae87
   3673  ae87		       18		      clc
   3674  ae88		       69 aa		      adc	#<(MY_WEDGE_END - MY_WEDGE_START)
   3675  ae8a		       85 58		      sta	$58	; low-byte new end address +1 $0501+fl len
   3676  ae8c
   3677  ae8c		       98		      tya
   3678  ae8d		       69 0c		      adc	#>(MY_WEDGE_END - MY_WEDGE_START)
   3679  ae8f		       85 59		      sta	$59	; high-byte new end address +1 $0501+fl len
   3680  ae91
   3681  ae91		       a9 23		      lda	#<MY_WEDGE_START
   3682  ae93		       85 5f		      sta	$5f	; low-byte start address $a000
   3683  ae95		       a9 af		      lda	#>MY_WEDGE_START
   3684  ae97		       85 60		      sta	$60	; high-byte start address $a000
   3685  ae99
   3686  ae99		       a9 cd		      lda	#<MY_WEDGE_END
   3687  ae9b		       85 5a		      sta	$5a	; low-byte end address +1 $a???
   3688  ae9d		       a9 bb		      lda	#>MY_WEDGE_END
   3689  ae9f		       85 5b		      sta	$5b	; high-byte end address +1 $a???
   3690  aea1
   3691  aea1							;  sei
   3692  aea1		       20 bf c3 	      jsr	SY_MOVEMEM	; execute move memory vic routine and return
   3693  aea4							;  cli
   3694  aea4		       4c 40 03 	      jmp	MY_WEDGE_LO
   3695  aea7
   3696  aea7							;  jsr .01
   3697  aea7							;  cli
   3698  aea7							;  rts
   3699  aea7
   3700  aea7							;.01
   3701  aea7							;  jmp (mwcmd)
   3702  aea7
   3703  aea7
   3704  aea7				   MOVE_CODE
   3705  aea7
   3706  aea7
   3707  aea7
   3708  aea7
   3709  aea7
   3710  aea7
   3711  aea7							; ==============================================================
   3712  aea7							; SET MEMORY CONFIG
   3713  aea7							; ==============================================================
   3714  aea7
   3715  aea7							;  lda #$9F			;0kb
   3716  aea7							;  lda #$9E			;3kb
   3717  aea7							;  lda #$9D			;8kb	      %1001 1101
   3718  aea7							;  lda #$99			;16kb	      %1001 1001
   3719  aea7							;  lda #$91			;24kb	      %1001 0001
   3720  aea7							;  lda #$90			;24+3kb       %1001 0000
   3721  aea7							;  lda #$80			;ALL RAM      %1000 0000
   3722  aea7
   3723  aea7				   SET_MEM_CONFIG SUBROUTINE
   3724  aea7							;  jsr CLROUT				  ;CLEAR SCREEN
   3725  aea7		       ad 94 02 	      lda	BIP_IOBASE
   3726  aeaa		       8d 02 9c 	      sta	IO_FINAL
   3727  aead		       0d 95 02 	      ora	BIP_IOBASE +1
   3728  aeb0
   3729  aeb0				   SetVicMemConfig subroutine
   3730  aeb0		       aa		      tax
   3731  aeb1		       29 03		      and	#$03
   3732  aeb3		       c9 02		      cmp	#$02
   3733  aeb5		       f0 1f		      beq	SetVicAs3K
   3734  aeb7		       c9 03		      cmp	#$03
   3735  aeb9		       f0 13		      beq	SetVicAsUnexpanded
   3736  aebb		       8a		      txa
   3737  aebc		       29 0c		      and	#$0c
   3738  aebe		       c9 0c		      cmp	#$0c
   3739  aec0		       f0 1c		      beq	SetVicAs8K
   3740  aec2		       c9 00		      cmp	#$00
   3741  aec4		       f0 20		      beq	SetVicAs24K
   3742  aec6
   3743  aec6				   SetVicAs16K		; set vic as 16k expanded
   3744  aec6		       a9 10		      lda	#$10	; Screen memory page start $1000 (hi-byte)
   3745  aec8		       a2 12		      ldx	#$12	; Start of memory $1200 (hi-byte)
   3746  aeca		       a0 60		      ldy	#$60	; Top of memory $6000 (hi-byte)
   3747  aecc		       d0 1e		      bne	dir_unexpand
   3748  aece
   3749  aece				   SetVicAsUnexpanded		; set vic as unexpanded
   3750  aece		       a9 1e		      lda	#$1e	; Screen memory page start $1e00 (hi-byte)
   3751  aed0		       a2 10		      ldx	#$10	; Start of memory $1000 (hi-byte)
   3752  aed2		       a0 1e		      ldy	#$1e	; Top of memory $1e00 (hi-byte)
   3753  aed4		       d0 16		      bne	dir_unexpand
   3754  aed6
   3755  aed6				   SetVicAs3K		; set vic as 3k expanded
   3756  aed6		       a9 1e		      lda	#$1e	; Screen memory page start $1e00 (hi-byte)
   3757  aed8		       a2 04		      ldx	#$04	; Start of memory $0400 (hi-byte)
   3758  aeda		       a0 1e		      ldy	#$1e	; Top of memory $1e00 (hi-byte)
   3759  aedc		       d0 0e		      bne	dir_unexpand
   3760  aede
   3761  aede				   SetVicAs8K		; set vic as 8k expanded
   3762  aede		       a9 10		      lda	#$10	; Screen memory page start $1000 (hi-byte)
   3763  aee0		       a2 12		      ldx	#$12	; Start of memory $1200 (hi-byte)
   3764  aee2		       a0 40		      ldy	#$40	; Top of memory $4000 (hi-byte)
   3765  aee4		       d0 06		      bne	dir_unexpand
   3766  aee6
   3767  aee6				   SetVicAs24K		; set vic as 24k expanded
   3768  aee6		       a9 10		      lda	#$10	; Screen memory page start $1000 (hi-byte)
   3769  aee8		       a2 12		      ldx	#$12	; Start of memory $1200 (hi-byte)
   3770  aeea		       a0 80		      ldy	#$80	; Top of memory $6000 (hi-byte)
   3771  aeec
   3772  aeec				   dir_unexpand 		;@@@
   3773  aeec		       8d 88 02 	      sta	dir_screen_mem_page	; Screen memory page start (hi-byte)
   3774  aeef							;  lda dir_start_memory_hi
   3775  aeef		       8e 82 02 	      stx	dir_start_memory_hi	; Start of memory (hi-byte)
   3776  aef2		       8c 84 02 	      sty	dir_top_memory_hi	; Top of memory (hi-byte)
   3777  aef5
   3778  aef5							;jsr UnexpandMoveMemory
   3779  aef5
   3780  aef5							;jsr SY_INITIO2			; Initialize I/O
   3781  aef5		       4c 4e a1 	      jmp	INIT_BASIC
   3782  aef8
   3783  aef8
   3784  aef8
   3785  aef8
   3786  aef8
   3787  aef8							;Pad to end to create valid cart image
   3788  aef8							;  org $afff
   3789  aef8							;  dc.b #$00
   3790  aef8
   3791  aef8
   3792  aef8
   3793  aef8
   3794  aef8
   3795  aef8
   3796  aef8
   3797  aef8
   3798  aef8
   3799  aef8
   3800  aef8
   3801  aef8
   3802  aef8
   3803  aef8
   3804  aef8
   3805  aef8
   3806  aef8
   3807  aef8
   3808  aef8
   3809  aef8							; ==============================================================
   3810  aef8							; MY BIG WEDGE (ROM only)
   3811  aef8							; ==============================================================
   3812  aef8
   3813  aef8				   ROM_INPLOOP subroutine
   3814  aef8		       c9 5f		      cmp	#95	; SAVE? (left arrow)
   3815  aefa		       f0 07		      beq	DO_SAVE
   3816  aefc		       aa		      tax
   3817  aefd		       68		      pla
   3818  aefe		       68		      pla
   3819  aeff		       8a		      txa
   3820  af00		       4c 39 b1 	      jmp	RAM_INPUT_LOOP
   3821  af03
   3822  af03
   3823  af03				   DO_SAVE    subroutine
   3824  af03		       ae 3e 03 	      ldx	F_CURDEV	; device#
   3825  af06		       a9 01		      lda	#$01	; lfn #01
   3826  af08		       a8		      tay
   3827  af09		       20 ba ff 	      jsr	SETLFS
   3828  af0c		       20 0c b3 	      jsr	GET_FILENAM
   3829  af0f							;jmp $e156
   3830  af0f
   3831  af0f				   .1
   3832  af0f		       a6 2d		      ldx	BASVAR
   3833  af11		       a4 2e		      ldy	BASVAR +1
   3834  af13		       a9 2b		      lda	#BASSTRT
   3835  af15		       20 d8 ff 	      jsr	$ffd8
   3836  af18		       b0 01		      bcs	.2
   3837  af1a		       60		      rts
   3838  af1b							;jmp CROUT
   3839  af1b
   3840  af1b				   .2
   3841  af1b		       a9 00		      lda	#EXEC_SAVE
   3842  af1d		       20 35 a1 	      jsr	EXECUTE_R
   3843  af20		       b0 ed		      bcs	.1
   3844  af22
   3845  af22				   .rts
   3846  af22		       60		      rts
   3847  af23
   3848  af23							;jmp MY_IECSAVE
   3849  af23
   3850  af23
   3851  af23
   3852  af23							;jmp MY_WDGE_START
   3853  af23
   3854  af23				   MY_WEDGE_START
   3855  af23
   3856  af23
   3857  af23
   3858  af23
   3859  af23							; == START OF MINI WEDGE ============================================================
   3860  af23
   3861  af23
   3862  af23							; ==============================================================
   3863  af23							; RELOCATOR
   3864  af23							; ==============================================================
   3865  af23
   3866  af23		       01 00	   STACK      =	$0100
   3867  af23
   3868  af23
   3869  af23		       ff a2	   SY_TIMOUTFLG =	$ffa2
   3870  af23		       ff b7	   SY_GETSTATUS =	$ffb7
   3871  af23
   3872  af23
   3873  af23				   MY_RELOCATOR subroutine
   3874  af23		       af 25	   _relo      =	. +2
   3875  af23		       20 b7 ff 	      jsr	SY_GETSTATUS	;WEDGE ADDRESS TO STACK
   3876  af23		       af 27	   _relo0000  =	. +1
   3877  af26		       ad 25 af 	      lda	_relo
   3878  af29		       ba		      tsx
   3879  af2a		       bd 00 01 	      lda	STACK,x	;ADR HIGH
   3880  af2d		       a8		      tay
   3881  af2e		       ca		      dex
   3882  af2f		       bd 00 01 	      lda	STACK,x	;ADR LO
   3883  af32		       85 22		      sta	PT1
   3884  af34		       84 23		      sty	PT1 +1
   3885  af36							;  sta PT3
   3886  af36							;  sty PT3 +1				  ;BASE ADDRESS
   3887  af36
   3888  af36		       a0 02		      ldy	#(_relo0000 - _relo)
   3889  af38		       38		      sec
   3890  af39		       f1 22		      sbc	(PT1),y
   3891  af3b		       85 24		      sta	PT2
   3892  af3d		       c8		      iny
   3893  af3e		       a5 23		      lda	PT1 +1
   3894  af40		       f1 22		      sbc	(PT1),y
   3895  af42		       85 25		      sta	PT2 +1
   3896  af44		       05 24		      ora	PT2
   3897  af46		       f0 52		      beq	RELO_E	;RELOCATION NOT NESSECARY
   3898  af48
   3899  af48
   3900  af48				   RELO_0
   3901  af48		       18		      clc
   3902  af49		       a9 00		      lda	#>(RELO_TAB - _relo)
   3903  af4b		       65 23		      adc	PT1 +1	;RELO_TAB POINTER HI
   3904  af4d		       85 23		      sta	PT1 +1
   3905  af4f		       a9 a3		      lda	#<(RELO_TAB - _relo)
   3906  af51		       a2 01		      ldx	#1
   3907  af53				   RELO_2
   3908  af53		       86 08		      stx	FLGCOM
   3909  af55				   RELO_3
   3910  af55		       18		      clc
   3911  af56		       65 22		      adc	PT1
   3912  af58		       85 22		      sta	PT1	;RELO_TAB POINTER LO
   3913  af5a		       90 02		      bcc	RELO_3a
   3914  af5c		       e6 23		      inc	PT1 +1	;RELO_TAB POINTER HI
   3915  af5e				   RELO_3a
   3916  af5e		       a0 00		      ldy	#0
   3917  af60		       b1 22		      lda	(PT1),y
   3918  af62		       d0 12		      bne	RELO_3c
   3919  af64
   3920  af64		       aa		      tax
   3921  af65		       c8		      iny
   3922  af66		       b1 22		      lda	(PT1),y
   3923  af68		       d0 0a		      bne	RELO_3b
   3924  af6a
   3925  af6a							;-------------- 00.00 GET OFFSET
   3926  af6a		       c8		      iny
   3927  af6b		       b1 22		      lda	(PT1),y
   3928  af6d		       f0 2b		      beq	RELO_E
   3929  af6f		       aa		      tax
   3930  af70		       a9 03		      lda	#3
   3931  af72		       d0 df		      bne	RELO_2
   3932  af74
   3933  af74				   RELO_3b
   3934  af74		       88		      dey
   3935  af75		       8a		      txa
   3936  af76				   RELO_3c
   3937  af76		       18		      clc
   3938  af77		       65 24		      adc	PT2
   3939  af79		       91 22		      sta	(PT1),y
   3940  af7b		       85 c3		      sta	LOADPTR	;MODIFY ADDRESS LO
   3941  af7d		       c8		      iny
   3942  af7e		       b1 22		      lda	(PT1),y
   3943  af80		       65 25		      adc	PT2 +1
   3944  af82		       91 22		      sta	(PT1),y
   3945  af84		       85 c4		      sta	LOADPTR +1	;MODIFY ADDRESS HI
   3946  af86
   3947  af86		       88		      dey
   3948  af87		       18		      clc
   3949  af88		       b1 c3		      lda	(LOADPTR),y
   3950  af8a		       65 24		      adc	PT2
   3951  af8c		       91 c3		      sta	(LOADPTR),y	;RELINK ADDRESS LO
   3952  af8e		       a4 08		      ldy	FLGCOM
   3953  af90		       b1 c3		      lda	(LOADPTR),y
   3954  af92		       65 25		      adc	PT2 +1
   3955  af94		       91 c3		      sta	(LOADPTR),y	;RELINK ADDRESS HI
   3956  af96
   3957  af96		       a9 02		      lda	#2
   3958  af98		       d0 bb		      bne	RELO_3
   3959  af9a
   3960  af9a				   RELO_E
   3961  af9a							;_relo0003 = . +1
   3962  af9a							;  jmp MY_WEDGE_INIT
   3963  af9a
   3964  af9a
   3965  af9a
   3966  af9a
   3967  af9a							; ==============================================================
   3968  af9a							; MY WEDGE
   3969  af9a							; ==============================================================
   3970  af9a
   3971  af9a		       03 00	   PTR_ERROR_OUT =	$0300
   3972  af9a		       03 02	   PTR_INPUT_LOOP =	$0302
   3973  af9a		       03 0a	   PTR_FRMELEM =	$030a
   3974  af9a		       03 30	   PTR_LOAD   =	$0330
   3975  af9a		       03 32	   PTR_SAVE   =	$0332
   3976  af9a
   3977  af9a							;-------------------- WEDGE INIT
   3978  af9a				   MY_WEDGE_INIT
   3979  af9a		       af 9b	   _relo5000  =	. +1
   3980  af9a		       a9 3c		      lda	#<INPUT_LOOP
   3981  af9c		       a2 b1		      ldx	#>INPUT_LOOP
   3982  af9e		       8d 02 03 	      sta	PTR_INPUT_LOOP
   3983  afa1		       8e 03 03 	      stx	PTR_INPUT_LOOP +1
   3984  afa1		       af a5	   _relo5001  =	. +1
   3985  afa4		       a9 61		      lda	#<MY_LOAD
   3986  afa6		       a2 b3		      ldx	#>MY_LOAD
   3987  afa8		       8d 30 03 	      sta	PTR_LOAD
   3988  afab		       8e 31 03 	      stx	PTR_LOAD +1
   3989  afab		       af af	   _relo5003  =	. +1
   3990  afae		       a9 c2		      lda	#<MY_SAVE
   3991  afb0		       a2 b4		      ldx	#>MY_SAVE
   3992  afb2		       8d 32 03 	      sta	PTR_SAVE
   3993  afb5		       8e 33 03 	      stx	PTR_SAVE +1
   3994  afb5		       af b9	   _relo5002  =	. +1
   3995  afb8		       a9 45		      lda	#<MY_FRMELEM
   3996  afba		       a2 b7		      ldx	#>MY_FRMELEM
   3997  afbc		       8d 0a 03 	      sta	PTR_FRMELEM
   3998  afbf		       8e 0b 03 	      stx	PTR_FRMELEM +1
   3999  afc2		       a9 08		      lda	#$08
   4000  afc4		       8d 3e 03 	      sta	F_CURDEV
   4001  afc7		       60		      rts
   4002  afc8
   4003  afc8
   4004  afc8
   4005  afc8							; ==============================================================
   4006  afc8							; RELOCATOR TABLE
   4007  afc8							; ==============================================================
   4008  afc8
   4009  afc8							;  org $be00
   4010  afc8
   4011  afc8
   4012  afc8				   RELO_TAB		;RELOC TABLE - 2 BYTE OFFSET LOW/HI
   4013  afc8		       27 af		      dc.w	_relo0000
   4014  afca		       3a b1 77 b1	      dc.w	_relo0001,_relo0002	;,_relo0003
   4015  afce		       f3 b5 92 b1*	      dc.w	_relo0010,_relo0011,_relo0012,_relo0013,_relo0014,_relo0015,_relo0016
   4016  afdc		       c2 b1 c6 b1*	      dc.w	_relo0020,_relo0021,_relo0022,_relo0023,_relo0024,_relo0025,_relo0026
   4017  afea		       0d b2 10 b2*	      dc.w	_relo0030,_relo0031,_relo0032 ,_relo0037,_relo0038,_relo0039
   4018  aff6		       79 b2 ab b2*	      dc.w	_relo0040,_relo0041,_relo0042
   4019  affc		       e1 b2		      dc.w	_relo0050
   4020  affe		       1f b3 25 b3*	      dc.w	_relo0060,_relo0061,_relo0062
   4021  b004		       5f b3		      dc.w	_relo0072
   4022  b006		       75 b3 78 b3*	      dc.w	_relo0080,_relo0081,_relo0082 ,_relo0084,_relo0085,_relo0086,_relo0087,_relo0088	;,_relo0089
   4023  b016		       da b3 dd b3*	      dc.w	_relo0090,_relo0091, _relo0093,_relo0094,_relo0095 ,_relo0097,_relo0098
   4024  b024		       3f b5 96 b5*	      dc.w	_relo0100,_relo0101,_relo0102,_relo0103,_relo0104,_relo0105,_relo0106
   4025  b032		       f8 b5 03 b6*	      dc.w	_relo0110,_relo0111,_relo0112,_relo0113,_relo0114,_relo0115,_relo0116,_relo0117,_relo0118,_relo0119
   4026  b046		       36 b6 51 b6*	      dc.w	_relo0120,_relo0121,_relo0122,_relo0123,_relo0124,_relo0125,_relo0126,_relo0127,_relo0128,_relo0129
   4027  b05a		       8f b6 92 b6*	      dc.w	_relo0130,_relo0131,_relo0132,_relo0133,_relo0134,_relo0135
   4028  b066		       bf b6 ce b6	      dc.w	_relo0141,_relo0142	;,_relo0143,_relo0144
   4029  b06a		       5b b7 88 b7	      dc.w	_relo0150,_relo0151
   4030  b06e		       9e b7		      dc.w	_relo0160
   4031  b070		       bb b7 c4 b7*	      dc.w	_relo0170,_relo0171,_relo0172,_relo0173,_relo0174,_relo0175
   4032  b07c		       0f b8 16 b8*	      dc.w	_relo0180,_relo0181,_relo0182, _relo0184,_relo0185,_relo0186,_relo0187,_relo0188,_relo0189
   4033  b08e		       46 b8 4f b8	      dc.w	_relo0200,_relo0201
   4034  b092		       6a b8 70 b8	      dc.w	_relo0211,_relo0212
   4035  b096		       89 b8 8f b8*	      dc.w	_relo0220,_relo0221,_relo0222
   4036  b09c		       e0 b8 e4 b8	      dc.w	_relo0230,_relo0231
   4037  b0a0		       f8 b8 fb b8	      dc.w	_relo0250,_relo0251
   4038  b0a4		       9c b3 91 b5*	      dc.w	_relo0300, _relo0303, _relo0305,_relo0306,_relo0307,_relo0308,_relo0309
   4039  b0b2		       8a b5 99 b5*	      dc.w	_relo0310,_relo0311,_relo0312,_relo0313,_relo0314,_relo0315,_relo0316,_relo0317,_relo0318,_relo0319
   4040  b0c6		       89 b6 95 b6*	      dc.w	_relo0320 ,_relo0322,_relo0323,_relo0324	;,_relo0325,_relo0326,_relo0327,_relo0328,_relo0329
   4041  b0ce		       b9 b9 48 ba*	      dc.w	_relo0350,_relo0351,_relo0352,_relo0353,_relo0354,_relo0355,_relo0356,_relo0357,_relo0358,_relo0359
   4042  b0e2		       37 bb 43 b9*	      dc.w	_relo0360,_relo0361,_relo0362,_relo0363 ,_relo0365
   4043  b0ec		       e8 b4 eb b4*	      dc.w	_relo0400,_relo0401,_relo0402,_relo0403,_relo0404,_relo0405,_relo0406,_relo0407,_relo0408,_relo0409
   4044  b100		       2e b5 31 b5*	      dc.w	_relo0410,_relo0411,_relo0412	;,_relo0413,_relo0414,_relo0415,_relo0416,_relo0417,_relo0418,_relo0419
   4045  b106		       cc b4 d5 b4	      dc.w	_relo0420,_relo0421	;,_relo0412,_relo0413,_relo0414,_relo0415,_relo0416,_relo0417,_relo0418,_relo0419
   4046  b10a		       79 b4		      dc.w	_relo0430	;,_relo0431;,_relo0412,_relo0413,_relo0414,_relo0415,_relo0416,_relo0417,_relo0418,_relo0419
   4047  b10c		       00 00		      dc.w	0
   4048  b10e
   4049  b10e		       02		      dc.b	2	;RELOC TABLE - 2 BYTE OFFSET LOW/HI
   4050  b10f		       9b af a5 af*	      dc.w	_relo5000,_relo5001,_relo5002,_relo5003
   4051  b117		       1a b2 21 b2*	      dc.w	_relo5010,_relo5011,_relo5012,_relo5013
   4052  b11f		       50 b3		      dc.w	_relo5070
   4053  b121		       9b b4 b5 b4	      dc.w	_relo5090,_relo5091
   4054  b125		       af b8		      dc.w	_relo5230
   4055  b127		       f4 b8		      dc.w	_relo5250
   4056  b129		       00 00		      dc.w	0
   4057  b12b		       00		      dc.b	0
   4058  b12c
   4059  b12c
   4060  b12c
   4061  b12c
   4062  b12c							; ==============================================================
   4063  b12c							; MY INPUT LOOP
   4064  b12c							; ==============================================================
   4065  b12c
   4066  b12c
   4067  b12c				   INLO_1     subroutine
   4068  b12c		       ae 03 03 	      ldx	PTR_INPUT_LOOP +1	; CODE IN ROM?
   4069  b12f		       e0 b1		      cpx	#>INPUT_LOOP
   4070  b131		       d0 06		      bne	.10
   4071  b133		       20 f8 ae 	      jsr	ROM_INPLOOP
   4072  b136		       4c 3c b1 	      jmp	INPUT_LOOP
   4073  b139
   4074  b139				   .10
   4075  b139				   RAM_INPUT_LOOP
   4076  b139		       b1 3a	   _relo0001  =	. +1
   4077  b139		       20 62 b1 	      jsr	INLO_LOOP2
   4078  b13c
   4079  b13c				   INPUT_LOOP subroutine
   4080  b13c		       20 60 c5 	      jsr	$c560	; INPUT LINE
   4081  b13f		       86 7a		      stx	CHRPTR
   4082  b141		       84 7b		      sty	CHRPTR +1
   4083  b143		       20 73 00 	      jsr	CHRGET
   4084  b146		       aa		      tax
   4085  b147		       f0 f3		      beq	INPUT_LOOP
   4086  b149		       a2 ff		      ldx	#$ff
   4087  b14b		       86 3a		      stx	dir_basiclinenumber_hi	; DIRECT MODE
   4088  b14d		       b0 dd		      bcs	INLO_1
   4089  b14f		       4c 9c c4 	      jmp	$c49c	; INSERT LINE INTO BASICTEXT
   4090  b152
   4091  b152
   4092  b152
   4093  b152
   4094  b152
   4095  b152				   DOLO_ERR
   4096  b152		       b1 53	   _relo0024  =	. +1
   4097  b152		       20 af b5 	      jsr	PRINT_DISK_ERR
   4098  b155		       38		      sec
   4099  b156		       60		      rts
   4100  b157
   4101  b157
   4102  b157
   4103  b157
   4104  b157				   BASLOAD_END
   4105  b157		       b0 f9		      bcs	DOLO_ERR
   4106  b159				   BASLOAD_END_2
   4107  b159		       86 2d		      stx	BASVAR
   4108  b15b		       84 2e		      sty	BASVAR +1
   4109  b15d		       20 33 c5 	      jsr	SY_PGMLINK
   4110  b160				   DOLO_E
   4111  b160		       18		      clc		; LOAD OK
   4112  b161		       60		      rts
   4113  b162
   4114  b162
   4115  b162
   4116  b162				   INLO_LOOP2
   4117  b162		       c9 24		      cmp	#"$"	; CATALOG?
   4118  b164		       f0 2b		      beq	DO_CATALOG
   4119  b166		       c9 40		      cmp	#"@"	; DISK CMD?
   4120  b168		       f0 2d		      beq	DO_DISKCMD
   4121  b16a		       c9 2f		      cmp	#"/"	; LOAD BASIC?
   4122  b16c		       f0 3a		      beq	DO_LOADBAS
   4123  b16e		       c9 25		      cmp	#"%"	; LOAD BINARY?
   4124  b170		       f0 42		      beq	DO_LOADBIN
   4125  b172		       c9 3e		      cmp	#">"	; VERIFY BINARY?
   4126  b174		       f0 2d		      beq	DO_VERIFY
   4127  b176
   4128  b176
   4129  b176		       b1 77	   _relo0002  =	. +1
   4130  b176		       20 ab b8 	      jsr	TOKENIZER
   4131  b179		       d0 66		      bne	INLO_LOOP2b
   4132  b17b
   4133  b17b		       20 79 c5 	      jsr	$c579	; CONVERT LINE
   4134  b17e		       20 73 00 	      jsr	CHRGET
   4135  b181		       c9 23		      cmp	#"#"	; DEVICE?
   4136  b183		       f0 0f		      beq	DO_SETDEV
   4137  b185		       c9 2c		      cmp	#","	; HEX CALC
   4138  b187		       f0 11		      beq	DO_HEXCALC
   4139  b189				   INLO_LOOP2a
   4140  b189		       68		      pla
   4141  b18a		       68		      pla
   4142  b18b		       20 79 00 	      jsr	CHRGOT
   4143  b18e		       4c e7 c7 	      jmp	$c7e7	; EXECUTE LINE
   4144  b191
   4145  b191
   4146  b191							;LIST DISK CATALOG ($)
   4147  b191				   DO_CATALOG
   4148  b191		       b1 92	   _relo0011  =	. +1
   4149  b191		       4c f2 b5 	      jmp	PRINT_CATALOG	;JSR!!!!
   4150  b194
   4151  b194
   4152  b194							;SET / LIST DEVICE# FOR DISK COMMANDS (#)
   4153  b194				   DO_SETDEV
   4154  b194		       b1 95	   _relo0012  =	. +1
   4155  b194		       4c 3a b3 	      jmp	SET_DEVICE
   4156  b197
   4157  b197
   4158  b197							;SEND DISK COMMAND (@)
   4159  b197				   DO_DISKCMD
   4160  b197		       b1 98	   _relo0014  =	. +1
   4161  b197		       4c 37 b5 	      jmp	DISK_CMD
   4162  b19a
   4163  b19a
   4164  b19a							;SHOW WORD VALUE IN DEC, HEX, BIN, ASC (,)
   4165  b19a				   DO_HEXCALC
   4166  b19a		       20 73 00 	      jsr	CHRGET
   4167  b19a		       b1 9e	   _relo0015  =	. +1
   4168  b19d		       20 a2 b7 	      jsr	FRMWORD	; GET WORD VALUE
   4169  b19d		       b1 a1	   _relo0016  =	. +1
   4170  b1a0		       4c 0e b8 	      jmp	PRINT_VALUE
   4171  b1a3
   4172  b1a3
   4173  b1a3
   4174  b1a3							;LOAD BASIC OR ABSOLUTE (/)
   4175  b1a3				   DO_VERIFY
   4176  b1a3		       a0 01		      ldy	#$1	; SA=1
   4177  b1a5		       98		      tya
   4178  b1a6		       d0 10		      bne	DOLO_2
   4179  b1a8
   4180  b1a8							;LOAD BASIC OR ABSOLUTE (/)
   4181  b1a8				   DO_LOADBAS
   4182  b1a8		       a6 2b		      ldx	BASSTRT
   4183  b1aa		       a5 2c		      lda	BASSTRT +1
   4184  b1ac		       86 c3		      stx	LOADPTR
   4185  b1ae		       85 c4		      sta	LOADPTR +1
   4186  b1b0		       a0 00		      ldy	#$0	; SA=0
   4187  b1b2		       f0 02		      beq	DOLO_1
   4188  b1b4
   4189  b1b4							;LOAD BINARY OR CARTRIDGE (%)
   4190  b1b4				   DO_LOADBIN
   4191  b1b4		       a0 01		      ldy	#$1	; SA=1
   4192  b1b6				   DOLO_1
   4193  b1b6		       a9 00		      lda	#0	; LOAD
   4194  b1b8				   DOLO_2
   4195  b1b8		       48		      pha
   4196  b1b9		       ae 3e 03 	      ldx	F_CURDEV	; device#
   4197  b1bc		       a9 01		      lda	#$01	; lfn #01
   4198  b1be		       20 ba ff 	      jsr	SETLFS
   4199  b1be		       b1 c2	   _relo0020  =	. +1
   4200  b1c1		       20 21 b3 	      jsr	GET_LOADPAR
   4201  b1c4		       68		      pla
   4202  b1c4		       b1 c6	   _relo0021  =	. +1
   4203  b1c5		       20 6c b3 	      jsr	MY_IECLOAD_0
   4204  b1c8		       b0 88		      bcs	DOLO_ERR
   4205  b1ca
   4206  b1ca		       a5 93		      lda	SY_VERIFY
   4207  b1cc		       f0 03		      beq	MYLO_1
   4208  b1ce		       4c 7b e1 	      jmp	$e17b	;verify error?
   4209  b1d1
   4210  b1d1				   MYLO_1
   4211  b1d1		       a5 b9		      lda	SY_SA	; SA=0
   4212  b1d3		       d0 8b		      bne	DOLO_E
   4213  b1d5
   4214  b1d5		       b1 d6	   _relo0022  =	. +1
   4215  b1d5		       20 59 b1 	      jsr	BASLOAD_END_2
   4216  b1d8		       20 59 c6 	      jsr	SY_BASCLR2
   4217  b1d8		       b1 dc	   _relo0023  =	. +1
   4218  b1db		       4c 3c b1 	      jmp	INPUT_LOOP
   4219  b1de
   4220  b1de
   4221  b1de
   4222  b1de							;------------ EXECUTE SOFT RESET
   4223  b1de				   INLO_UNNEW
   4224  b1de		       b1 df	   _relo0025  =	. +1
   4225  b1de		       4c b0 b2 	      jmp	DO_UNNEW
   4226  b1e1
   4227  b1e1
   4228  b1e1
   4229  b1e1							;------------ EXECUTE TOKEN
   4230  b1e1				   INLO_LOOP2b
   4231  b1e1							;cpx #TOK_RUN
   4232  b1e1							;beq INLO_LOOP2a
   4233  b1e1							;cpx #TOK_SYS
   4234  b1e1							;beq INLO_LOOP2a
   4235  b1e1
   4236  b1e1		       e0 04		      cpx	#TOK_RES
   4237  b1e3		       f0 21		      beq	INLO_RESET
   4238  b1e5							;cpx #TOK_RELO
   4239  b1e5		       e0 01		      cpx	#TOK_NOIO	;NOIO
   4240  b1e7		       f0 47		      beq	INLO_NOIO
   4241  b1e9
   4242  b1e9		       a0 00		      ldy	#0
   4243  b1eb		       e0 02		      cpx	#TOK_BLKP	;BLOCK WRITE PROTECT
   4244  b1ed		       f0 50		      beq	INLO_SETIO
   4245  b1ef		       c8		      iny
   4246  b1f0		       e0 03		      cpx	#TOK_BLKD	;BLOCK DISABLE
   4247  b1f2		       f0 4b		      beq	INLO_SETIO
   4248  b1f4
   4249  b1f4		       e0 08		      cpx	#TOK_OLD
   4250  b1f6		       f0 e6		      beq	INLO_UNNEW
   4251  b1f8		       e0 09		      cpx	#TOK_OFF
   4252  b1fa		       f0 1d		      beq	INLO_OFF
   4253  b1fc		       e0 0a		      cpx	#TOK_KILL
   4254  b1fe		       f0 0c		      beq	INLO_KILL
   4255  b200
   4256  b200		       a9 00		      lda	#0
   4257  b202		       85 7a		      sta	CHRPTR	;RESET CHRPTR TO START OF BIP
   4258  b204		       f0 83		      beq	INLO_LOOP2a
   4259  b206
   4260  b206
   4261  b206
   4262  b206
   4263  b206
   4264  b206							;------------ EXECUTE SOFT RESET
   4265  b206				   INLO_RESET
   4266  b206		       b2 07	   _relo0026  =	. +1
   4267  b206		       20 1a b9 	      jsr	RESET_IO
   4268  b209		       4c 22 fd 	      jmp	SOFT_RESET
   4269  b20c
   4270  b20c
   4271  b20c
   4272  b20c							;------------ KILL FE3 (IO,BANKS,WEDGE)
   4273  b20c				   INLO_KILL
   4274  b20c		       b2 0d	   _relo0030  =	. +1
   4275  b20c		       20 19 b2 	      jsr	INLO_OFF
   4276  b20c		       b2 10	   _relo0031  =	. +1
   4277  b20f		       20 38 b2 	      jsr	INLO_NOIO3
   4278  b212		       a9 80		      lda	#128
   4279  b214		       a2 9f		      ldx	#$9f
   4280  b214		       b2 17	   _relo0032  =	. +1
   4281  b216		       4c ee b8 	      jmp	RESET_SYSTEM
   4282  b219
   4283  b219
   4284  b219
   4285  b219
   4286  b219							;------------ DISABLE WEDGE
   4287  b219				   INLO_OFF
   4288  b219		       b2 1a	   _relo5010  =	. +1
   4289  b219		       a9 cd		      lda	#<WEDGEMESSAGE1b
   4290  b21b		       a0 bb		      ldy	#>WEDGEMESSAGE1b
   4291  b21d							;_relo0033 = . +1
   4292  b21d		       20 1e cb 	      jsr	SY_STROUT
   4293  b21d		       b2 21	   _relo5011  =	. +1
   4294  b220		       a9 db		      lda	#<WEDGEMESSAGE1c
   4295  b222		       a0 bb		      ldy	#>WEDGEMESSAGE1c
   4296  b224							;_relo0034 = . +1
   4297  b224		       20 1e cb 	      jsr	SY_STROUT
   4298  b227		       20 5b e4 	      jsr	$e45b	;INIT BASIC VECTORS
   4299  b22a		       20 8a ff 	      jsr	$ff8a	;INIT IO VECTORS
   4300  b22d		       4c 80 c4 	      jmp	$c480	;STD. INPUT LOOP
   4301  b230
   4302  b230
   4303  b230
   4304  b230
   4305  b230							;------------ SET NOIO
   4306  b230				   INLO_NOIO
   4307  b230		       a9 80		      lda	#$80	;RAM, NO-IO
   4308  b232				   INLO_NOIO2
   4309  b232		       0d 03 9c 	      ora	IO_FINAL +1
   4310  b235		       8d 03 9c 	      sta	IO_FINAL +1
   4311  b238				   INLO_NOIO3
   4312  b238		       b2 39	   _relo5012  =	. +1
   4313  b238		       a9 c5		      lda	#<MSG_NOIO
   4314  b23a		       a0 bb		      ldy	#>MSG_NOIO
   4315  b23c							;_relo0035 = . +1
   4316  b23c		       4c 1e cb 	      jmp	SY_STROUT
   4317  b23f
   4318  b23f
   4319  b23f
   4320  b23f							;------------ SET BLK IO
   4321  b23f				   INLO_SETIO
   4322  b23f		       ad 03 9c 	      lda	IO_FINAL +1
   4323  b242		       8d 6a 03 	      sta	DL_IOBASE +1
   4324  b245		       ad 02 9c 	      lda	IO_FINAL
   4325  b248		       8d 69 03 	      sta	DL_IOBASE
   4326  b24b
   4327  b24b		       20 79 00 	      jsr	CHRGOT
   4328  b24e		       f0 17		      beq	PRINT_IO
   4329  b250
   4330  b250		       b9 69 03 	      lda	DL_IOBASE,y
   4331  b253		       29 e0		      and	#$e0
   4332  b255		       99 69 03 	      sta	DL_IOBASE,y
   4333  b255		       b2 59	   _relo0042  =	. +1
   4334  b258		       20 86 b2 	      jsr	SEL_BLOCK_P
   4335  b25b
   4336  b25b		       ad 6a 03 	      lda	DL_IOBASE +1
   4337  b25e		       8d 03 9c 	      sta	IO_FINAL +1
   4338  b261		       ad 69 03 	      lda	DL_IOBASE
   4339  b264		       8d 02 9c 	      sta	IO_FINAL
   4340  b267
   4341  b267				   PRINT_IO
   4342  b267		       b2 68	   _relo5013  =	. +1
   4343  b267		       a9 c1		      lda	#<MSG_PRINTIO
   4344  b269		       a0 bb		      ldy	#>MSG_PRINTIO
   4345  b26b							;_relo0036 = . +1
   4346  b26b		       20 1e cb 	      jsr	SY_STROUT
   4347  b26e		       ae 94 02 	      ldx	BIP_IOBASE
   4348  b271		       a9 00		      lda	#0
   4349  b271		       b2 74	   _relo0037  =	. +1
   4350  b273		       20 3c b8 	      jsr	HEXOUT
   4351  b276		       a9 2f		      lda	#"/"
   4352  b276		       b2 79	   _relo0040  =	. +1
   4353  b278		       20 d1 b6 	      jsr	CHROUT
   4354  b27b		       ae 95 02 	      ldx	BIP_IOBASE +1
   4355  b27e		       a9 00		      lda	#0
   4356  b27e		       b2 81	   _relo0038  =	. +1
   4357  b280		       20 3c b8 	      jsr	HEXOUT
   4358  b280		       b2 84	   _relo0039  =	. +1
   4359  b283		       4c c9 b6 	      jmp	CROUT
   4360  b286
   4361  b286
   4362  b286
   4363  b286							;------------
   4364  b286				   SEL_BLOCK_P
   4365  b286		       20 79 00 	      jsr	CHRGOT
   4366  b289		       b0 24		      bcs	SEBL_E
   4367  b28b				   SEBL_1
   4368  b28b		       29 07		      and	#7
   4369  b28d		       aa		      tax
   4370  b28e		       a9 01		      lda	#1
   4371  b290		       e0 05		      cpx	#5
   4372  b292		       90 03		      bcc	SEBL_2	; <5
   4373  b294		       d0 0f		      bne	SEBL_8
   4374  b296		       ca		      dex		; 5 --> 4
   4375  b297				   SEBL_2
   4376  b297		       ca		      dex
   4377  b298		       30 03		      bmi	SEBL_6
   4378  b29a		       0a		      asl
   4379  b29b		       d0 fa		      bne	SEBL_2
   4380  b29d				   SEBL_6
   4381  b29d		       29 1f		      and	#$1f
   4382  b29f		       19 69 03 	      ora	DL_IOBASE,y
   4383  b2a2		       99 69 03 	      sta	DL_IOBASE,y
   4384  b2a5				   SEBL_8
   4385  b2a5		       20 73 00 	      jsr	CHRGET
   4386  b2a8		       90 e1		      bcc	SEBL_1
   4387  b2a8		       b2 ab	   _relo0041  =	. +1
   4388  b2aa		       20 aa b7 	      jsr	CHKCOM
   4389  b2ad		       90 d7		      bcc	SEL_BLOCK_P
   4390  b2af				   SEBL_E
   4391  b2af		       60		      rts
   4392  b2b0
   4393  b2b0
   4394  b2b0
   4395  b2b0
   4396  b2b0
   4397  b2b0							; ==============================================================
   4398  b2b0							; UNNEW (OLD) BASIC PROGRAM
   4399  b2b0							; ==============================================================
   4400  b2b0
   4401  b2b0
   4402  b2b0				   DO_UNNEW
   4403  b2b0		       a0 01		      ldy	#$01
   4404  b2b2		       98		      tya
   4405  b2b3		       91 2b		      sta	(BASSTRT),Y	; store a non zero in the MSB of the first link addr
   4406  b2b5		       20 33 c5 	      jsr	SY_PGMLINK	; relinker
   4407  b2b8		       a5 22		      lda	PT1	; set end of basic/start of variables to the address of the last '0' found + 2
   4408  b2ba		       18		      clc
   4409  b2bb		       69 02		      adc	#$02
   4410  b2bd		       85 2d		      sta	BASVAR
   4411  b2bf		       a5 23		      lda	PT1 +1
   4412  b2c1		       69 00		      adc	#$00
   4413  b2c3		       85 2e		      sta	BASVAR +1
   4414  b2c5		       20 59 c6 	      jsr	SY_BASCLR2	; Reset TXTPTR and Perform [clr]
   4415  b2c8							;lda #<UnNewMessage	; string start point lo-byte
   4416  b2c8							;ldy #>UnNewMessage	; string start point hi-byte
   4417  b2c8							;jsr PRNSTR		; print string in A/Y, 0 terminated
   4418  b2c8
   4419  b2c8		       4c 67 e4 	      jmp	BASIC_WARM	; BASIC Warm Restart [RUNSTOP-RESTORE]
   4420  b2cb
   4421  b2cb							;UnNewMessage:
   4422  b2cb							;	.byte "PROGRAM RESTORED",0
   4423  b2cb
   4424  b2cb
   4425  b2cb
   4426  b2cb							; ==============================================================
   4427  b2cb							; GET STRING PARAM
   4428  b2cb							; ==============================================================
   4429  b2cb
   4430  b2cb
   4431  b2cb				   GET_STRING
   4432  b2cb		       ad 3e 03 	      lda	F_CURDEV	; device
   4433  b2ce		       85 ba		      sta	SY_DN	; prime address
   4434  b2d0		       20 73 00 	      jsr	CHRGET
   4435  b2d3		       a8		      tay
   4436  b2d4		       f0 18		      beq	GEST_5
   4437  b2d6		       a0 00		      ldy	#0
   4438  b2d8		       84 08		      sty	FLGCOM
   4439  b2da		       c9 22		      cmp	#34
   4440  b2dc		       d0 05		      bne	GEST_3
   4441  b2de		       85 08		      sta	FLGCOM
   4442  b2de		       b2 e1	   _relo0050  =	. +1
   4443  b2e0		       20 07 b3 	      jsr	INC_CHRPTR
   4444  b2e3				   GEST_3
   4445  b2e3		       b1 7a		      lda	(CHRPTR),y
   4446  b2e5		       f0 07		      beq	GEST_5
   4447  b2e7		       c5 08		      cmp	FLGCOM
   4448  b2e9		       f0 03		      beq	GEST_5
   4449  b2eb		       c8		      iny
   4450  b2ec		       d0 f5		      bne	GEST_3
   4451  b2ee
   4452  b2ee				   GEST_5
   4453  b2ee		       98		      tya		; STR LEN
   4454  b2ef		       a6 7a		      ldx	CHRPTR
   4455  b2f1		       a4 7b		      ldy	CHRPTR +1
   4456  b2f3		       20 bd ff 	      jsr	SETFNAM
   4457  b2f6
   4458  b2f6		       a8		      tay
   4459  b2f7		       b1 7a		      lda	(CHRPTR),y
   4460  b2f9		       f0 01		      beq	GEST_7
   4461  b2fb		       c8		      iny
   4462  b2fc				   GEST_7
   4463  b2fc		       98		      tya
   4464  b2fd
   4465  b2fd				   ADD_CHRPTR
   4466  b2fd		       18		      clc
   4467  b2fe		       65 7a		      adc	CHRPTR
   4468  b300		       85 7a		      sta	CHRPTR
   4469  b302		       90 02		      bcc	ADCH_1
   4470  b304				   ADCH_0
   4471  b304		       e6 7b		      inc	CHRPTR +1
   4472  b306				   ADCH_1
   4473  b306		       60		      rts
   4474  b307
   4475  b307				   INC_CHRPTR
   4476  b307		       e6 7a		      inc	CHRPTR
   4477  b309		       f0 f9		      beq	ADCH_0
   4478  b30b		       60		      rts
   4479  b30c
   4480  b30c
   4481  b30c
   4482  b30c							; ==============================================================
   4483  b30c							; GET LOAD PARAM
   4484  b30c							; ==============================================================
   4485  b30c
   4486  b30c				   GET_FILENAM
   4487  b30c		       ad 01 02 	      lda	BIP +1
   4488  b30f		       c9 22		      cmp	#34
   4489  b311		       f0 0b		      beq	GELO_2
   4490  b313		       ad 03 02 	      lda	BIP +3
   4491  b316		       c9 22		      cmp	#34
   4492  b318		       d0 04		      bne	GELO_2
   4493  b31a		       e6 7a		      inc	CHRPTR
   4494  b31c		       e6 7a		      inc	CHRPTR
   4495  b31e				   GELO_2
   4496  b31e		       b3 1f	   _relo0060  =	. +1
   4497  b31e		       4c cb b2 	      jmp	GET_STRING
   4498  b321
   4499  b321				   GET_LOADPAR
   4500  b321		       b3 22	   _relo0062  =	. +1
   4501  b321		       20 0c b3 	      jsr	GET_FILENAM
   4502  b321		       b3 25	   _relo0061  =	. +1
   4503  b324		       20 9d b7 	      jsr	FRMWORD2	; GET WORD VALUE
   4504  b327		       b0 10		      bcs	GELO_5
   4505  b329
   4506  b329							; SET LOAD ADDRESS
   4507  b329		       a6 14		      ldx	PT3
   4508  b32b		       a5 15		      lda	PT3 +1
   4509  b32d		       86 c3		      stx	LOADPTR
   4510  b32f		       85 c4		      sta	LOADPTR +1
   4511  b331
   4512  b331		       a6 b9		      ldx	SY_SA	; SA
   4513  b333		       f0 04		      beq	GELO_5	; SA=0: LOAD AT
   4514  b335
   4515  b335		       a2 02		      ldx	#2	; LOAD CARTRIDGE ON :: %"jj",adr
   4516  b337		       86 b9		      stx	SY_SA	; SA
   4517  b339				   GELO_5
   4518  b339		       60		      rts
   4519  b33a
   4520  b33a
   4521  b33a
   4522  b33a							; ==============================================================
   4523  b33a							; SET DEVICE#
   4524  b33a							; ==============================================================
   4525  b33a
   4526  b33a				   SET_DEVICE
   4527  b33a		       20 73 00 	      jsr	CHRGET
   4528  b33d		       f0 10		      beq	PRINT_DEV
   4529  b33f
   4530  b33f							;_relo0070 = . +1
   4531  b33f
   4532  b33f		       20 9e d7 	      jsr	FRMBYTE
   4533  b342		       e0 04		      cpx	#4
   4534  b344		       90 04		      bcc	SEDE_2
   4535  b346		       e0 0d		      cpx	#13
   4536  b348		       90 02		      bcc	SEDE_E
   4537  b34a				   SEDE_2
   4538  b34a		       a2 08		      ldx	#8
   4539  b34c				   SEDE_E
   4540  b34c		       8e 3e 03 	      stx	F_CURDEV
   4541  b34f
   4542  b34f				   PRINT_DEV
   4543  b34f		       b3 50	   _relo5070  =	. +1
   4544  b34f		       a9 b9		      lda	#<MSG_DEVICE
   4545  b351		       a0 bb		      ldy	#>MSG_DEVICE
   4546  b353							;_relo0071 = . +1
   4547  b353		       20 1e cb 	      jsr	SY_STROUT
   4548  b356
   4549  b356		       ae 3e 03 	      ldx	F_CURDEV
   4550  b359		       a9 00		      lda	#0
   4551  b35b		       20 cd dd 	      jsr	PRNINT	;print integer in X/A
   4552  b35e
   4553  b35e		       b3 5f	   _relo0072  =	. +1
   4554  b35e		       4c c9 b6 	      jmp	CROUT
   4555  b361
   4556  b361
   4557  b361
   4558  b361
   4559  b361							; ==============================================================
   4560  b361							; SYS PROCS
   4561  b361							; ==============================================================
   4562  b361
   4563  b361							;UNLISTEN = $ffae			 ; send UNLISTEN command
   4564  b361							;LISTEN	 = $ffb1			 ; send LISTEN command
   4565  b361							;LISTENSA = $ff93			 ; send SA for LISTEN command
   4566  b361							;TALK	   = $ffb4			 ; send TALK command
   4567  b361							;UNTALK   = $ffab			 ; send UNTALK command
   4568  b361							;TALKSA   = $ff96			 ; send SA for TALK command
   4569  b361							;IECIN    = $ffa5			 ; get char from IEC
   4570  b361							;IECOUT   = $ffa8			 ; send char to IEC
   4571  b361
   4572  b361		       fe 6a	   SETSTAT    =	$fe6a	; set status
   4573  b361		       ff e1	   CHKSTOP    =	$ffe1	; check stop key
   4574  b361
   4575  b361		       b9 35	   LISTEN     =	JIF_LISTEN	; send LISTEN command
   4576  b361		       b9 32	   TALK       =	JIF_TALK	; send TALK command
   4577  b361		       bb 34	   LISTENSA   =	JIF_LISTENSA	; send SA for LISTEN command
   4578  b361		       bb 2c	   TALKSA     =	JIF_TALKSA	; send SA for TALK command
   4579  b361		       bb 17	   UNLISTEN   =	JIF_UNLISTEN	; send UNLISTEN command
   4580  b361		       bb 09	   UNTALK     =	JIF_UNTALK	; send UNTALK command
   4581  b361		       b9 f5	   IECIN      =	JIF_IECIN	; get char from IEC
   4582  b361		       ba 5b	   IECOUT     =	JIF_IECOUT	; send char to IEC
   4583  b361
   4584  b361
   4585  b361
   4586  b361							; ==============================================================
   4587  b361							; MY LOAD
   4588  b361							; ==============================================================
   4589  b361
   4590  b361		       cd 8a	   FRMNUM     =	$cd8a	; GET NUMERIC VALUE
   4591  b361		       d7 9e	   FRMBYTE    =	$d79e	; GET BYTE VALUE TO X
   4592  b361		       d7 f7	   CNVWORD    =	$d7f7	; CONVERT TO WORD VALUE INTO Y/A; $14 (PT3)
   4593  b361
   4594  b361
   4595  b361							; LOAD VECTOR			       :: "fnam",PA,SA[,loadadr]
   4596  b361				   MY_LOAD    subroutine
   4597  b361		       a6 ba		      ldx	SY_DN	; PA (device#)
   4598  b363		       e0 04		      cpx	#4
   4599  b365		       b0 05		      bcs	.0
   4600  b367		       4c 49 f5 	      jmp	$f549	; OLD LOAD PROC
   4601  b36a
   4602  b36a
   4603  b36a							;MY_IECVERIFY
   4604  b36a							;  lda #1
   4605  b36a							;  bne MYLO_0
   4606  b36a
   4607  b36a				   MY_IECLOAD
   4608  b36a		       a9 00		      lda	#0
   4609  b36c				   MY_IECLOAD_0
   4610  b36c				   .0
   4611  b36c		       85 93		      sta	SY_VERIFY
   4612  b36e		       a9 00		      lda	#0
   4613  b370		       85 b8		      sta	SY_FN	; file# - flag for first byte
   4614  b372
   4615  b372		       a9 f0		      lda	#$f0	; channel
   4616  b372		       b3 75	   _relo0080  =	. +1
   4617  b374		       20 67 b5 	      jsr	DISK_LISTEN
   4618  b374		       b3 78	   _relo0081  =	. +1
   4619  b377		       20 41 b5 	      jsr	IECNAMOUT
   4620  b37a		       90 01		      bcc	.00a
   4621  b37c							;MYLO_ERR2
   4622  b37c		       60		      rts
   4623  b37d
   4624  b37d				   .00a
   4625  b37d		       a0 00		      LDY	#$00
   4626  b37f		       b1 bb		      LDA	($BB),Y	;Filename
   4627  b381		       c9 24		      CMP	#$24	;"$"
   4628  b383		       d0 03		      BNE	.00b	;Directory? -->
   4629  b385		       4c 6d f5 	      jmp	$f56d	;normal LOAD
   4630  b388
   4631  b388
   4632  b388				   .00b
   4633  b388		       a9 60		      lda	#$60
   4634  b388		       b3 8b	   _relo0082  =	. +1
   4635  b38a		       20 7e b5 	      jsr	DISK_TALK
   4636  b38d
   4637  b38d
   4638  b38d
   4639  b38d		       b3 8e	   _relo0084  =	. +1
   4640  b38d		       20 f5 b9 	      jsr	IECIN	; load address lo
   4641  b390		       85 ae		      sta	LOADEND
   4642  b392
   4643  b392		       a5 90		      lda	SY_STATUS
   4644  b394		       4a		      lsr
   4645  b395		       4a		      lsr
   4646  b396		       90 03		      bcc	.00c
   4647  b398		       4c 87 f7 	      jmp	$f787
   4648  b39b
   4649  b39b				   .00c
   4650  b39b		       b3 9c	   _relo0300  =	. +1
   4651  b39b		       20 f5 b9 	      jsr	IECIN	; load address hi
   4652  b39e		       85 af		      sta	LOADEND +1
   4653  b3a0
   4654  b3a0		       a6 b9		      ldx	SY_SA	; SA
   4655  b3a2		       f0 08		      beq	.00	; SA=0 -->
   4656  b3a4
   4657  b3a4		       ca		      dex
   4658  b3a5		       ca		      dex
   4659  b3a6		       d0 15		      bne	.01	; SA=1 -->
   4660  b3a8
   4661  b3a8				   .02			; SA=2: LOAD CARTRIDGE AT $c3
   4662  b3a8		       48		      pha
   4663  b3a9		       a5 ae		      lda	LOADEND
   4664  b3ab		       48		      pha		; FIRST TWO BYTES ...
   4665  b3ac
   4666  b3ac				   .00			; SA=0: LOAD PROGRAM AT $c3
   4667  b3ac		       b3 ad	   _relo0085  =	. +1
   4668  b3ac		       20 9d b7 	      jsr	FRMWORD2	; GET WORD VALUE
   4669  b3af		       a5 c4		      lda	LOADPTR +1
   4670  b3b1		       a6 c3		      ldx	LOADPTR
   4671  b3b3		       b0 04		      bcs	.2
   4672  b3b5
   4673  b3b5		       a5 15		      lda	PT3 +1
   4674  b3b7		       a6 14		      ldx	PT3
   4675  b3b9
   4676  b3b9				   .2
   4677  b3b9		       85 af		      sta	LOADEND +1
   4678  b3bb		       86 ae		      stx	LOADEND
   4679  b3bd
   4680  b3bd
   4681  b3bd
   4682  b3bd				   .01
   4683  b3bd		       b3 be	   _relo0086  =	. +1
   4684  b3bd		       20 92 b4 	      jsr	PRINT_ATADR
   4685  b3c0
   4686  b3c0
   4687  b3c0		       a6 b9		      ldx	SY_SA	; SA
   4688  b3c2		       ca		      dex
   4689  b3c3		       ca		      dex
   4690  b3c4		       d0 0a		      bne	.3	; SA!=2 -->
   4691  b3c6
   4692  b3c6							;STORE FIRST TWO BYTES
   4693  b3c6		       a0 00		      ldy	#0
   4694  b3c8		       68		      pla
   4695  b3c8		       b3 ca	   _relo0097  =	. +1
   4696  b3c9		       20 7b b4 	      jsr	STOREBYTE
   4697  b3cc		       68		      pla
   4698  b3cc		       b3 ce	   _relo0098  =	. +1
   4699  b3cd		       20 7b b4 	      jsr	STOREBYTE
   4700  b3d0
   4701  b3d0				   .3
   4702  b3d0
   4703  b3d0
   4704  b3d0
   4705  b3d0							;_relo0087 = . +1
   4706  b3d0							;  jsr MY_IECIN
   4707  b3d0							;  bcc MYLO_6
   4708  b3d0
   4709  b3d0							;MYLO_ERR
   4710  b3d0							;_relo0302 = . +1
   4711  b3d0							;  jsr DISK_CLOSE_LO
   4712  b3d0							;  jmp $f787
   4713  b3d0
   4714  b3d0
   4715  b3d0							;--------------JIFFY FASTLOAD INIT
   4716  b3d0				   .FASTLOAD
   4717  b3d0		       24 a3		      BIT	$A3
   4718  b3d2							;  BVC .F253				  ;no Jiffy -->
   4719  b3d2		       70 1a		      BVS	.FB1F	;Jiffy -->
   4720  b3d4				   .F253
   4721  b3d4		       20 8a f5 	      JSR	$F58A	;normales LOAD
   4722  b3d7				   .err2
   4723  b3d7		       b0 5f		      bcs	.err
   4724  b3d9
   4725  b3d9				   .MYLO_E
   4726  b3d9		       b3 da	   _relo0090  =	. +1
   4727  b3d9		       20 90 b5 	      jsr	DISK_CLOSE_LO
   4728  b3dc
   4729  b3dc		       b3 dd	   _relo0091  =	. +1
   4730  b3dc		       20 ad b4 	      jsr	PRINT_TOADR
   4731  b3df
   4732  b3df							;PRINT DISKERR ON ERROR
   4733  b3df		       a5 90		      lda	SY_STATUS
   4734  b3e1		       48		      pha		;SAVE IECSTAT FOR VERIFY!!!
   4735  b3e1		       b3 e3	   _relo0412  =	. +1
   4736  b3e2		       20 af b5 	      jsr	PRINT_DISK_ERR
   4737  b3e5		       68		      pla
   4738  b3e6		       85 90		      sta	SY_STATUS
   4739  b3e8
   4740  b3e8		       18		      clc
   4741  b3e9		       a6 ae		      ldx	LOADEND
   4742  b3eb		       a4 af		      ldy	LOADEND +1
   4743  b3ed		       60		      rts
   4744  b3ee
   4745  b3ee
   4746  b3ee							;--------------JIFFY FASTLOAD INIT
   4747  b3ee				   .FB1F
   4748  b3ee		       b3 ef	   _relo0087  =	. +1
   4749  b3ee		       20 09 bb 	      JSR	UNTALK	;UNTALK
   4750  b3f1		       a9 61		      lda	#$61
   4751  b3f1		       b3 f4	   _relo0088  =	. +1
   4752  b3f3		       20 7e b5 	      jsr	DISK_TALK
   4753  b3f6							;--------------JIFFY FASTLOAD
   4754  b3f6		       78		      SEI
   4755  b3f7		       a5 b2		      LDA	$B2
   4756  b3f9		       48		      PHA
   4757  b3fa		       a0 00		      LDY	#$00
   4758  b3fc				   .FB25
   4759  b3fc		       20 55 f7 	      JSR	$F755	;STOP Taste abfragen
   4760  b3ff		       c9 fe		      CMP	#$FE
   4761  b401		       f0 2f		      BEQ	.FB5B
   4762  b403		       ad 2c 91 	      LDA	$912C
   4763  b406		       29 dd		      AND	#$DD
   4764  b408		       aa		      TAX
   4765  b409		       09 20		      ORA	#$20
   4766  b40b		       85 b2		      STA	$B2
   4767  b40d		       8e 2c 91 	      STX	$912C
   4768  b410		       a9 80		      LDA	#$80
   4769  b412		       85 9c		      STA	$9C
   4770  b414				   .FB3D
   4771  b414		       ad 1f 91 	      LDA	$911F
   4772  b417		       4a		      LSR
   4773  b418		       90 fa		      BCC	.FB3D
   4774  b41a		       29 01		      AND	#$01
   4775  b41c		       f0 1d		      BEQ	.FB67
   4776  b41e		       a2 6d		      LDX	#$6D
   4777  b420				   .FB49
   4778  b420		       2c 1f 91 	      BIT	$911F
   4779  b423		       f0 06		      BEQ	.FB54
   4780  b425		       ca		      DEX
   4781  b426		       d0 f8		      BNE	.FB49
   4782  b428		       a9 42		      LDA	#$42
   4783  b42a		       2c		      .byte.b	$2c	;BIT ABS
   4784  b42b				   .FB54
   4785  b42b		       a9 40		      LDA	#$40
   4786  b42d		       20 6a fe 	      JSR	$FE6A	;SET STATUS
   4787  b430		       18		      CLC
   4788  b431		       24		      .byte.b	$24	;BIT ZP
   4789  b432				   .FB5B		;STOP!
   4790  b432		       38		      SEC
   4791  b433		       68		      PLA
   4792  b434		       85 b2		      STA	$B2
   4793  b436		       90 a1		      bcc	.MYLO_E
   4794  b438				   .err
   4795  b438		       4c cb f6 	      JMP	$F6CB	;UNLISTEN, CLOSE, BREAK
   4796  b43b							; JMP $F5BF				 ;UNLISTEN, CLOSE
   4797  b43b
   4798  b43b
   4799  b43b				   .FB67
   4800  b43b		       a9 02		      LDA	#$02
   4801  b43d				   .FB69
   4802  b43d		       2c 1f 91 	      BIT	$911F
   4803  b440		       f0 fb		      BEQ	.FB69
   4804  b442				   .FB6E
   4805  b442		       48		      PHA
   4806  b443		       68		      PLA
   4807  b444		       ea		      NOP
   4808  b445		       a5 b2		      LDA	$B2
   4809  b447		       8d 2c 91 	      STA	$912C
   4810  b44a		       a9 01		      LDA	#$01
   4811  b44c		       2c 1f 91 	      BIT	$911F
   4812  b44f		       f0 ab		      BEQ	.FB25
   4813  b451		       8e 2c 91 	      STX	$912C
   4814  b454		       ad 1f 91 	      LDA	$911F
   4815  b457		       6a		      ROR
   4816  b458		       6a		      ROR
   4817  b459		       ea		      NOP
   4818  b45a		       29 80		      AND	#$80
   4819  b45c		       0d 1f 91 	      ORA	$911F
   4820  b45f		       2a		      ROL
   4821  b460		       2a		      ROL
   4822  b461		       ea		      NOP
   4823  b462		       85 b3		      STA	$B3
   4824  b464		       ad 1f 91 	      LDA	$911F
   4825  b467		       6a		      ROR
   4826  b468		       6a		      ROR
   4827  b469		       25 9c		      AND	$9C
   4828  b46b		       0d 1f 91 	      ORA	$911F
   4829  b46e		       2a		      ROL
   4830  b46f		       2a		      ROL
   4831  b470		       85 c0		      STA	$C0
   4832  b472
   4833  b472							;_relo0430 = . +1
   4834  b472							;  JSR lEC4E				 ;Byte zusammenbauen aus 2 Nibble
   4835  b472							;_relo0089 = . +1
   4836  b472							;  jsr STOREBYTE
   4837  b472							;  CLV
   4838  b472							;  BVC .FB6E
   4839  b472
   4840  b472		       a9 b4		      lda	#>(.FB6E -1)	;Rcksprungadresse auf Stack
   4841  b474		       48		      pha
   4842  b475		       a9 41		      lda	#<(.FB6E -1)
   4843  b477		       48		      pha
   4844  b477		       b4 79	   _relo0430  =	. +1
   4845  b478		       20 fa ba 	      JSR	lEC4E	;Byte zusammenbauen aus 2 Nibble
   4846  b47b
   4847  b47b				   STOREBYTE  subroutine
   4848  b47b		       c4 93		      CPY	$93
   4849  b47d		       d0 09		      BNE	.FBB0
   4850  b47f		       91 ae		      STA	($AE),Y
   4851  b481				   .FBA7
   4852  b481		       e6 ae		      INC	$AE
   4853  b483		       d0 02		      BNE	.FB6E
   4854  b485		       e6 af		      INC	$AF
   4855  b487				   .FB6E
   4856  b487		       60		      rts
   4857  b488
   4858  b488				   .FBB0		;VERIFY
   4859  b488		       d1 ae		      CMP	($AE),Y
   4860  b48a		       f0 f5		      BEQ	.FBA7
   4861  b48c		       a9 10		      LDA	#$10	;VERIFY ERROR
   4862  b48e		       85 90		      STA	$90
   4863  b490		       d0 ef		      BNE	.FBA7
   4864  b492
   4865  b492
   4866  b492
   4867  b492							;--------------JIFFY FASTLOAD
   4868  b492
   4869  b492
   4870  b492
   4871  b492
   4872  b492
   4873  b492
   4874  b492
   4875  b492
   4876  b492
   4877  b492							;.MYLO_5
   4878  b492							;  jsr CHKSTOP
   4879  b492							;  bne MYLO_05a
   4880  b492
   4881  b492							;_relo0088 = . +1
   4882  b492							;  jsr DISK_CLOSE_LO
   4883  b492							;  jmp $f6ce
   4884  b492
   4885  b492
   4886  b492							;.MYLO_05a
   4887  b492							;_relo0089 = . +1
   4888  b492							;  jsr MY_IECIN2
   4889  b492							;.MYLO_6
   4890  b492							;  ldy SY_VERIFY
   4891  b492							;  beq MYLO_7				  ; --> load
   4892  b492
   4893  b492							;  ldy #0
   4894  b492							;  cmp (LOADEND),y
   4895  b492							;  beq MYLO_8
   4896  b492
   4897  b492							;  lda #$10
   4898  b492							;  jsr SETSTAT
   4899  b492							;  .byte $2c
   4900  b492							;.MYLO_7
   4901  b492							;  sta (LOADEND),y
   4902  b492							;.MYLO_8
   4903  b492							;  inc LOADEND
   4904  b492							;  bne MYLO_7a
   4905  b492							;  inc LOADEND +1
   4906  b492							;.MYLO_7a
   4907  b492							;  bit SY_STATUS
   4908  b492							;  bvc MYLO_5				  ; EOI?
   4909  b492
   4910  b492
   4911  b492
   4912  b492
   4913  b492
   4914  b492							; PRINT LOAD AT ADDRESS
   4915  b492				   PRINT_ATADR subroutine
   4916  b492		       a9 ae		      lda	#LOADEND
   4917  b494				   PRINT_ATADR_2
   4918  b494		       a6 9d		      ldx	DIRECT_MODE
   4919  b496		       30 01		      bmi	.1
   4920  b498				   .rts
   4921  b498		       60		      rts
   4922  b499
   4923  b499				   .1
   4924  b499		       48		      pha
   4925  b499		       b4 9b	   _relo5090  =	. +1
   4926  b49a		       a9 ad		      lda	#<MSG_LOADAT
   4927  b49c		       a0 bb		      ldy	#>MSG_LOADAT
   4928  b49e							;_relo0096 = . +1
   4929  b49e		       20 1e cb 	      jsr	SY_STROUT
   4930  b4a1		       68		      pla
   4931  b4a2				   .3
   4932  b4a2		       aa		      tax
   4933  b4a3				   HEXOUT_ZP
   4934  b4a3		       b5 01		      lda	1,x
   4935  b4a5		       48		      pha
   4936  b4a6		       b5 00		      lda	0,x
   4937  b4a8		       aa		      tax
   4938  b4a9		       68		      pla
   4939  b4a9		       b4 ab	   _relo0095  =	. +1
   4940  b4aa		       4c 3c b8 	      jmp	HEXOUT
   4941  b4ad
   4942  b4ad							; PRINT LOAD AT ADDRESS
   4943  b4ad				   PRINT_TOADR
   4944  b4ad		       a9 ae		      lda	#LOADEND
   4945  b4af				   PRINT_TOADR_2
   4946  b4af		       a6 9d		      ldx	DIRECT_MODE
   4947  b4b1		       10 e5		      bpl	.rts
   4948  b4b3
   4949  b4b3		       48		      pha
   4950  b4b3		       b4 b5	   _relo5091  =	. +1
   4951  b4b4		       a9 b4		      lda	#<MSG_LOADTO
   4952  b4b6		       a0 bb		      ldy	#>MSG_LOADTO
   4953  b4b8		       20 1e cb 	      jsr	SY_STROUT
   4954  b4bb		       68		      pla
   4955  b4bb		       b4 bd	   _relo0093  =	. +1
   4956  b4bc		       20 a2 b4 	      jsr	.3
   4957  b4bc		       b4 c0	   _relo0094  =	. +1
   4958  b4bf		       4c c9 b6 	      jmp	CROUT
   4959  b4c2
   4960  b4c2
   4961  b4c2
   4962  b4c2							; ========================================================================
   4963  b4c2							; MY SAVE		     ENDADDR   = ($AE/$AF)    STARTADDR = ($C1/$C2)
   4964  b4c2							;
   4965  b4c2							; SAVESTART = $c1
   4966  b4c2							; LOADPTR   = $c3
   4967  b4c2							; LOADSTART = $ac
   4968  b4c2							; LOADEND   = $ae
   4969  b4c2							; ========================================================================
   4970  b4c2
   4971  b4c2							; SAVE VECTOR			       :: "fnam",PA,SA[,fromadr,toaddr]
   4972  b4c2				   MY_SAVE    subroutine
   4973  b4c2		       a6 ba		      ldx	SY_DN	; PA (device#)
   4974  b4c4		       e0 04		      cpx	#4
   4975  b4c6		       b0 03		      bcs	MY_IECSAVE
   4976  b4c8		       4c 85 f6 	      jmp	$f685	; OLD LOAD PROC
   4977  b4cb
   4978  b4cb
   4979  b4cb				   MY_IECSAVE
   4980  b4cb		       b4 cc	   _relo0420  =	. +1
   4981  b4cb		       20 9d b7 	      jsr	FRMWORD2	; GET WORD VALUE
   4982  b4ce		       b0 15		      bcs	MYSA_0
   4983  b4d0
   4984  b4d0		       84 ac		      sty	LOADSTART
   4985  b4d2		       85 ad		      sta	LOADSTART +1
   4986  b4d4
   4987  b4d4		       b4 d5	   _relo0421  =	. +1
   4988  b4d4		       20 9d b7 	      jsr	FRMWORD2	; GET WORD VALUE
   4989  b4d7		       b0 0c		      bcs	MYSA_0
   4990  b4d9
   4991  b4d9		       84 ae		      sty	LOADEND
   4992  b4db		       85 af		      sta	LOADEND +1
   4993  b4dd
   4994  b4dd		       a4 ac		      ldy	LOADSTART
   4995  b4df		       a5 ad		      lda	LOADSTART +1
   4996  b4e1		       84 c1		      sty	SAVESTART
   4997  b4e3		       85 c2		      sta	SAVESTART +1
   4998  b4e5
   4999  b4e5
   5000  b4e5				   MYSA_0
   5001  b4e5		       a9 f1		      lda	#$f1	; channel
   5002  b4e5		       b4 e8	   _relo0400  =	. +1
   5003  b4e7		       20 67 b5 	      jsr	DISK_LISTEN
   5004  b4e7		       b4 eb	   _relo0401  =	. +1
   5005  b4ea		       20 41 b5 	      jsr	IECNAMOUT
   5006  b4ed		       b0 46		      bcs	.err
   5007  b4ef
   5008  b4ef		       a9 61		      lda	#$61
   5009  b4ef		       b4 f2	   _relo0402  =	. +1
   5010  b4f1		       20 67 b5 	      jsr	DISK_LISTEN
   5011  b4f4
   5012  b4f4		       20 d2 fb 	      jsr	$fbd2	; $C1/$C2 --> $ac/$ad
   5013  b4f7
   5014  b4f7		       a5 ac		      lda	LOADSTART
   5015  b4f7		       b4 fa	   _relo0403  =	. +1
   5016  b4f9		       20 5b ba 	      jsr	IECOUT
   5017  b4fc		       a5 ad		      lda	LOADSTART +1
   5018  b4fc		       b4 ff	   _relo0404  =	. +1
   5019  b4fe		       20 5b ba 	      jsr	IECOUT
   5020  b501
   5021  b501		       a9 ac		      lda	#LOADSTART
   5022  b503		       20 94 b4 	      jsr	PRINT_ATADR_2
   5023  b506
   5024  b506		       a0 00		      ldy	#0
   5025  b508				   MYSA_00
   5026  b508		       20 11 fd 	      jsr	$fd11	;END ADDRESS?
   5027  b50b		       b0 18		      bcs	MYSA_E0	;YES -->
   5028  b50d		       b1 ac		      lda	(LOADSTART),y
   5029  b50d		       b5 10	   _relo0405  =	. +1
   5030  b50f		       20 5b ba 	      jsr	IECOUT
   5031  b512
   5032  b512		       20 e1 ff 	      jsr	CHKSTOP
   5033  b515		       d0 09		      bne	MYSA_02
   5034  b517
   5035  b517		       b5 18	   _relo0406  =	. +1
   5036  b517		       20 17 bb 	      jsr	UNLISTEN
   5037  b517		       b5 1b	   _relo0407  =	. +1
   5038  b51a		       20 8c b5 	      jsr	DISK_CLOSE_SA
   5039  b51d		       4c ce f6 	      jmp	$f6ce
   5040  b520
   5041  b520
   5042  b520				   MYSA_02
   5043  b520		       20 1b fd 	      jsr	$fd1b	;INCR ADDR
   5044  b523		       d0 e3		      bne	MYSA_00
   5045  b525
   5046  b525				   MYSA_E0
   5047  b525		       b5 26	   _relo0408  =	. +1
   5048  b525		       20 17 bb 	      jsr	UNLISTEN
   5049  b525		       b5 29	   _relo0409  =	. +1
   5050  b528		       20 8c b5 	      jsr	DISK_CLOSE_SA
   5051  b52b		       a9 ac		      lda	#LOADSTART
   5052  b52b		       b5 2e	   _relo0410  =	. +1
   5053  b52d		       20 af b4 	      jsr	PRINT_TOADR_2
   5054  b52d		       b5 31	   _relo0411  =	. +1
   5055  b530		       20 af b5 	      jsr	PRINT_DISK_ERR
   5056  b533		       f0 01		      beq	.rts
   5057  b535				   .err
   5058  b535		       38		      sec
   5059  b536				   .rts
   5060  b536		       60		      rts
   5061  b537
   5062  b537
   5063  b537
   5064  b537
   5065  b537							; ==============================================================
   5066  b537							; DISK CMD
   5067  b537							; ==============================================================
   5068  b537
   5069  b537							;DISK CMD PARAM       :: +@"cmd"
   5070  b537				   DISK_CMD
   5071  b537		       b5 38	   _relo0013  =	. +1
   5072  b537		       20 cb b2 	      jsr	GET_STRING
   5073  b53a
   5074  b53a				   DISK_CMD_2
   5075  b53a		       a6 b7		      ldx	LEN_FNAM
   5076  b53c		       f0 5d		      beq	PRINT_DISK_STAT
   5077  b53c		       b5 3f	   _relo0100  =	. +1
   5078  b53e		       20 65 b5 	      jsr	DISK_LISTEN_6F
   5079  b541
   5080  b541
   5081  b541							;PUT NAME TO IEC AND UNLISTEN
   5082  b541				   IECNAMOUT
   5083  b541		       a5 90		      lda	IECSTAT
   5084  b543		       30 1d		      bmi	DICM_ERR1
   5085  b545
   5086  b545		       b5 46	   _relo0363  =	. +1
   5087  b545		       20 4d b5 	      jsr	IECNAMOUT_2
   5088  b548				   DICM_OK2
   5089  b548		       b5 49	   _relo0306  =	. +1
   5090  b548		       20 17 bb 	      jsr	UNLISTEN
   5091  b54b				   DICM_OK
   5092  b54b		       18		      clc
   5093  b54c		       60		      rts
   5094  b54d
   5095  b54d
   5096  b54d
   5097  b54d							;PUT NAME TO IEC
   5098  b54d				   IECNAMOUT_2
   5099  b54d		       a6 b7		      ldx	LEN_FNAM
   5100  b54f		       f0 f7		      beq	DICM_OK2
   5101  b551		       a0 00		      ldy	#0
   5102  b553				   DICM_2
   5103  b553		       b1 bb		      lda	(PTR_FNAM),y
   5104  b553		       b5 56	   _relo0305  =	. +1
   5105  b555		       20 5b ba 	      jsr	IECOUT
   5106  b558		       c8		      iny
   5107  b559		       ca		      dex
   5108  b55a		       d0 f7		      bne	DICM_2
   5109  b55c		       60		      rts
   5110  b55d
   5111  b55d
   5112  b55d
   5113  b55d
   5114  b55d
   5115  b55d							;CHECK 'DEVICE NOT PRESENT'
   5116  b55d				   CHKDNP
   5117  b55d		       b5 5e	   _relo0106  =	. +1
   5118  b55d		       20 65 b5 	      jsr	DISK_LISTEN_6F
   5119  b560		       90 e6		      bcc	DICM_OK2
   5120  b562				   DICM_ERR1
   5121  b562		       4c 8a f7 	      jmp	$f78a	;ERR 'DEVICE NOT PRESENT'    CF=1
   5122  b565
   5123  b565
   5124  b565				   DISK_LISTEN_6F
   5125  b565		       a9 6f		      lda	#$6f	; channel
   5126  b567				   DISK_LISTEN
   5127  b567		       48		      pha
   5128  b568		       a9 00		      lda	#0
   5129  b56a		       85 90		      sta	IECSTAT
   5130  b56c		       f0 01		      beq	DILI_2
   5131  b56e
   5132  b56e				   DISK_LISTEN_2
   5133  b56e		       48		      pha
   5134  b56f				   DILI_2
   5135  b56f		       a5 ba		      lda	SY_DN	; device#
   5136  b56f		       b5 72	   _relo0307  =	. +1
   5137  b571		       20 35 b9 	      jsr	LISTEN
   5138  b574		       68		      pla
   5139  b574		       b5 76	   _relo0308  =	. +1
   5140  b575		       20 34 bb 	      jsr	LISTENSA
   5141  b578				   DITA_5
   5142  b578		       a5 90		      lda	IECSTAT
   5143  b57a		       10 cf		      bpl	DICM_OK
   5144  b57c		       38		      sec
   5145  b57d		       60		      rts
   5146  b57e
   5147  b57e
   5148  b57e				   DISK_TALK
   5149  b57e		       48		      pha
   5150  b57f		       a9 00		      lda	#0
   5151  b581		       85 90		      sta	IECSTAT
   5152  b583
   5153  b583		       a5 ba		      lda	SY_DN	; device#
   5154  b583		       b5 86	   _relo0309  =	. +1
   5155  b585		       20 32 b9 	      jsr	TALK
   5156  b588		       68		      pla
   5157  b588		       b5 8a	   _relo0310  =	. +1
   5158  b589		       4c 2c bb 	      jmp	TALKSA
   5159  b58c
   5160  b58c
   5161  b58c				   DISK_CLOSE_SA
   5162  b58c		       a9 e1		      lda	#$e1
   5163  b58e		       d0 05		      bne	DICL_1
   5164  b590
   5165  b590				   DISK_CLOSE_LO
   5166  b590		       b5 91	   _relo0303  =	. +1
   5167  b590		       20 09 bb 	      jsr	UNTALK
   5168  b593		       a9 e0		      lda	#$e0
   5169  b595				   DICL_1
   5170  b595		       b5 96	   _relo0101  =	. +1
   5171  b595		       20 6e b5 	      jsr	DISK_LISTEN_2
   5172  b595		       b5 99	   _relo0311  =	. +1
   5173  b598		       4c 17 bb 	      jmp	UNLISTEN
   5174  b59b
   5175  b59b
   5176  b59b							; PRINT DISK STATUS TO SCREEN
   5177  b59b				   PRINT_DISK_STAT
   5178  b59b		       b5 9c	   _relo0102  =	. +1
   5179  b59b		       20 b5 b5 	      jsr	GET_DISK_STAT
   5180  b59e				   PRINT_BIP_0
   5181  b59e		       b0 0e		      bcs	PRDI_E
   5182  b5a0				   PRINT_BIP
   5183  b5a0		       a0 00		      ldy	#0
   5184  b5a2				   PRDI_2
   5185  b5a2		       b9 00 01 	      lda	STP,y
   5186  b5a5		       f0 06		      beq	PRDI_7
   5187  b5a7		       20 d2 ff 	      jsr	BSOUT
   5188  b5aa		       c8		      iny
   5189  b5ab		       d0 f5		      bne	PRDI_2
   5190  b5ad				   PRDI_7
   5191  b5ad		       98		      tya
   5192  b5ae							;  beq PRDI_E
   5193  b5ae							;lda #13
   5194  b5ae							;jsr BSOUT
   5195  b5ae				   PRDI_E
   5196  b5ae		       60		      rts
   5197  b5af
   5198  b5af
   5199  b5af							; PRINT DISK STATUS TO SCREEN IF ERROR
   5200  b5af				   PRINT_DISK_ERR
   5201  b5af		       b5 b0	   _relo0103  =	. +1
   5202  b5af		       20 b5 b5 	      jsr	GET_DISK_STAT
   5203  b5b2		       d0 ea		      bne	PRINT_BIP_0
   5204  b5b4		       60		      rts
   5205  b5b5
   5206  b5b5
   5207  b5b5
   5208  b5b5							; LOAD DISK STAT TO BIP
   5209  b5b5				   GET_DISK_STAT
   5210  b5b5		       b5 b6	   _relo0104  =	. +1
   5211  b5b5		       20 5d b5 	      jsr	CHKDNP
   5212  b5b8		       b0 37		      bcs	DIST_ERR
   5213  b5ba
   5214  b5ba		       a9 6f		      lda	#$6f	; channel
   5215  b5ba		       b5 bd	   _relo0105  =	. +1
   5216  b5bc		       20 7e b5 	      jsr	DISK_TALK
   5217  b5bf
   5218  b5bf		       a0 00		      ldy	#0
   5219  b5c1				   DIST_2
   5220  b5c1		       b5 c2	   _relo0312  =	. +1
   5221  b5c1		       20 f5 b9 	      jsr	IECIN
   5222  b5c4		       99 00 01 	      sta	STP,y
   5223  b5c7		       c8		      iny
   5224  b5c8		       a5 90		      lda	IECSTAT
   5225  b5ca		       f0 f5		      beq	DIST_2
   5226  b5cc
   5227  b5cc		       b5 cd	   _relo0313  =	. +1
   5228  b5cc		       20 09 bb 	      jsr	UNTALK
   5229  b5cf		       98		      tya
   5230  b5d0		       f0 0b		      beq	DIST_7
   5231  b5d2		       a9 0d		      lda	#13
   5232  b5d4		       d9 00 01 	      cmp	STP,y
   5233  b5d7		       d0 04		      bne	DIST_7
   5234  b5d9		       99 00 01 	      sta	STP,y
   5235  b5dc		       c8		      iny
   5236  b5dd				   DIST_7
   5237  b5dd		       a9 00		      lda	#0
   5238  b5df		       99 00 01 	      sta	STP,y
   5239  b5e2		       ad 00 01 	      lda	STP
   5240  b5e5		       c9 30		      cmp	#"0"
   5241  b5e7		       d0 07		      bne	DIST_E
   5242  b5e9		       4d 01 01 	      eor	STP +1
   5243  b5ec		       f0 02		      beq	DIST_E
   5244  b5ee		       c9 01		      cmp	#1
   5245  b5f0				   DIST_E
   5246  b5f0		       18		      clc
   5247  b5f1				   DIST_ERR
   5248  b5f1		       60		      rts
   5249  b5f2
   5250  b5f2
   5251  b5f2
   5252  b5f2
   5253  b5f2
   5254  b5f2
   5255  b5f2							; ==============================================================
   5256  b5f2							; DISK CATALOG
   5257  b5f2							; ==============================================================
   5258  b5f2
   5259  b5f2							;DISK CATALOG	     :: +$"fil"
   5260  b5f2				   PRINT_CATALOG
   5261  b5f2		       b5 f3	   _relo0010  =	. +1
   5262  b5f2		       20 cb b2 	      jsr	GET_STRING
   5263  b5f5
   5264  b5f5		       a9 f0		      lda	#$f0	; channel
   5265  b5f5		       b5 f8	   _relo0110  =	. +1
   5266  b5f7		       20 67 b5 	      jsr	DISK_LISTEN
   5267  b5fa		       90 01		      bcc	PRCA_0
   5268  b5fc		       60		      rts
   5269  b5fd
   5270  b5fd				   PRCA_0
   5271  b5fd		       a9 24		      lda	#"$"
   5272  b5fd		       b6 00	   _relo0314  =	. +1
   5273  b5ff		       20 5b ba 	      jsr	IECOUT
   5274  b5ff		       b6 03	   _relo0111  =	. +1
   5275  b602		       20 4d b5 	      jsr	IECNAMOUT_2
   5276  b605		       a9 2a		      lda	#"*"
   5277  b605		       b6 08	   _relo0362  =	. +1
   5278  b607		       20 5b ba 	      jsr	IECOUT
   5279  b607		       b6 0b	   _relo0365  =	. +1
   5280  b60a		       20 17 bb 	      jsr	UNLISTEN
   5281  b60d
   5282  b60d		       a9 60		      lda	#$60
   5283  b60d		       b6 10	   _relo0112  =	. +1
   5284  b60f		       20 7e b5 	      jsr	DISK_TALK
   5285  b612
   5286  b612							;PRINT HEADLINE (DISKNAME)
   5287  b612
   5288  b612		       a2 06		      ldx	#6
   5289  b612		       b6 15	   _relo0113  =	. +1
   5290  b614		       20 9c b6 	      jsr	PRCA_SKIP_X	; skip x bytes
   5291  b617
   5292  b617							;PRCA_1
   5293  b617		       b6 18	   _relo0114  =	. +1
   5294  b617		       20 94 b6 	      jsr	PRCA_SKIPSPC	; skip spaces
   5295  b61a
   5296  b61a		       c9 12		      cmp	#18	; check for reverse on char (Disk Name, first row only)
   5297  b61c		       d0 73		      bne	PRCA_EE
   5298  b61e
   5299  b61e		       b6 1f	   _relo0115  =	. +1
   5300  b61e		       20 d1 b6 	      jsr	CHROUT	; here on first row only (Disk Name)
   5301  b61e		       b6 22	   _relo0315  =	. +1
   5302  b621		       20 f5 b9 	      jsr	IECIN	; skip a char (")
   5303  b624
   5304  b624		       b6 25	   _relo0116  =	. +1
   5305  b624		       20 a3 b6 	      jsr	PRCA_QSTR1	; PRINT QUOTED STRING
   5306  b627
   5307  b627		       a2 13		      ldx	#19
   5308  b627		       b6 2a	   _relo0117  =	. +1
   5309  b629		       20 b9 b6 	      jsr	PRCA_SPCOL	; print spaces up to column
   5310  b629		       b6 2d	   _relo0118  =	. +1
   5311  b62c		       20 94 b6 	      jsr	PRCA_SKIPSPC	; skip spaces
   5312  b62f
   5313  b62f		       b6 30	   _relo0119  =	. +1
   5314  b62f		       20 d1 b6 	      jsr	CHROUT	; ID1
   5315  b62f		       b6 33	   _relo0316  =	. +1
   5316  b632		       20 f5 b9 	      jsr	IECIN
   5317  b632		       b6 36	   _relo0120  =	. +1
   5318  b635		       20 d1 b6 	      jsr	CHROUT	; ID2
   5319  b638
   5320  b638							;PRINT STD. LINE (FILE)
   5321  b638
   5322  b638				   PRCA_4
   5323  b638		       b6 39	   _relo0317  =	. +1
   5324  b638		       20 f5 b9 	      jsr	IECIN
   5325  b63b		       aa		      tax
   5326  b63c		       d0 fa		      bne	PRCA_4
   5327  b63e
   5328  b63e				   PRCA_5
   5329  b63e		       a5 c5		      lda	dir_current_key
   5330  b640		       c9 18		      cmp	#24	; check for RUN-STOP key
   5331  b642		       f0 4a		      beq	PRCA_STOP
   5332  b644
   5333  b644		       ad 8d 02 	      lda	dir_shift_ctrl_cbm_flag
   5334  b647		       29 02		      and	#2	; filter commodore key (Bit 2)
   5335  b649		       d0 f3		      bne	PRCA_5
   5336  b64b
   5337  b64b		       b6 4c	   _relo0135  =	. +1
   5338  b64b		       20 c9 b6 	      jsr	CROUT	; CR
   5339  b64e
   5340  b64e		       a2 02		      ldx	#2
   5341  b64e		       b6 51	   _relo0121  =	. +1
   5342  b650		       20 9c b6 	      jsr	PRCA_SKIP_X	; skip x bytes
   5343  b653
   5344  b653		       a5 90		      lda	IECSTAT
   5345  b655		       d0 3a		      bne	PRCA_E
   5346  b657
   5347  b657		       b6 58	   _relo0318  =	. +1
   5348  b657		       20 f5 b9 	      jsr	IECIN
   5349  b65a		       aa		      tax		;LO
   5350  b65b							;sta PT3
   5351  b65b		       b6 5c	   _relo0319  =	. +1
   5352  b65b		       20 f5 b9 	      jsr	IECIN
   5353  b65e							;ldx PT3
   5354  b65e		       20 cd dd 	      jsr	PRNINT	;print integer in X/A
   5355  b661
   5356  b661		       b6 62	   _relo0122  =	. +1
   5357  b661		       20 94 b6 	      jsr	PRCA_SKIPSPC
   5358  b664		       c9 22		      cmp	#34
   5359  b666		       d0 18		      bne	PRCA_8
   5360  b668		       48		      pha
   5361  b669		       a2 02		      ldx	#2
   5362  b669		       b6 6c	   _relo0123  =	. +1
   5363  b66b		       20 b9 b6 	      jsr	PRCA_SPCOL	; print spaces up to column
   5364  b66e		       68		      pla
   5365  b66e		       b6 70	   _relo0124  =	. +1
   5366  b66f		       20 a3 b6 	      jsr	PRCA_QSTR1	; PRINT QUOTED STRING
   5367  b672
   5368  b672		       a2 14		      ldx	#20
   5369  b672		       b6 75	   _relo0125  =	. +1
   5370  b674		       20 b9 b6 	      jsr	PRCA_SPCOL	; print spaces up to column
   5371  b677
   5372  b677		       b6 78	   _relo0126  =	. +1
   5373  b677		       20 94 b6 	      jsr	PRCA_SKIPSPC
   5374  b677		       b6 7b	   _relo0127  =	. +1
   5375  b67a		       20 d1 b6 	      jsr	CHROUT	; FILETYP
   5376  b67d		       b8		      clv
   5377  b67e		       50 b8		      bvc	PRCA_4
   5378  b680
   5379  b680
   5380  b680
   5381  b680				   PRCA_8
   5382  b680		       48		      pha
   5383  b680		       b6 82	   _relo0128  =	. +1
   5384  b681		       20 c1 b6 	      jsr	SPCOUT	; BLANK
   5385  b684		       68		      pla
   5386  b685				   PRCA_9
   5387  b685		       b6 86	   _relo0129  =	. +1
   5388  b685		       20 d1 b6 	      jsr	CHROUT	;
   5389  b685		       b6 89	   _relo0320  =	. +1
   5390  b688		       20 f5 b9 	      jsr	IECIN
   5391  b68b		       aa		      tax
   5392  b68c		       d0 f7		      bne	PRCA_9
   5393  b68e
   5394  b68e				   PRCA_STOP
   5395  b68e		       b6 8f	   _relo0130  =	. +1
   5396  b68e		       20 c9 b6 	      jsr	CROUT	; CR
   5397  b691				   PRCA_E
   5398  b691				   PRCA_EE
   5399  b691				   PRCA_ERR
   5400  b691		       b6 92	   _relo0131  =	. +1
   5401  b691		       4c 90 b5 	      jmp	DISK_CLOSE_LO
   5402  b694
   5403  b694
   5404  b694
   5405  b694							; SKIP SPACE
   5406  b694				   PRCA_SKIPSPC
   5407  b694		       b6 95	   _relo0322  =	. +1
   5408  b694		       20 f5 b9 	      jsr	IECIN
   5409  b697		       c9 20		      cmp	#32	;spaces
   5410  b699		       f0 f9		      beq	PRCA_SKIPSPC
   5411  b69b		       60		      rts
   5412  b69c
   5413  b69c							; SKIP X BYTES
   5414  b69c				   PRCA_SKIP_X
   5415  b69c		       b6 9d	   _relo0323  =	. +1
   5416  b69c		       20 f5 b9 	      jsr	IECIN
   5417  b69f		       ca		      dex
   5418  b6a0		       d0 fa		      bne	PRCA_SKIP_X
   5419  b6a2		       60		      rts
   5420  b6a3
   5421  b6a3							; PRINT QUOTED STRING
   5422  b6a3				   PRCA_QSTR1
   5423  b6a3		       b6 a4	   _relo0132  =	. +1
   5424  b6a3		       20 d1 b6 	      jsr	CHROUT	; else print character in A
   5425  b6a6				   PRCA_QSTR2
   5426  b6a6		       a0 11		      ldy	#17
   5427  b6a8				   PRCAQS_2
   5428  b6a8		       b6 a9	   _relo0324  =	. +1
   5429  b6a8		       20 f5 b9 	      jsr	IECIN
   5430  b6a8		       b6 ac	   _relo0133  =	. +1
   5431  b6ab		       20 d1 b6 	      jsr	CHROUT	; else print character in A
   5432  b6ae		       c9 22		      cmp	#34	; check for "quote" char
   5433  b6b0		       f0 03		      beq	PRCAQS_E
   5434  b6b2		       88		      dey
   5435  b6b3		       d0 f3		      bne	PRCAQS_2
   5436  b6b5				   PRCAQS_E
   5437  b6b5		       60		      rts
   5438  b6b6
   5439  b6b6
   5440  b6b6				   PRCA_SP_1
   5441  b6b6		       b6 b7	   _relo0134  =	. +1
   5442  b6b6		       20 c1 b6 	      jsr	SPCOUT
   5443  b6b9
   5444  b6b9							; PRINT SPACE UP TO COL
   5445  b6b9				   PRCA_SPCOL
   5446  b6b9		       e4 d3		      cpx	C_COL
   5447  b6bb		       b0 f9		      bcs	PRCA_SP_1
   5448  b6bd		       60		      rts
   5449  b6be
   5450  b6be
   5451  b6be
   5452  b6be							; ==============================================================
   5453  b6be							; DISPLAY CHAR
   5454  b6be							; ==============================================================
   5455  b6be
   5456  b6be
   5457  b6be							;PRINT 2 BLANK
   5458  b6be				   SPCOUT2    subroutine
   5459  b6be		       b6 bf	   _relo0141  =	. +1
   5460  b6be		       20 c1 b6 	      jsr	SPCOUT
   5461  b6c1				   SPCOUT
   5462  b6c1		       a9 20		      lda	#32
   5463  b6c3		       d0 0c		      bne	CHROUT
   5464  b6c5
   5465  b6c5							;CLEAR SCREEN
   5466  b6c5				   CLROUT     subroutine
   5467  b6c5		       a9 93		      lda	#CLRHOME
   5468  b6c7		       d0 08		      bne	CHROUT
   5469  b6c9
   5470  b6c9							;PRINT CR
   5471  b6c9				   CROUT      subroutine
   5472  b6c9		       a9 0d		      lda	#13
   5473  b6cb		       d0 04		      bne	CHROUT
   5474  b6cd
   5475  b6cd							;PRINT 2 CHR IN AC/XR
   5476  b6cd				   CHROUT2    subroutine
   5477  b6cd		       b6 ce	   _relo0142  =	. +1
   5478  b6cd		       20 d1 b6 	      jsr	CHROUT
   5479  b6d0		       8a		      txa
   5480  b6d1				   CHROUT     subroutine
   5481  b6d1		       48		      pha
   5482  b6d2		       85 d7		      sta	$d7
   5483  b6d4		       8a		      txa
   5484  b6d5		       48		      pha
   5485  b6d6		       98		      tya
   5486  b6d7		       48		      pha
   5487  b6d8		       a5 d7		      lda	$d7
   5488  b6da		       30 2b		      bmi	.7
   5489  b6dc		       c9 20		      cmp	#$20
   5490  b6de		       b0 03		      bcs	.1
   5491  b6e0		       4c 56 e7 	      jmp	$e756
   5492  b6e3
   5493  b6e3				   .1
   5494  b6e3		       c9 60		      cmp	#$60
   5495  b6e5		       90 04		      bcc	.2
   5496  b6e7		       29 df		      and	#$df
   5497  b6e9		       d0 02		      bne	.3
   5498  b6eb				   .2
   5499  b6eb		       29 3f		      and	#$3f
   5500  b6ed				   .3
   5501  b6ed				   CHOU_3
   5502  b6ed		       a6 c7		      ldx	$c7	;revers?
   5503  b6ef		       f0 02		      beq	.4
   5504  b6f1		       09 80		      ora	#$80
   5505  b6f3				   .4
   5506  b6f3		       ae 86 02 	      ldx	$0286	;Farbcode
   5507  b6f6		       20 a1 ea 	      jsr	$eaa1	;Zeichen ausgeben
   5508  b6f9		       a5 d3		      lda	$d3
   5509  b6fb		       c9 15		      cmp	#$15
   5510  b6fd		       f0 02		      beq	.5
   5511  b6ff		       e6 d3		      inc	$d3
   5512  b701				   .5
   5513  b701		       68		      pla
   5514  b702		       a8		      tay
   5515  b703		       68		      pla
   5516  b704		       aa		      tax
   5517  b705		       68		      pla
   5518  b706		       60		      rts
   5519  b707
   5520  b707				   .7
   5521  b707		       29 7f		      and	#$7f
   5522  b709		       c9 20		      cmp	#$20
   5523  b70b		       b0 03		      bcs	.8
   5524  b70d		       4c 2a e8 	      jmp	$e82a
   5525  b710				   .8
   5526  b710		       09 40		      ora	#$40
   5527  b712		       d0 d9		      bne	.3
   5528  b714
   5529  b714				   PUTCHR     subroutine
   5530  b714		       48		      pha
   5531  b715		       20 b2 ea 	      jsr	$eab2	;zeiger in color RAM
   5532  b718		       68		      pla
   5533  b719				   PUTCHR2
   5534  b719		       a4 d3		      ldy	C_COL
   5535  b71b				   PUTCHR3
   5536  b71b		       91 d1		      sta	(C_LINE),y
   5537  b71d		       ad 86 02 	      lda	$0286	;Farbcode
   5538  b720		       91 f3		      sta	(C_COLP),y
   5539  b722		       60		      rts
   5540  b723
   5541  b723
   5542  b723
   5543  b723							; ==============================================================
   5544  b723							; CONVERT CHAR TO VRAM CODE	   C=1:CTRL CHAR
   5545  b723							; ==============================================================
   5546  b723
   5547  b723				   CONVCHR    subroutine
   5548  b723		       85 d7		      STA	C_CHR
   5549  b725
   5550  b725		       29 7f		      and	#$7f
   5551  b727		       c9 20		      cmp	#$20
   5552  b729		       90 19		      bcc	.9
   5553  b72b		       a6 d7		      ldx	C_CHR
   5554  b72d		       10 04		      bpl	.1
   5555  b72f		       09 40		      ora	#$40
   5556  b731		       d0 0a		      bne	.3
   5557  b733
   5558  b733				   .1
   5559  b733		       c9 60		      cmp	#$60
   5560  b735		       90 04		      bcc	.2
   5561  b737		       29 df		      and	#$df
   5562  b739		       d0 02		      bne	.3
   5563  b73b				   .2
   5564  b73b		       29 3f		      and	#$3f
   5565  b73d				   .3
   5566  b73d		       a6 c7		      ldx	$c7	;revers?
   5567  b73f		       f0 02		      beq	.4
   5568  b741		       09 80		      ora	#$80
   5569  b743				   .4
   5570  b743		       38		      sec
   5571  b744				   .9
   5572  b744		       60		      rts
   5573  b745
   5574  b745
   5575  b745							; ==============================================================
   5576  b745							; EVALUATE NEXT FORMULA ELEMENT
   5577  b745							; ==============================================================
   5578  b745
   5579  b745				   MY_FRMELEM subroutine
   5580  b745		       a9 00		      lda	#0
   5581  b747		       85 0d		      sta	$0d
   5582  b749		       20 73 00 	      jsr	CHRGET
   5583  b74c		       c9 24		      cmp	#"$"
   5584  b74e		       f0 0a		      beq	MYFR_HEX
   5585  b750		       c9 25		      cmp	#"%"
   5586  b752		       f0 15		      beq	MYFR_BIN
   5587  b754
   5588  b754		       20 79 00 	      jsr	CHRGOT
   5589  b757		       4c 8d ce 	      jmp	$ce8d	; ORIGINAL PROC
   5590  b75a
   5591  b75a
   5592  b75a				   MYFR_HEX   subroutine
   5593  b75a		       b7 5b	   _relo0150  =	. +1
   5594  b75a		       20 b7 b7 	      jsr	GETHEX	; GET HEX NUMBER A=HI, X=LO, C=0:error
   5595  b75d		       90 30		      bcc	ERR_TYPMIS
   5596  b75f
   5597  b75f				   AXFAC
   5598  b75f		       86 63		      stx	FAC +2
   5599  b761		       85 62		      sta	FAC +1
   5600  b763				   AXFAC_1
   5601  b763		       a2 90		      ldx	#$90
   5602  b765		       38		      sec
   5603  b766		       4c 49 dc 	      jmp	$dc49
   5604  b769
   5605  b769
   5606  b769				   MYFR_BIN
   5607  b769		       a2 10		      ldx	#16
   5608  b76b		       a9 00		      lda	#0
   5609  b76d		       85 62		      sta	FAC+1
   5610  b76f		       85 63		      sta	FAC+2
   5611  b771
   5612  b771				   MYBI_1
   5613  b771		       20 73 00 	      jsr	CHRGET
   5614  b774		       c9 31		      cmp	#"1"
   5615  b776		       f0 05		      beq	MYBI_2
   5616  b778		       c9 30		      cmp	#"0"
   5617  b77a		       d0 0e		      bne	MYBI_4
   5618  b77c		       18		      clc
   5619  b77d				   MYBI_2
   5620  b77d		       26 63		      rol	FAC+2
   5621  b77f		       26 62		      rol	FAC+1
   5622  b781		       ca		      dex
   5623  b782		       d0 ed		      bne	MYBI_1
   5624  b784		       20 73 00 	      jsr	CHRGET
   5625  b787				   MYBI_3
   5626  b787		       b7 88	   _relo0151  =	. +1
   5627  b787		       4c 63 b7 	      jmp	AXFAC_1
   5628  b78a
   5629  b78a				   MYBI_4
   5630  b78a		       8a		      txa
   5631  b78b		       29 13		      and	#19
   5632  b78d		       f0 f8		      beq	MYBI_3
   5633  b78f
   5634  b78f				   ERR_TYPMIS
   5635  b78f		       a2 16		      ldx	#$16
   5636  b791		       4c 37 c4 	      jmp	$c437	; ERROR
   5637  b794
   5638  b794
   5639  b794							; ==============================================================
   5640  b794							; CONVERT VALUES BETWEEN HEX/BIN
   5641  b794							; ==============================================================
   5642  b794
   5643  b794				   GETADR     subroutine		; GET HEX NUMBER A=HI, X=LO, C=0:error
   5644  b794		       20 79 00 	      jsr	CHRGOT
   5645  b797		       c9 24		      cmp	#"$"	; HEX VALUE
   5646  b799		       f0 1c		      beq	GETHEX
   5647  b79b		       18		      clc
   5648  b79c		       60		      rts
   5649  b79d
   5650  b79d
   5651  b79d							; GET WORD VALUE IN Y/A AND (PT3)
   5652  b79d				   FRMWORD2
   5653  b79d		       b7 9e	   _relo0160  =	. +1
   5654  b79d		       20 aa b7 	      jsr	CHKCOM
   5655  b7a0		       b0 07		      bcs	.3
   5656  b7a2				   FRMWORD
   5657  b7a2		       20 8a cd 	      jsr	FRMNUM
   5658  b7a5		       20 f7 d7 	      jsr	CNVWORD
   5659  b7a8		       18		      clc
   5660  b7a9				   .3
   5661  b7a9		       60		      rts
   5662  b7aa
   5663  b7aa
   5664  b7aa				   CHKCOM     subroutine
   5665  b7aa		       20 79 00 	      jsr	CHRGOT
   5666  b7ad		       c9 2c		      cmp	#$2c	; ","
   5667  b7af		       38		      sec
   5668  b7b0		       d0 04		      bne	.3
   5669  b7b2		       20 73 00 	      jsr	CHRGET
   5670  b7b5		       18		      clc
   5671  b7b6				   .3
   5672  b7b6		       60		      rts
   5673  b7b7
   5674  b7b7
   5675  b7b7
   5676  b7b7
   5677  b7b7				   GETHEX     subroutine		; GET HEX NUMBER A=HI, X=LO, C=0:error
   5678  b7b7		       20 73 00 	      jsr	CHRGET
   5679  b7ba
   5680  b7ba				   HEX_0
   5681  b7ba		       b7 bb	   _relo0170  =	. +1
   5682  b7ba		       20 d5 b7 	      jsr	HEXBYTE
   5683  b7bd		       90 15		      bcc	HEX_E
   5684  b7bf		       48		      pha
   5685  b7c0		       20 73 00 	      jsr	CHRGET
   5686  b7c0		       b7 c4	   _relo0171  =	. +1
   5687  b7c3		       20 d5 b7 	      jsr	HEXBYTE
   5688  b7c6		       b0 06		      bcs	HEX_2
   5689  b7c8		       68		      pla
   5690  b7c9		       aa		      tax
   5691  b7ca		       a9 00		      lda	#0
   5692  b7cc		       f0 05		      beq	HEX_3
   5693  b7ce
   5694  b7ce				   HEX_2
   5695  b7ce		       aa		      tax
   5696  b7cf		       20 73 00 	      jsr	CHRGET
   5697  b7d2		       68		      pla
   5698  b7d3				   HEX_3
   5699  b7d3		       38		      sec
   5700  b7d4				   HEX_E
   5701  b7d4		       60		      rts
   5702  b7d5
   5703  b7d5				   HEXBYTE
   5704  b7d5		       20 79 00 	      jsr	CHRGOT
   5705  b7d5		       b7 d9	   _relo0172  =	. +1
   5706  b7d8		       20 f5 b7 	      jsr	HEXCHAR
   5707  b7db		       90 17		      bcc	HEBY_E
   5708  b7db		       b7 de	   _relo0173  =	. +1
   5709  b7dd		       20 03 b8 	      jsr	ASCBYTE
   5710  b7e0		       0a		      asl
   5711  b7e1		       0a		      asl
   5712  b7e2		       0a		      asl
   5713  b7e3		       0a		      asl
   5714  b7e4		       85 61		      sta	FAC
   5715  b7e6		       20 73 00 	      jsr	CHRGET
   5716  b7e6		       b7 ea	   _relo0174  =	. +1
   5717  b7e9		       20 f5 b7 	      jsr	HEXCHAR
   5718  b7ec		       90 06		      bcc	HEBY_E
   5719  b7ec		       b7 ef	   _relo0175  =	. +1
   5720  b7ee		       20 03 b8 	      jsr	ASCBYTE
   5721  b7f1		       05 61		      ora	FAC
   5722  b7f3		       38		      sec
   5723  b7f4				   HEBY_E
   5724  b7f4		       60		      rts
   5725  b7f5
   5726  b7f5				   HEXCHAR
   5727  b7f5		       90 0a		      bcc	HECH_2
   5728  b7f7		       c9 41		      cmp	#65	; "A"
   5729  b7f9		       90 05		      bcc	HECH_E
   5730  b7fb		       e9 5b		      sbc	#91
   5731  b7fd		       38		      sec
   5732  b7fe		       e9 a5		      sbc	#165
   5733  b800				   HECH_E
   5734  b800		       60		      rts
   5735  b801				   HECH_2
   5736  b801		       38		      sec
   5737  b802		       60		      rts
   5738  b803
   5739  b803				   ASCBYTE
   5740  b803		       c9 3a		      cmp	#58
   5741  b805		       08		      php
   5742  b806		       29 0f		      and	#15
   5743  b808		       28		      plp
   5744  b809		       90 02		      bcc	ASBY_E
   5745  b80b		       69 08		      adc	#8
   5746  b80d				   ASBY_E
   5747  b80d		       60		      rts
   5748  b80e
   5749  b80e
   5750  b80e
   5751  b80e							; ==============================================================
   5752  b80e							; PRINT WORD VALUE BETWEEN HEX/BIN
   5753  b80e							; ==============================================================
   5754  b80e				   PRINT_VALUE
   5755  b80e		       b8 0f	   _relo0180  =	. +1
   5756  b80e		       20 c1 b6 	      jsr	SPCOUT
   5757  b811		       a6 14		      ldx	PT3
   5758  b813		       a5 15		      lda	PT3 +1
   5759  b813		       b8 16	   _relo0181  =	. +1
   5760  b815		       20 3c b8 	      jsr	HEXOUT
   5761  b818
   5762  b818		       b8 19	   _relo0182  =	. +1
   5763  b818		       20 be b6 	      jsr	SPCOUT2
   5764  b81b		       a6 14		      ldx	PT3
   5765  b81d		       a5 15		      lda	PT3 +1
   5766  b81f		       20 cd dd 	      jsr	PRNINT	;print integer in X/A
   5767  b822
   5768  b822		       b8 23	   _relo0184  =	. +1
   5769  b822		       20 be b6 	      jsr	SPCOUT2
   5770  b825		       a6 14		      ldx	PT3
   5771  b827		       a5 15		      lda	PT3 +1
   5772  b827		       b8 2a	   _relo0185  =	. +1
   5773  b829		       20 83 b8 	      jsr	ASCOUT
   5774  b82c
   5775  b82c		       b8 2d	   _relo0186  =	. +1
   5776  b82c		       20 c9 b6 	      jsr	CROUT
   5777  b82c		       b8 30	   _relo0187  =	. +1
   5778  b82f		       20 c1 b6 	      jsr	SPCOUT
   5779  b832		       a6 14		      ldx	PT3
   5780  b834		       a5 15		      lda	PT3 +1
   5781  b834		       b8 37	   _relo0188  =	. +1
   5782  b836		       20 60 b8 	      jsr	BINOUT
   5783  b836		       b8 3a	   _relo0189  =	. +1
   5784  b839		       4c c9 b6 	      jmp	CROUT
   5785  b83c
   5786  b83c
   5787  b83c
   5788  b83c							;------------ PRINT HEX VALUE IN  X/A
   5789  b83c				   HEXOUT     subroutine
   5790  b83c		       48		      pha
   5791  b83d		       a9 24		      lda	#"$"
   5792  b83f		       20 d2 ff 	      jsr	BSOUT
   5793  b842		       68		      pla
   5794  b843		       f0 03		      beq	.0
   5795  b845
   5796  b845				   HEXOUT4
   5797  b845		       b8 46	   _relo0200  =	. +1
   5798  b845		       20 49 b8 	      jsr	.2
   5799  b848				   .0
   5800  b848		       8a		      txa
   5801  b849				   HEXOUT2
   5802  b849				   .2
   5803  b849		       48		      pha
   5804  b84a		       4a		      lsr
   5805  b84b		       4a		      lsr
   5806  b84c		       4a		      lsr
   5807  b84d		       4a		      lsr
   5808  b84d		       b8 4f	   _relo0201  =	. +1
   5809  b84e		       20 54 b8 	      jsr	.1
   5810  b851		       68		      pla
   5811  b852		       29 0f		      and	#15
   5812  b854				   .1
   5813  b854		       18		      clc
   5814  b855		       69 f6		      adc	#246
   5815  b857		       90 02		      bcc	.12
   5816  b859		       69 06		      adc	#6
   5817  b85b				   .12
   5818  b85b		       69 3a		      adc	#58
   5819  b85d		       4c d2 ff 	      jmp	BSOUT
   5820  b860
   5821  b860
   5822  b860
   5823  b860
   5824  b860							;------------ PRINT BIN VALUE IN  X/A
   5825  b860				   BINOUT
   5826  b860		       48		      pha
   5827  b861		       a9 25		      lda	#"%"
   5828  b863		       20 d2 ff 	      jsr	BSOUT
   5829  b866		       68		      pla
   5830  b867		       f0 03		      beq	BIN0
   5831  b867		       b8 6a	   _relo0211  =	. +1
   5832  b869		       20 6d b8 	      jsr	BIN2
   5833  b86c				   BIN0
   5834  b86c		       8a		      txa
   5835  b86d				   BIN2
   5836  b86d		       a0 08		      ldy	#8
   5837  b86f				   BIN2a
   5838  b86f		       b8 70	   _relo0212  =	. +1
   5839  b86f		       20 76 b8 	      jsr	BIN1
   5840  b872		       88		      dey
   5841  b873		       d0 fa		      bne	BIN2a
   5842  b875		       60		      rts
   5843  b876
   5844  b876				   BIN1
   5845  b876		       0a		      asl
   5846  b877		       48		      pha
   5847  b878		       a9 30		      lda	#"0"
   5848  b87a		       90 02		      bcc	BIN1a
   5849  b87c		       a9 31		      lda	#"1"
   5850  b87e				   BIN1a
   5851  b87e		       20 d2 ff 	      jsr	BSOUT
   5852  b881		       68		      pla
   5853  b882		       60		      rts
   5854  b883
   5855  b883
   5856  b883
   5857  b883
   5858  b883							;------------ PRINT ASC VALUE IN  X/A
   5859  b883				   ASCOUT
   5860  b883		       48		      pha
   5861  b884		       8a		      txa
   5862  b885		       a8		      tay
   5863  b886		       a9 22		      lda	#34
   5864  b886		       b8 89	   _relo0220  =	. +1
   5865  b888		       20 d1 b6 	      jsr	CHROUT
   5866  b88b		       68		      pla
   5867  b88c		       f0 03		      beq	ASC0
   5868  b88c		       b8 8f	   _relo0221  =	. +1
   5869  b88e		       20 92 b8 	      jsr	ASC2
   5870  b891				   ASC0
   5871  b891		       98		      tya
   5872  b892				   ASC2
   5873  b892		       a2 00		      ldx	#0
   5874  b894		       86 d4		      stx	C_CTRL
   5875  b896		       aa		      tax
   5876  b897		       29 7f		      and	#127
   5877  b899		       c9 20		      cmp	#32
   5878  b89b		       90 04		      bcc	ASC1_1
   5879  b89d
   5880  b89d		       a9 92		      lda	#RVSOFF
   5881  b89f		       d0 07		      bne	ASC1_2
   5882  b8a1
   5883  b8a1				   ASC1_1
   5884  b8a1		       8a		      txa
   5885  b8a2		       18		      clc
   5886  b8a3		       69 40		      adc	#64
   5887  b8a5		       aa		      tax
   5888  b8a6		       a9 12		      lda	#RVSON
   5889  b8a8				   ASC1_2
   5890  b8a8		       b8 a9	   _relo0222  =	. +1
   5891  b8a8		       4c cd b6 	      jmp	CHROUT2
   5892  b8ab
   5893  b8ab
   5894  b8ab
   5895  b8ab
   5896  b8ab							; ==============================================================
   5897  b8ab							; TOKENIZER		       X=Token#, 0=no token found
   5898  b8ab							; ==============================================================
   5899  b8ab
   5900  b8ab				   TOKENIZER  subroutine
   5901  b8ab		       20 79 00 	      jsr	CHRGOT
   5902  b8ab		       b8 af	   _relo5230  =	. +1
   5903  b8ae		       a9 6c		      lda	#<TOKEN
   5904  b8b0		       a2 bb		      ldx	#>TOKEN
   5905  b8b2		       85 14		      sta	PT3
   5906  b8b4		       86 15		      stx	PT3 +1
   5907  b8b6
   5908  b8b6		       a2 01		      ldx	#1
   5909  b8b8				   TOZE_1
   5910  b8b8		       a0 00		      ldy	#0
   5911  b8ba				   TOZE_2
   5912  b8ba		       b1 14		      lda	(PT3),y
   5913  b8bc		       f0 1e		      beq	TOZE_10
   5914  b8be		       38		      sec
   5915  b8bf		       f1 7a		      sbc	(CHRPTR),y
   5916  b8c1		       f0 16		      beq	TOZE_3
   5917  b8c3		       c9 80		      cmp	#$80
   5918  b8c5		       f0 15		      beq	TOZE_10
   5919  b8c7
   5920  b8c7							;NEXT TOKEN
   5921  b8c7				   TOZE_8
   5922  b8c7		       c8		      iny
   5923  b8c8		       b1 14		      lda	(PT3),y
   5924  b8ca		       d0 fb		      bne	TOZE_8
   5925  b8cc
   5926  b8cc		       98		      tya
   5927  b8cd		       38		      sec
   5928  b8ce		       65 14		      adc	PT3
   5929  b8d0		       85 14		      sta	PT3
   5930  b8d2		       90 02		      bcc	TOZE_9
   5931  b8d4		       e6 15		      inc	PT3 +1
   5932  b8d6				   TOZE_9
   5933  b8d6		       e8		      inx
   5934  b8d7		       d0 df		      bne	TOZE_1
   5935  b8d9
   5936  b8d9				   TOZE_3
   5937  b8d9		       c8		      iny
   5938  b8da		       d0 de		      bne	TOZE_2
   5939  b8dc
   5940  b8dc							;TOKEN FOUND?
   5941  b8dc				   TOZE_10
   5942  b8dc		       98		      tya
   5943  b8dd		       f0 07		      beq	TOZE_11
   5944  b8df
   5945  b8df							;TOKEN FOUND!
   5946  b8df		       b8 e0	   _relo0230  =	. +1
   5947  b8df		       20 fd b2 	      jsr	ADD_CHRPTR	;SET CHRPTR AFTER TOKEN
   5948  b8e2		       8a		      txa
   5949  b8e2		       b8 e4	   _relo0231  =	. +1
   5950  b8e3		       bd a0 bb 	      lda	TOKEN_TAB -1,x
   5951  b8e6				   TOZE_11
   5952  b8e6		       aa		      tax
   5953  b8e7				   TOZE_E
   5954  b8e7		       60		      rts
   5955  b8e8
   5956  b8e8				   NEXT_STATEMENT
   5957  b8e8		       20 73 00 	      jsr	CHRGET
   5958  b8eb		       d0 fb		      bne	NEXT_STATEMENT	;SEARCH NEXT STATEMENT
   5959  b8ed		       60		      rts
   5960  b8ee
   5961  b8ee
   5962  b8ee
   5963  b8ee
   5964  b8ee
   5965  b8ee
   5966  b8ee
   5967  b8ee							;-------- SWITCH CARTRIDGE AND RESET SYSTEM
   5968  b8ee
   5969  b8ee		       90 00	   VIC	      =	$9000
   5970  b8ee		       91 10	   VIA1       =	$9110
   5971  b8ee		       91 20	   VIA2       =	$9120
   5972  b8ee
   5973  b8ee				   RESET_SYSTEM
   5974  b8ee		       48		      pha
   5975  b8ef		       8a		      txa
   5976  b8f0		       48		      pha
   5977  b8f1
   5978  b8f1		       a0 09		      ldy	#(__SET_IO_RESET_E - __SET_IO_RESET)
   5979  b8f1		       b8 f4	   _relo5250  =	. +1
   5980  b8f3		       a2 11		      ldx	#<__SET_IO_RESET
   5981  b8f5		       a9 b9		      lda	#>__SET_IO_RESET
   5982  b8f5		       b8 f8	   _relo0250  =	. +1
   5983  b8f7		       20 03 b9 	      jsr	COPY_PROC
   5984  b8fa
   5985  b8fa		       b8 fb	   _relo0251  =	. +1
   5986  b8fa		       20 1a b9 	      jsr	RESET_IO
   5987  b8fd
   5988  b8fd		       68		      pla
   5989  b8fe		       aa		      tax
   5990  b8ff		       68		      pla
   5991  b900		       4c 00 02 	      jmp	BIP
   5992  b903
   5993  b903							;-------- COPY PROCEDURE TO BIP AND EXECUTE
   5994  b903				   COPY_PROC  subroutine
   5995  b903		       85 23		      sta	PT1 +1
   5996  b905		       86 22		      stx	PT1
   5997  b907		       88		      dey
   5998  b908				   .2
   5999  b908		       b1 22		      lda	(PT1),y
   6000  b90a		       99 00 02 	      sta	BIP,y
   6001  b90d		       88		      dey
   6002  b90e		       10 f8		      bpl	.2
   6003  b910		       60		      rts
   6004  b911
   6005  b911
   6006  b911
   6007  b911
   6008  b911							;-------- RAM PROCEDURE TO SWITCH CARTRIDGE AND RESET
   6009  b911				   __SET_IO_RESET
   6010  b911		       8d 02 9c 	      sta	IO_FINAL
   6011  b914		       8e 03 9c 	      stx	IO_FINAL +1
   6012  b917		       4c 22 fd 	      jmp	SOFT_RESET
   6013  b91a				   __SET_IO_RESET_E
   6014  b91a
   6015  b91a
   6016  b91a
   6017  b91a
   6018  b91a
   6019  b91a				   RESET_IO
   6020  b91a		       78		      sei
   6021  b91b		       a9 00		      lda	#$00
   6022  b91d		       8d 12 91 	      sta	VIA1 +$02	; DDRA
   6023  b920		       8d 13 91 	      sta	VIA1 +$03	; DDRB
   6024  b923		       8d 22 91 	      sta	VIA2 +$02	; DDRA
   6025  b926		       8d 23 91 	      sta	VIA2 +$03	; DDRB
   6026  b929
   6027  b929		       a9 7f		      lda	#$7f
   6028  b92b		       8d 1e 91 	      sta	VIA1 +$0e	; IER: clear all bits
   6029  b92e		       8d 2e 91 	      sta	VIA2 +$0e	; IER: clear all bits
   6030  b931		       60		      rts
   6031  b932
   6032  b932
   6033  b932
   6034  b932							; ==============================================================
   6035  b932							; JIFFY PROCS
   6036  b932							; ==============================================================
   6037  b932
   6038  b932							;--------------JIFFY LISTEN
   6039  b932				   JIF_TALK
   6040  b932		       09 40		      ORA	#$40
   6041  b934		       2c		      .byte.b	$2c
   6042  b935				   JIF_LISTEN
   6043  b935		       09 20		      ORA	#$20
   6044  b937		       20 60 f1 	      JSR	$F160	;SET TIMER
   6045  b93a				   lEE1C
   6046  b93a		       48		      PHA
   6047  b93b		       24 94		      BIT	$94
   6048  b93d		       10 0a		      BPL	l6E2B
   6049  b93f		       38		      SEC
   6050  b940		       66 a3		      ROR	$A3
   6051  b940		       b9 43	   _relo0361  =	. +1
   6052  b942		       20 6d ba 	      JSR	lfc41	;NEW BYTE OUT
   6053  b945		       46 94		      LSR	$94
   6054  b947		       46 a3		      LSR	$A3
   6055  b949				   l6E2B
   6056  b949		       68		      PLA
   6057  b94a		       85 95		      STA	$95
   6058  b94c
   6059  b94c							;JSR lF19A			       ;NEW DAV hi
   6060  b94c		       78		      SEI
   6061  b94d		       a9 00		      LDA	#$00
   6062  b94f		       85 a3		      STA	$A3
   6063  b951		       20 a0 e4 	      JSR	$E4A0	;DAV hi
   6064  b954
   6065  b954		       c9 3f		      CMP	#$3F
   6066  b956		       d0 03		      BNE	l6E38
   6067  b958		       20 84 ef 	      JSR	$EF84	;NDAC lo
   6068  b95b				   l6E38
   6069  b95b		       ad 1f 91 	      LDA	$911F
   6070  b95e		       09 80		      ORA	#$80
   6071  b960		       8d 1f 91 	      STA	$911F
   6072  b963				   lEE40
   6073  b963		       20 8d ef 	      JSR	$EF8D	;PCR BIT 1 LSCHEN
   6074  b966		       20 a0 e4 	      JSR	$E4A0
   6075  b969		       20 96 ef 	      JSR	$EF96
   6076  b96c							;jmp $ee49			       ;ORIG BYTE OUT
   6077  b96c
   6078  b96c				   OLD_IECOUT
   6079  b96c		       78		      SEI
   6080  b96d		       20 a0 e4 	      JSR	$E4A0	;DAV lo
   6081  b970		       20 b2 e4 	      JSR	$E4B2	;NRFD hi
   6082  b973		       4a		      LSR
   6083  b974		       b0 4f		      BCS	l6EB4	;err DEV NOT PRES
   6084  b976
   6085  b976		       20 84 ef 	      JSR	$EF84	;NDAC lo
   6086  b979		       24 a3		      BIT	$A3
   6087  b97b		       10 0c		      BPL	l6E66
   6088  b97d				   l6E5A
   6089  b97d		       20 b2 e4 	      JSR	$E4B2	;NRFD hi
   6090  b980		       4a		      LSR
   6091  b981		       90 fa		      BCC	l6E5A
   6092  b983				   l6E60
   6093  b983		       20 b2 e4 	      JSR	$E4B2	;NRFD hi
   6094  b986		       4a		      LSR
   6095  b987		       b0 fa		      BCS	l6E60
   6096  b989				   l6E66
   6097  b989		       20 b2 e4 	      JSR	$E4B2	;NRFD hi
   6098  b98c		       4a		      LSR
   6099  b98d		       90 fa		      BCC	l6E66
   6100  b98f		       20 8d ef 	      JSR	$EF8D	;PCR BIT 1 LSCHEN
   6101  b992
   6102  b992		       8a		      TXA
   6103  b993		       48		      PHA
   6104  b994		       a2 08		      LDX	#$08	;8 BIT
   6105  b996
   6106  b996				   l6E73
   6107  b996		       ad 1f 91 	      LDA	$911F
   6108  b999		       29 02		      AND	#$02
   6109  b99b		       d0 05		      BNE	l6E7F
   6110  b99d		       68		      PLA
   6111  b99e		       aa		      TAX
   6112  b99f		       4c b7 ee 	      JMP	$EEB7	;ERR TIMEOUT
   6113  b9a2
   6114  b9a2				   l6E7F
   6115  b9a2		       20 a0 e4 	      JSR	$E4A0	;DAV hi
   6116  b9a5		       66 95		      ROR	$95
   6117  b9a7		       b0 03		      BCS	l6E89
   6118  b9a9		       20 a9 e4 	      JSR	$E4A9	;DAV lo
   6119  b9ac				   l6E89
   6120  b9ac		       20 84 ef 	      JSR	$EF84	;NDAC lo
   6121  b9af		       ad 2c 91 	      LDA	$912C
   6122  b9b2		       29 dd		      AND	#$DD
   6123  b9b4		       09 02		      ORA	#$02
   6124  b9b6		       08		      PHP
   6125  b9b7		       48		      PHA
   6126  b9b7		       b9 b9	   _relo0350  =	. +1
   6127  b9b8		       20 cb b9 	      JSR	lF96E
   6128  b9bb		       68		      PLA
   6129  b9bc		       28		      PLP
   6130  b9bd		       ca		      DEX
   6131  b9be		       d0 d6		      BNE	l6E73
   6132  b9c0
   6133  b9c0		       68		      PLA
   6134  b9c1		       aa		      TAX
   6135  b9c2		       4c a0 ee 	      jmp	$EEA0
   6136  b9c5							;  NOP
   6137  b9c5							;lEEA5
   6138  b9c5							;  LDA #$04
   6139  b9c5							;  STA $9129
   6140  b9c5							;l6EA5
   6141  b9c5							;  LDA $912D
   6142  b9c5							;  AND #$20
   6143  b9c5							;  BNE l6EB7
   6144  b9c5							;  JSR $E4B2
   6145  b9c5							;  LSR
   6146  b9c5							;  BCS l6EA5
   6147  b9c5							;  CLI
   6148  b9c5							;  RTS
   6149  b9c5
   6150  b9c5				   l6EB4
   6151  b9c5		       4c b4 ee 	      jmp	$eeb4	;err DEV NOT PRES
   6152  b9c8
   6153  b9c8				   l6EB7
   6154  b9c8		       4c b7 ee 	      jmp	$eeb7	;err TIME OUT
   6155  b9cb
   6156  b9cb
   6157  b9cb				   lF96E
   6158  b9cb		       8d 2c 91 	      STA	$912C
   6159  b9ce		       2c 1f 91 	      BIT	$911F
   6160  b9d1		       10 21		      BPL	lF997
   6161  b9d3		       e0 02		      CPX	#$02
   6162  b9d5		       d0 1d		      BNE	lF997
   6163  b9d7		       a9 02		      LDA	#$02
   6164  b9d9		       a2 20		      LDX	#$20
   6165  b9db				   lF97E
   6166  b9db		       2c 1f 91 	      BIT	$911F
   6167  b9de		       f0 05		      BEQ	lF988
   6168  b9e0		       ca		      DEX
   6169  b9e1		       d0 f8		      BNE	lF97E
   6170  b9e3		       f0 0d		      BEQ	lF995
   6171  b9e5				   lF988
   6172  b9e5		       2c 1f 91 	      BIT	$911F
   6173  b9e8		       f0 fb		      BEQ	lF988
   6174  b9ea		       a5 95		      LDA	$95
   6175  b9ec		       6a		      ROR
   6176  b9ed		       6a		      ROR
   6177  b9ee		       09 40		      ORA	#$40
   6178  b9f0		       85 a3		      STA	$A3
   6179  b9f2				   lF995
   6180  b9f2		       a2 02		      LDX	#$02
   6181  b9f4				   lF997
   6182  b9f4		       60		      rts
   6183  b9f5
   6184  b9f5
   6185  b9f5
   6186  b9f5
   6187  b9f5
   6188  b9f5							;--------------JIFFY BYTE IN
   6189  b9f5				   JIF_IECIN
   6190  b9f5				   lfbe0		;NEW BYTE IN??
   6191  b9f5		       78		      sei
   6192  b9f6		       24 a3		      bit	$a3
   6193  b9f8		       70 05		      bvs	l7be5
   6194  b9fa		       a9 00		      LDA	#$00
   6195  b9fc		       4c 1c ef 	      JMP	$EF1C	;ORIG BYTE IN
   6196  b9ff
   6197  b9ff				   JIFFY_IN
   6198  b9ff				   l7be5
   6199  b9ff		       ad 1f 91 	      LDA	$911F
   6200  ba02		       29 03		      AND	#$03
   6201  ba04		       f0 f9		      BEQ	l7be5
   6202  ba06		       a9 80		      LDA	#$80
   6203  ba08		       85 9c		      STA	$9C
   6204  ba0a		       8a		      TXA
   6205  ba0b		       48		      PHA
   6206  ba0c		       48		      PHA
   6207  ba0d		       68		      PLA
   6208  ba0e		       48		      PHA
   6209  ba0f		       68		      PLA
   6210  ba10		       ad 2c 91 	      LDA	$912C
   6211  ba13		       29 dd		      AND	#$DD
   6212  ba15		       8d 2c 91 	      STA	$912C
   6213  ba18		       09 20		      ORA	#$20
   6214  ba1a		       aa		      TAX
   6215  ba1b		       24 9c		      BIT	$9C
   6216  ba1d		       24 9c		      BIT	$9C
   6217  ba1f		       24 9c		      BIT	$9C
   6218  ba21		       ad 1f 91 	      LDA	$911F
   6219  ba24		       6a		      ROR
   6220  ba25		       6a		      ROR
   6221  ba26		       ea		      NOP
   6222  ba27		       29 80		      AND	#$80
   6223  ba29		       0d 1f 91 	      ORA	$911F
   6224  ba2c		       2a		      ROL
   6225  ba2d		       2a		      ROL
   6226  ba2e		       85 b3		      STA	$B3
   6227  ba30		       ad 1f 91 	      LDA	$911F
   6228  ba33		       6a		      ROR
   6229  ba34		       6a		      ROR
   6230  ba35		       29 80		      AND	#$80
   6231  ba37		       ea		      NOP
   6232  ba38		       0d 1f 91 	      ORA	$911F
   6233  ba3b		       2a		      ROL
   6234  ba3c		       2a		      ROL
   6235  ba3d		       85 c0		      STA	$C0
   6236  ba3f		       ad 1f 91 	      LDA	$911F
   6237  ba42		       8e 2c 91 	      STX	$912C
   6238  ba45		       85 9c		      STA	$9C
   6239  ba45		       ba 48	   _relo0351  =	. +1
   6240  ba47		       20 fa ba 	      JSR	lEC4E	;BYTE AUS 2 NIBBLES
   6241  ba4a
   6242  ba4a		       85 a4		      STA	$A4
   6243  ba4c		       68		      PLA
   6244  ba4d		       aa		      TAX
   6245  ba4e		       a5 9c		      LDA	$9C
   6246  ba50		       6a		      ROR
   6247  ba51		       6a		      ROR
   6248  ba52		       10 2c		      BPL	l7C54
   6249  ba54		       90 25		      BCC	lfC4f
   6250  ba56		       a9 42		      LDA	#$42
   6251  ba58		       4c b9 ee 	      JMP	$EEB9	;ERR STATUS, UNLISTEN
   6252  ba5b							;--------------JIFFY BYTE IN
   6253  ba5b
   6254  ba5b
   6255  ba5b							;--------------JIFFY BYTE OUT
   6256  ba5b				   JIF_IECOUT
   6257  ba5b		       24 94		      BIT	$94
   6258  ba5d		       30 05		      BMI	lEEED
   6259  ba5f		       38		      SEC
   6260  ba60		       66 94		      ROR	$94
   6261  ba62		       d0 05		      BNE	lEEF2
   6262  ba64				   lEEED
   6263  ba64		       48		      PHA
   6264  ba64		       ba 66	   _relo0352  =	. +1
   6265  ba65		       20 6d ba 	      JSR	NEW_IECOUT
   6266  ba68		       68		      PLA
   6267  ba69				   lEEF2
   6268  ba69		       85 95		      STA	$95
   6269  ba6b		       18		      CLC
   6270  ba6c		       60		      RTS
   6271  ba6d
   6272  ba6d
   6273  ba6d				   NEW_IECOUT
   6274  ba6d				   lfc41		;NEW BYTE OUT
   6275  ba6d		       78		      sei
   6276  ba6e		       24 a3		      bit	$a3
   6277  ba70		       70 13		      bvs	lfc59
   6278  ba72		       a5 a3		      LDA	$A3
   6279  ba74		       c9 a0		      CMP	#$A0
   6280  ba76		       b0 0d		      BCS	lfc59
   6281  ba76		       ba 79	   _relo0353  =	. +1
   6282  ba78		       4c 6c b9 	      JMP	OLD_IECOUT
   6283  ba7b							;JMP $EE49				;ORIG BYTE OUT
   6284  ba7b
   6285  ba7b				   lfC4f
   6286  ba7b		       a9 40		      LDA	#$40
   6287  ba7d		       20 6a fe 	      JSR	$FE6A	;SET STATUS
   6288  ba80				   l7C54
   6289  ba80		       a5 a4		      LDA	$A4
   6290  ba82				   l7C56
   6291  ba82		       58		      CLI
   6292  ba83		       18		      CLC
   6293  ba84		       60		      RTS
   6294  ba85
   6295  ba85
   6296  ba85				   JIFFY_OUT
   6297  ba85				   lfc59		;JIFFY BYTE OUT
   6298  ba85		       8a		      TXA
   6299  ba86		       48		      PHA
   6300  ba87		       a5 95		      LDA	$95
   6301  ba89		       4a		      LSR
   6302  ba8a		       4a		      LSR
   6303  ba8b		       4a		      LSR
   6304  ba8c		       4a		      LSR
   6305  ba8d		       aa		      TAX
   6306  ba8d		       ba 8f	   _relo0354  =	. +1
   6307  ba8e		       bd 3c bb 	      LDA	lFCCE,X
   6308  ba91		       48		      PHA
   6309  ba92		       8a		      TXA
   6310  ba93		       4a		      LSR
   6311  ba94		       4a		      LSR
   6312  ba95		       aa		      TAX
   6313  ba95		       ba 97	   _relo0355  =	. +1
   6314  ba96		       bd 3c bb 	      LDA	lFCCE,X
   6315  ba99		       85 b3		      STA	$B3
   6316  ba9b		       a5 95		      LDA	$95
   6317  ba9d		       29 0f		      AND	#$0F
   6318  ba9f		       aa		      TAX
   6319  baa0		       a9 02		      LDA	#$02
   6320  baa2				   l7C76
   6321  baa2		       2c 1f 91 	      BIT	$911F
   6322  baa5		       f0 fb		      BEQ	l7C76
   6323  baa7
   6324  baa7		       ad 2c 91 	      LDA	$912C
   6325  baaa		       29 dd		      AND	#$DD
   6326  baac		       85 9c		      STA	$9C
   6327  baae		       48		      PHA
   6328  baaf		       68		      PLA
   6329  bab0		       48		      PHA
   6330  bab1		       68		      PLA
   6331  bab2		       ea		      NOP
   6332  bab3		       ea		      NOP
   6333  bab4		       ea		      NOP
   6334  bab5		       8d 2c 91 	      STA	$912C
   6335  bab8		       68		      PLA
   6336  bab9		       05 9c		      ORA	$9C
   6337  babb		       ea		      NOP
   6338  babc		       8d 2c 91 	      STA	$912C
   6339  babf		       a5 b3		      LDA	$B3
   6340  bac1		       05 9c		      ORA	$9C
   6341  bac3		       05 9c		      ORA	$9C
   6342  bac5		       8d 2c 91 	      STA	$912C
   6343  bac5		       ba c9	   _relo0356  =	. +1
   6344  bac8		       bd 4c bb 	      LDA	lFBBA,X
   6345  bacb		       05 9c		      ORA	$9C
   6346  bacd		       ea		      NOP
   6347  bace		       8d 2c 91 	      STA	$912C
   6348  bace		       ba d2	   _relo0357  =	. +1
   6349  bad1		       bd 5c bb 	      LDA	lF39E,X
   6350  bad4		       05 9c		      ORA	$9C
   6351  bad6		       ea		      NOP
   6352  bad7		       8d 2c 91 	      STA	$912C
   6353  bada		       ea		      NOP
   6354  badb		       29 dd		      AND	#$DD
   6355  badd		       24 a3		      BIT	$A3
   6356  badf		       30 02		      BMI	l7CB7
   6357  bae1		       09 02		      ORA	#$02
   6358  bae3				   l7CB7
   6359  bae3		       8d 2c 91 	      STA	$912C
   6360  bae6		       68		      PLA
   6361  bae7		       aa		      TAX
   6362  bae8		       ea		      NOP
   6363  bae9		       a5 9c		      LDA	$9C
   6364  baeb		       09 02		      ORA	#$02
   6365  baed		       8d 2c 91 	      STA	$912C
   6366  baf0		       ad 1f 91 	      LDA	$911F
   6367  baf3		       29 02		      AND	#$02
   6368  baf5		       f0 8b		      BEQ	l7C56
   6369  baf7		       4c b7 ee 	      JMP	$EEB7	; err TIME OUT
   6370  bafa							;--------------JIFFY BYTE OUT
   6371  bafa
   6372  bafa
   6373  bafa
   6374  bafa							;--------------BAUT EIN BYTE AUS 2 NIBBLES ZUSAMMEN
   6375  bafa				   lEC4E
   6376  bafa		       a5 b3		      LDA	$B3
   6377  bafc		       29 0f		      AND	#$0F
   6378  bafe		       85 b3		      STA	$B3
   6379  bb00		       a5 c0		      LDA	$C0
   6380  bb02		       0a		      ASL
   6381  bb03		       0a		      ASL
   6382  bb04		       0a		      ASL
   6383  bb05		       0a		      ASL
   6384  bb06		       05 b3		      ORA	$B3
   6385  bb08		       60		      RTS
   6386  bb09							;--------------JIFFY BYTE IN
   6387  bb09
   6388  bb09
   6389  bb09
   6390  bb09							;--------------JIFFY UNTALK/UNLISTEN
   6391  bb09				   JIF_UNTALK
   6392  bb09				   lEEF6
   6393  bb09		       ad 1f 91 	      LDA	$911F
   6394  bb0c		       09 80		      ORA	#$80	;ATN ausgeben
   6395  bb0e		       8d 1f 91 	      STA	$911F
   6396  bb11		       20 8d ef 	      JSR	$EF8D
   6397  bb14		       a9 5f		      LDA	#$5F
   6398  bb16		       2c		      .byte.b	$2c
   6399  bb17				   JIF_UNLISTEN
   6400  bb17		       a9 3f		      LDA	#$3F
   6401  bb17		       bb 1a	   _relo0358  =	. +1
   6402  bb19		       20 3a b9 	      JSR	lEE1C	;PART OF LISTEN
   6403  bb1c		       20 c5 ee 	      JSR	$EEC5
   6404  bb1f		       8a		      TXA
   6405  bb20		       a2 0b		      LDX	#$0B
   6406  bb22				   lEF0F
   6407  bb22		       ca		      DEX
   6408  bb23		       d0 fd		      BNE	lEF0F
   6409  bb25		       aa		      TAX
   6410  bb26		       20 84 ef 	      JSR	$EF84
   6411  bb29		       4c a0 e4 	      JMP	$E4A0
   6412  bb2c							;--------------JIFFY UNTALK/UNLISTEN
   6413  bb2c
   6414  bb2c
   6415  bb2c
   6416  bb2c							;--------------JIFFY TALK SA
   6417  bb2c				   JIF_TALKSA
   6418  bb2c		       85 95		      STA	$95
   6419  bb2c		       bb 2f	   _relo0359  =	. +1
   6420  bb2e		       20 63 b9 	      JSR	lEE40
   6421  bb31		       4c d3 ee 	      jmp	$eed3
   6422  bb34							;--------------JIFFY TALK SA
   6423  bb34
   6424  bb34
   6425  bb34							;--------------JIFFY LISTEN SA
   6426  bb34				   JIF_LISTENSA
   6427  bb34		       85 95		      STA	$95
   6428  bb34		       bb 37	   _relo0360  =	. +1
   6429  bb36		       20 63 b9 	      JSR	lEE40
   6430  bb39		       4c c5 ee 	      jmp	$eec5
   6431  bb3c							;--------------JIFFY LISTEN SA
   6432  bb3c
   6433  bb3c
   6434  bb3c
   6435  bb3c
   6436  bb3c							;--------------JIFFY DATA TABLE
   6437  bb3c				   lFCCE
   6438  bb3c		       00 02 20 22*	      .byte.b	$00,$02,$20,$22,$00,$02,$20,$22,$00,$02,$20,$22,$00,$02,$20,$22
   6439  bb4c
   6440  bb4c				   lFBBA
   6441  bb4c		       00 00 20 20*	      .byte.b	$00,$00,$20,$20,$00,$00,$20,$20,$02,$02,$22,$22,$02,$02,$22,$22
   6442  bb5c
   6443  bb5c				   lF39E
   6444  bb5c		       00 20 00 20*	      .byte.b	$00,$20,$00,$20,$02,$22,$02,$22,$00,$20,$00,$20,$02,$22,$02,$22
   6445  bb6c							;--------------JIFFY DATA TABLE
   6446  bb6c
   6447  bb6c
   6448  bb6c
   6449  bb6c
   6450  bb6c
   6451  bb6c							; ==============================================================
   6452  bb6c							; LOADER TEXTE AND TOKEN TABLE
   6453  bb6c							; ==============================================================
   6454  bb6c
   6455  bb6c		       00 01	   TOK_NOIO   =	1
   6456  bb6c		       00 02	   TOK_BLKP   =	TOK_NOIO +1
   6457  bb6c		       00 03	   TOK_BLKD   =	TOK_NOIO +2
   6458  bb6c		       00 04	   TOK_RES    =	TOK_NOIO +3
   6459  bb6c		       00 05	   TOK_RELO   =	TOK_NOIO +4
   6460  bb6c		       00 06	   TOK_RUN    =	TOK_NOIO +5
   6461  bb6c		       00 07	   TOK_SYS    =	TOK_NOIO +6
   6462  bb6c		       00 08	   TOK_OLD    =	TOK_NOIO +7
   6463  bb6c		       00 09	   TOK_OFF    =	TOK_NOIO +8
   6464  bb6c		       00 0a	   TOK_KILL   =	TOK_NOIO +9
   6465  bb6c
   6466  bb6c
   6467  bb6c
   6468  bb6c				   TOKEN
   6469  bb6c		       4e 4f 49 4f*	      dc.b	"NOIO",0,"BLKD",0,"BLKP",0,"BLK",0
   6470  bb7f				   MSG_RES
   6471  bb7f		       52 45 53 45*	      dc.b	"RESET",0
   6472  bb85		       4f 46 46 00	      dc.b	"OFF",0
   6473  bb89		       4b 49 4c 4c*	      dc.b	"KILL",0
   6474  bb8e		       4f 4c 44 00	      dc.b	"OLD",0
   6475  bb92		       55 4e 4e 45*	      dc.b	"UNNEW",0
   6476  bb98		       52 45 93 00	      dc.b	"RE",$93,0	; RELOAD
   6477  bb9c		       8a 00		      dc.b	$8a,0	; RUN
   6478  bb9e		       9e 00		      dc.b	$9e,0	; SYS
   6479  bba0		       00		      dc.b	0	; ::END
   6480  bba1
   6481  bba1				   TOKEN_TAB
   6482  bba1		       01 03 02 02*	      dc.b	TOK_NOIO,TOK_BLKD,TOK_BLKP,TOK_BLKP,TOK_RES,TOK_OFF,TOK_KILL,TOK_OLD,TOK_OLD
   6483  bbaa		       05 06 07 	      dc.b	TOK_RELO,TOK_RUN,TOK_SYS
   6484  bbad
   6485  bbad
   6486  bbad
   6487  bbad
   6488  bbad
   6489  bbad
   6490  bbad							; ==============================================================
   6491  bbad							; MESSAGE TEXTE
   6492  bbad							; ==============================================================
   6493  bbad
   6494  bbad
   6495  bbad				   MSG_LOADAT
   6496  bbad		       20 46 52 4f*	      dc.b	" FROM ",0
   6497  bbb4				   MSG_LOADTO
   6498  bbb4		       20 54 4f 20*	      dc.b	" TO ",0
   6499  bbb9
   6500  bbb9				   MSG_DEVICE
   6501  bbb9		       44 45 56 49*	      dc.b	"DEVICE#",0
   6502  bbc1
   6503  bbc1
   6504  bbc1				   MSG_PRINTIO
   6505  bbc1		       49 4f 3d 00	      dc.b	"IO=",0
   6506  bbc5				   MSG_NOIO
   6507  bbc5		       49 4f 20 4f*	      dc.b	"IO OFF",13,0
   6508  bbcd
   6509  bbcd
   6510  bbcd				   MY_WEDGE_END
   6511  bbcd							; == END OF MINI WEDGE ============================================================
   6512  bbcd
   6513  bbcd
   6514  bbcd
   6515  bbcd				   WEDGEMESSAGE1b
   6516  bbcd		       11 1c 46 45*	      dc.b	$11, RED, "FE3 WEDGE (", 0
   6517  bbdb				   WEDGEMESSAGE1c
   6518  bbdb		       4f 46 46 29*	      dc.b	"OFF)",BLUE,13,0
   6519  bbe2
   6520  bbe2
   6521  bbe2
   6522  bbe2
   6523  bbe2
   6524  bbe2
   6525  bbe2
   6526  bbe2
   6527  bbe2
   6528  bbe2
   6529  bbe2
   6530  bbe2							; ==============================================================
   6531  bbe2							; JIFFY IO CODE (CHKIN, CHKOUT, BASIN, BSOUT)	 from SJLOAD-128
   6532  bbe2							; ==============================================================
   6533  bbe2
   6534  bbe2		       03 1e	   PTR_CHKIN  =	$031e
   6535  bbe2		       03 20	   PTR_CHKOUT =	$0320
   6536  bbe2		       03 24	   PTR_BASIN  =	$0324
   6537  bbe2		       03 22	   PTR_CLRCH  =	$0322
   6538  bbe2		       03 26	   PTR_BASOUT =	$0326
   6539  bbe2		       03 2a	   PTR_GETIN  =	$032a
   6540  bbe2		       03 2c	   PTR_CLRALL =	$032c
   6541  bbe2
   6542  bbe2							;-------------------- WEDGE INIT
   6543  bbe2				   SET_BASE_VECTORS
   6544  bbe2		       a9 29		      lda	#<JChkIn
   6545  bbe4		       a2 bc		      ldx	#>JChkIn
   6546  bbe6		       8d 1e 03 	      sta	PTR_CHKIN
   6547  bbe9		       8e 1f 03 	      stx	PTR_CHKIN +1
   6548  bbec		       a9 4e		      lda	#<JChkOut
   6549  bbee		       a2 bc		      ldx	#>JChkOut
   6550  bbf0		       8d 20 03 	      sta	PTR_CHKOUT
   6551  bbf3		       8e 21 03 	      stx	PTR_CHKOUT +1
   6552  bbf6		       a9 7c		      lda	#<JBasIn
   6553  bbf8		       a2 bc		      ldx	#>JBasIn
   6554  bbfa		       8d 24 03 	      sta	PTR_BASIN
   6555  bbfd		       8e 25 03 	      stx	PTR_BASIN +1
   6556  bc00		       a9 8f		      lda	#<JBasOut
   6557  bc02		       a2 bc		      ldx	#>JBasOut
   6558  bc04		       8d 26 03 	      sta	PTR_BASOUT
   6559  bc07		       8e 27 03 	      stx	PTR_BASOUT +1
   6560  bc0a		       a9 73		      lda	#<JGetIn
   6561  bc0c		       a2 bc		      ldx	#>JGetIn
   6562  bc0e		       8d 2a 03 	      sta	PTR_GETIN
   6563  bc11		       8e 2b 03 	      stx	PTR_GETIN +1
   6564  bc14		       a9 a1		      lda	#<JClrCh
   6565  bc16		       a2 bc		      ldx	#>JClrCh
   6566  bc18		       8d 22 03 	      sta	PTR_CLRCH
   6567  bc1b		       8e 23 03 	      stx	PTR_CLRCH +1
   6568  bc1e		       a9 9d		      lda	#<JClrAll
   6569  bc20		       a2 bc		      ldx	#>JClrAll
   6570  bc22		       8d 2c 03 	      sta	PTR_CLRALL
   6571  bc25		       8e 2d 03 	      stx	PTR_CLRALL +1
   6572  bc28		       60		      rts
   6573  bc29
   6574  bc29
   6575  bc29
   6576  bc29
   6577  bc29							;
   6578  bc29							; JIFFY CHKIN	  ($031e vector)
   6579  bc29							;
   6580  bc29				   JChkIn     subroutine
   6581  bc29		       20 cf f3 	      jsr	$f3cf	;search logical file#
   6582  bc2c		       f0 03		      beq	.1	;file not open error
   6583  bc2e		       4c 84 f7 	      jmp	$f784	;err "file not open"
   6584  bc31
   6585  bc31				   .1
   6586  bc31		       20 df f3 	      jsr	$f3df	;set file param
   6587  bc34		       a5 ba		      lda	SY_DN	;device#
   6588  bc36		       c9 08		      cmp	#8
   6589  bc38		       b0 03		      bcs	.2
   6590  bc3a		       4c d2 f2 	      jmp	$f2d2	;std. ChkIn
   6591  bc3d
   6592  bc3d				   .2
   6593  bc3d		       aa		      tax
   6594  bc3e		       20 32 b9 	      jsr	TALK
   6595  bc41		       a5 b9		      lda	SY_SA
   6596  bc43		       10 03		      bpl	.3
   6597  bc45		       4c f8 f2 	      jmp	$f2f8
   6598  bc48
   6599  bc48				   .3
   6600  bc48		       20 2c bb 	      jsr	TALKSA
   6601  bc4b		       4c 01 f3 	      jmp	$f301
   6602  bc4e
   6603  bc4e
   6604  bc4e
   6605  bc4e
   6606  bc4e
   6607  bc4e							;
   6608  bc4e							; JIFFY CHKOUT    ($0320 vector)
   6609  bc4e							;
   6610  bc4e				   JChkOut    subroutine
   6611  bc4e		       20 cf f3 	      jsr	$f3cf	;search logical file#
   6612  bc51		       f0 03		      beq	.1	;file not open error
   6613  bc53		       4c 84 f7 	      jmp	$f784	;err "file not open"
   6614  bc56
   6615  bc56				   .1
   6616  bc56		       20 df f3 	      jsr	$f3df	;set file param
   6617  bc59		       a5 ba		      lda	SY_DN	;device#
   6618  bc5b		       c9 08		      cmp	#8
   6619  bc5d		       b0 03		      bcs	.2
   6620  bc5f		       4c 14 f3 	      jmp	$f314	;std. ChkOut
   6621  bc62
   6622  bc62				   .2
   6623  bc62		       aa		      tax
   6624  bc63		       20 35 b9 	      jsr	LISTEN
   6625  bc66		       a5 b9		      lda	SY_SA
   6626  bc68		       10 03		      bpl	.3
   6627  bc6a		       4c 3a f3 	      jmp	$f33a
   6628  bc6d
   6629  bc6d				   .3
   6630  bc6d		       20 34 bb 	      jsr	LISTENSA
   6631  bc70		       4c 42 f3 	      jmp	$f342
   6632  bc73
   6633  bc73
   6634  bc73
   6635  bc73
   6636  bc73							;
   6637  bc73							; JIFFY GETIN	  ($032a vector)
   6638  bc73							;
   6639  bc73				   JGetIn     subroutine
   6640  bc73		       a5 99		      lda	$99	;device#
   6641  bc75		       c9 08		      cmp	#8
   6642  bc77		       b0 0c		      bcs	.2
   6643  bc79		       4c f5 f1 	      jmp	$f1f5	;std. GetIn
   6644  bc7c
   6645  bc7c
   6646  bc7c
   6647  bc7c							;
   6648  bc7c							; JIFFY BASIN	  ($0324 vector)
   6649  bc7c							;
   6650  bc7c				   JBasIn
   6651  bc7c		       a5 99		      lda	$99	;device#
   6652  bc7e		       c9 08		      cmp	#8
   6653  bc80		       b0 03		      bcs	.2
   6654  bc82		       4c 0e f2 	      jmp	$f20e	;std. BasIn
   6655  bc85
   6656  bc85				   .2
   6657  bc85		       a5 90		      lda	SY_STATUS
   6658  bc87		       f0 03		      beq	.3
   6659  bc89		       4c 68 f2 	      jmp	$f268	;std. IECIN
   6660  bc8c
   6661  bc8c				   .3
   6662  bc8c		       4c f5 b9 	      jmp	JIF_IECIN
   6663  bc8f
   6664  bc8f
   6665  bc8f
   6666  bc8f
   6667  bc8f							;
   6668  bc8f							; JIFFY BASOUT    ($0326 vector)
   6669  bc8f							;
   6670  bc8f				   JBasOut    subroutine
   6671  bc8f		       48		      pha
   6672  bc90		       a5 9a		      lda	$9a	;device#
   6673  bc92		       c9 08		      cmp	#8
   6674  bc94		       b0 03		      bcs	.2
   6675  bc96		       4c 7b f2 	      jmp	$f27b	;std. BasOut
   6676  bc99
   6677  bc99				   .2
   6678  bc99		       68		      pla
   6679  bc9a		       4c 5b ba 	      jmp	JIF_IECOUT
   6680  bc9d
   6681  bc9d
   6682  bc9d
   6683  bc9d							;
   6684  bc9d							; JIFFY CLRCH / CLRALL    ($0322 / $032c vector)
   6685  bc9d							;
   6686  bc9d				   JClrAll    subroutine
   6687  bc9d		       a9 00		      lda	#0
   6688  bc9f		       85 98		      sta	$98
   6689  bca1
   6690  bca1				   JClrCh
   6691  bca1		       a2 03		      ldx	#3
   6692  bca3		       e4 9a		      cpx	$9a	;device# out
   6693  bca5		       b0 03		      bcs	.1
   6694  bca7		       20 17 bb 	      jsr	JIF_UNLISTEN
   6695  bcaa				   .1
   6696  bcaa		       e4 99		      cpx	$99	;device# in
   6697  bcac		       b0 03		      bcs	.2
   6698  bcae		       20 09 bb 	      jsr	JIF_UNTALK
   6699  bcb1				   .2
   6700  bcb1		       4c 03 f4 	      jmp	$f403	;std. ClrAll
   6701  bcb4
   6702  bcb4
   6703  bcb4
   6704  bcb4
   6705  bcb4
   6706  bcb4							; ==============================================================
   6707  bcb4							; FIRMWARE FLASHER / 29F040 CODE
   6708  bcb4							; ==============================================================
   6709  bcb4
   6710  bcb4		       12 5c	   FLASH_FW_DEST =	4700	;$125c
   6711  bcb4
   6712  bcb4		       02 62	   FLASH_FW_LEN =	(FLASH_FW_END - FLASH_FW_START)
   6713  bcb4
   6714  bcb4
   6715  bcb4				   MOVE_FLASH_FW subroutine
   6716  bcb4		       a9 be		      lda	#<(FLASH_FW_DEST + FLASH_FW_LEN)
   6717  bcb6		       85 58		      sta	$58	; low-byte new end address +1 $0501+fl len
   6718  bcb8		       a9 14		      lda	#>(FLASH_FW_DEST + FLASH_FW_LEN)
   6719  bcba		       85 59		      sta	$59	; high-byte new end address +1 $0501+fl len
   6720  bcbc
   6721  bcbc		       a9 cf		      lda	#<FLASH_FW_START
   6722  bcbe		       85 5f		      sta	$5f	; low-byte start address $a000
   6723  bcc0		       a9 bc		      lda	#>FLASH_FW_START
   6724  bcc2		       85 60		      sta	$60	; high-byte start address $a000
   6725  bcc4
   6726  bcc4		       a9 31		      lda	#<FLASH_FW_END
   6727  bcc6		       85 5a		      sta	$5a	; low-byte end address +1 $a???
   6728  bcc8		       a9 bf		      lda	#>FLASH_FW_END
   6729  bcca		       85 5b		      sta	$5b	; high-byte end address +1 $a???
   6730  bccc
   6731  bccc		       4c bf c3 	      jmp	SY_MOVEMEM	; execute move memory vic routine and return
   6732  bccf
   6733  bccf
   6734  bccf							;FLASH_FW subroutine
   6735  bccf							;  jsr MOVE_FLASH_FW
   6736  bccf							;  jmp FLASHER
   6737  bccf
   6738  bccf
   6739  bccf							; ==============================================================
   6740  bccf							; FLASH CODE / 29F040 CODE
   6741  bccf							; ==============================================================
   6742  bccf
   6743  bccf				   FLASH_FW_START
   6744  bccf					      RORG	FLASH_FW_DEST
   6745  bccf
   6746  bccf				   FLASHER    subroutine
   6747  bccf		       85 ac		      sta	LOADSTART
   6748  bcd1		       84 ad		      sty	LOADSTART +1
   6749  bcd3
   6750  bcd3							;sta $a000				; UNLOCK IO
   6751  bcd3		       a9 20		      lda	#FEMOD_FLASH	; PROG MODE
   6752  bcd5		       8d 02 9c 	      sta	IO_FINAL
   6753  bcd8
   6754  bcd8		       20 ae 13 	      jsr	TestEE
   6755  bcdb		       b0 31		      bcs	.rts
   6756  bcdd
   6757  bcdd		       20 5f 14 	      jsr	BLANK_CHECK
   6758  bce0		       f0 17		      beq	.05
   6759  bce2
   6760  bce2		       20 23 14 	      jsr	FLASH_ERASE
   6761  bce5		       b0 05		      bcs	.err	; ERROR -->
   6762  bce7
   6763  bce7		       20 34 14 	      jsr	BLANK_CHECK_FULL
   6764  bcea		       90 0d		      bcc	.05
   6765  bcec
   6766  bcec				   .err
   6767  bcec		       20 ab 14 	      jsr	FLASH_CROUT
   6768  bcef		       a9 7c		      lda	#<MSG_ERROR
   6769  bcf1		       a0 13		      ldy	#>MSG_ERROR
   6770  bcf3		       20 1e cb 	      jsr	SY_STROUT
   6771  bcf6		       38		      sec
   6772  bcf7		       b0 03		      bcs	.exit
   6773  bcf9
   6774  bcf9				   .05
   6775  bcf9		       20 e2 13 	      jsr	FLASH_FIRMWARE
   6776  bcfc
   6777  bcfc				   .exit
   6778  bcfc		       08		      php
   6779  bcfd		       20 a7 12 	      jsr	FlashCodeEndSequ	; RESET
   6780  bd00
   6781  bd00		       a9 40		      lda	#FEMOD_ROM	; EEP MODE
   6782  bd02		       8d 02 9c 	      sta	IO_FINAL
   6783  bd05		       28		      plp
   6784  bd06		       b0 03		      bcs	.errexit
   6785  bd08		       4c 22 fd 	      jmp	SOFT_RESET
   6786  bd0b
   6787  bd0b				   .errexit
   6788  bd0b		       4c 67 e4 	      jmp	BASIC_WARM
   6789  bd0e
   6790  bd0e				   .rts
   6791  bd0e		       60		      rts
   6792  bd0f
   6793  bd0f
   6794  bd0f							; ==============================================================
   6795  bd0f							; 29F040 SUBS
   6796  bd0f							; ==============================================================
   6797  bd0f
   6798  bd0f		       20 00	   _flashBase =	$2000
   6799  bd0f		       25 55	   _flash555  =	_flashBase + $555
   6800  bd0f		       22 aa	   _flash2aa  =	_flashBase + $2aa
   6801  bd0f
   6802  bd0f		       00 20	   FLASH_ALG_ERROR_BIT =	$20
   6803  bd0f		       00 08	   FLASH_ALG_RUNNING_BIT =	$08
   6804  bd0f
   6805  bd0f
   6806  bd0f				   _flashCodeMagic subroutine
   6807  bd0f		       a9 aa		      lda	#$aa
   6808  bd11		       8d 55 25 	      sta	_flash555
   6809  bd14		       a9 55		      lda	#$55
   6810  bd16		       8d aa 22 	      sta	_flash2aa
   6811  bd19		       60		      rts
   6812  bd1a
   6813  bd1a				   FlashCodeEndSequ subroutine		; RESET
   6814  bd1a				   _flashCodeEndSequ
   6815  bd1a		       a9 f0		      lda	#$f0
   6816  bd1c		       8d 00 20 	      sta	_flashBase
   6817  bd1f		       60		      rts
   6818  bd20
   6819  bd20				   _flashCodeSectorErase subroutine
   6820  bd20		       20 9c 12 	      jsr	_flashCodeMagic
   6821  bd23		       a9 80		      lda	#$80
   6822  bd25		       8d 55 25 	      sta	_flash555
   6823  bd28		       20 9c 12 	      jsr	_flashCodeMagic
   6824  bd2b		       a9 30		      lda	#$30
   6825  bd2d		       8d 00 20 	      sta	_flashBase
   6826  bd30		       60		      rts
   6827  bd31
   6828  bd31				   _flashCodeChipErase subroutine
   6829  bd31		       20 9c 12 	      jsr	_flashCodeMagic
   6830  bd34		       a9 80		      lda	#$80
   6831  bd36		       8d 55 25 	      sta	_flash555
   6832  bd39		       20 9c 12 	      jsr	_flashCodeMagic
   6833  bd3c		       a9 10		      lda	#$10
   6834  bd3e		       8d 55 25 	      sta	_flash555
   6835  bd41		       60		      rts
   6836  bd42
   6837  bd42							;_flashCodeWrite subroutine
   6838  bd42							;  jsr _flashCodeWritePrep
   6839  bd42							;  sta (SAVESTART),y
   6840  bd42							;  rts
   6841  bd42
   6842  bd42
   6843  bd42				   _flashCodeWritePrep subroutine
   6844  bd42		       48		      pha
   6845  bd43		       20 9c 12 	      jsr	_flashCodeMagic
   6846  bd46		       a9 a0		      lda	#$A0
   6847  bd48		       8d 55 25 	      sta	_flash555
   6848  bd4b		       68		      pla
   6849  bd4c		       60		      rts
   6850  bd4d
   6851  bd4d
   6852  bd4d				   _flashCodeCheckProgress subroutine		; TOGGLE CHECK
   6853  bd4d		       48		      pha
   6854  bd4e		       8a		      txa
   6855  bd4f		       48		      pha
   6856  bd50				   _flashCodeCP0
   6857  bd50		       a2 02		      ldx	#2
   6858  bd52				   _flashCodeCP1
   6859  bd52		       ad 00 20 	      lda	_flashBase
   6860  bd55		       cd 00 20 	      cmp	_flashBase
   6861  bd58		       f0 12		      beq	_flashCodeCP2
   6862  bd5a
   6863  bd5a		       29 20		      and	#FLASH_ALG_ERROR_BIT
   6864  bd5c		       f0 f2		      beq	_flashCodeCP0
   6865  bd5e
   6866  bd5e							; ERROR!!
   6867  bd5e		       ad 00 20 	      lda	_flashBase
   6868  bd61		       cd 00 20 	      cmp	_flashBase
   6869  bd64		       f0 09		      beq	_flashCodeCP4
   6870  bd66
   6871  bd66		       20 a7 12 	      jsr	FlashCodeEndSequ	; RESET
   6872  bd69		       38		      sec
   6873  bd6a		       b0 04		      bcs	_flashCodeCPE	; ERROR!
   6874  bd6c
   6875  bd6c				   _flashCodeCP2
   6876  bd6c		       ca		      dex
   6877  bd6d		       d0 e3		      bne	_flashCodeCP1
   6878  bd6f				   _flashCodeCP4
   6879  bd6f		       18		      clc
   6880  bd70				   _flashCodeCPE
   6881  bd70		       68		      pla
   6882  bd71		       aa		      tax
   6883  bd72		       68		      pla
   6884  bd73		       60		      rts
   6885  bd74
   6886  bd74
   6887  bd74							;=============== GET VENDOR/DEVICE ID in X,Y
   6888  bd74				   FlashCodeVendorID subroutine
   6889  bd74		       20 9c 12 	      jsr	_flashCodeMagic
   6890  bd77		       a9 90		      lda	#$90
   6891  bd79		       8d 55 25 	      sta	_flash555
   6892  bd7c		       ae 00 20 	      ldx	_flashBase
   6893  bd7f		       ac 01 20 	      ldy	_flashBase+1
   6894  bd82		       4c a7 12 	      jmp	_flashCodeEndSequ
   6895  bd85
   6896  bd85							;=============== ERASE SECTOR
   6897  bd85				   FlashCodeSectorErase subroutine
   6898  bd85		       20 ad 12 	      jsr	_flashCodeSectorErase
   6899  bd88		       4c da 12 	      jmp	_flashCodeCheckProgress
   6900  bd8b
   6901  bd8b							;=============== FLASH BYTE	AC ==> (SAVESTART)
   6902  bd8b				   FlashCodeWrite subroutine
   6903  bd8b		       20 cf 12 	      jsr	_flashCodeWritePrep
   6904  bd8e		       91 c1		      sta	(SAVESTART),y
   6905  bd90		       4c da 12 	      jmp	_flashCodeCheckProgress
   6906  bd93
   6907  bd93							;=============== SET BANK AND FLASH BYTE    AC ==> (SAVESTART)  C=1:error
   6908  bd93				   FlashCodeWriteXP subroutine
   6909  bd93		       48		      pha
   6910  bd93		       13 22	   __flash_BANK =	. +1
   6911  bd94		       a9 20		      lda	#FEMOD_FLASH
   6912  bd96		       8d 02 9c 	      sta	IO_FINAL
   6913  bd99		       68		      pla
   6914  bd9a		       20 18 13 	      jsr	FlashCodeWrite
   6915  bd9d		       b0 08		      bcs	.exit
   6916  bd9f		       d1 c1		      cmp	(SAVESTART),y
   6917  bda1		       f0 03		      beq	.clc
   6918  bda3		       38		      sec
   6919  bda4		       b0 01		      bcs	.exit
   6920  bda6				   .clc
   6921  bda6		       18		      clc
   6922  bda7				   .exit
   6923  bda7							; lda #FEMOD_RAM +$10			 ;RAM MODUS, BLK-5 PROTECTED
   6924  bda7		       a9 40		      lda	#FEMOD_ROM	;ROM MODUS
   6925  bda9		       8d 02 9c 	      sta	IO_FINAL
   6926  bdac		       60		      rts
   6927  bdad
   6928  bdad
   6929  bdad							;-----------------------
   6930  bdad				   FlashCodeWriteXpInc subroutine
   6931  bdad		       e6 c1		      inc	SAVESTART
   6932  bdaf		       d0 0c		      bne	.exit
   6933  bdb1
   6934  bdb1		       a5 c2		      lda	SAVESTART +1
   6935  bdb3		       20 4d ae 	      jsr	RAMD_INC_PTR
   6936  bdb6		       85 c2		      sta	SAVESTART +1
   6937  bdb8		       90 03		      bcc	.exit
   6938  bdba
   6939  bdba		       ee 22 13 	      inc	__flash_BANK
   6940  bdbd				   .exit
   6941  bdbd		       60		      rts
   6942  bdbe
   6943  bdbe
   6944  bdbe
   6945  bdbe							;------------
   6946  bdbe				   MSG_VENDOR
   6947  bdbe		       12 0d 56 45*	      dc.b	RVSON,13,"VENDOR:",RVSOFF,0
   6948  bdc9				   MSG_DEVICEID
   6949  bdc9		       12 30 31 20*	      dc.b	RVSON,"01  DEVICE:",RVSOFF,0
   6950  bdd7				   MSG_A4
   6951  bdd7		       41 34 0d 00	      dc.b	"A4",13,0
   6952  bddb
   6953  bddb				   MSG_EEE
   6954  bddb		       3f 3f 0d 42*	      dc.b	"??",13,"BAD EEPROM",0
   6955  bde9
   6956  bde9
   6957  bde9
   6958  bde9
   6959  bde9
   6960  bde9
   6961  bde9							; ==============================================================
   6962  bde9							; OPEN FIRMWARE FILE AND FLASH
   6963  bde9							; ==============================================================
   6964  bde9
   6965  bde9				   MSG_ERRFLSH
   6966  bde9		       46 4c 41 53*	      dc.b	"FLASH "
   6967  bdef				   MSG_ERROR
   6968  bdef		       45 52 52 4f*	      dc.b	"ERROR",13,0
   6969  bdf6
   6970  bdf6				   MSG_FLASH
   6971  bdf6		       46 4c 41 53*	      dc.b	"FLASHING ...",13,0
   6972  be04				   MSG_ERASE
   6973  be04		       45 52 41 53*	      dc.b	"ERASING ...",13,0
   6974  be11				   MSG_BLANK
   6975  be11		       42 4c 41 4e*	      dc.b	"BLANK CHECK ...",0
   6976  be21
   6977  be21
   6978  be21
   6979  be21
   6980  be21							; ==============================================================
   6981  be21							; TEST FOR RIGHT EEPROM TYPE
   6982  be21							; ==============================================================
   6983  be21
   6984  be21				   TestEE     subroutine
   6985  be21		       a9 4b		      lda	#<MSG_VENDOR
   6986  be23		       a0 13		      ldy	#>MSG_VENDOR
   6987  be25		       20 1e cb 	      jsr	SY_STROUT
   6988  be28
   6989  be28		       20 01 13 	      jsr	FlashCodeVendorID
   6990  be2b		       98		      tya
   6991  be2c		       48		      pha
   6992  be2d		       e0 01		      cpx	#$01	; AMD
   6993  be2f		       f0 04		      beq	.VENDOROK
   6994  be31		       e0 c2		      cpx	#$c2	; AMD by MX
   6995  be33		       d0 16		      bne	.ERR0
   6996  be35
   6997  be35				   .VENDOROK
   6998  be35		       a9 56		      lda	#<MSG_DEVICEID
   6999  be37		       a0 13		      ldy	#>MSG_DEVICEID
   7000  be39		       20 1e cb 	      jsr	SY_STROUT
   7001  be3c		       68		      pla
   7002  be3d		       aa		      tax
   7003  be3e							;     ldx #$a4
   7004  be3e		       e0 a4		      cpx	#$a4	; 29F040
   7005  be40		       d0 0a		      bne	.ERR1
   7006  be42		       a9 64		      lda	#<MSG_A4
   7007  be44		       a0 13		      ldy	#>MSG_A4
   7008  be46		       20 1e cb 	      jsr	SY_STROUT
   7009  be49
   7010  be49		       18		      clc
   7011  be4a		       60		      rts
   7012  be4b
   7013  be4b				   .ERR0
   7014  be4b		       68		      pla
   7015  be4c				   .ERR1
   7016  be4c		       a9 68		      lda	#<MSG_EEE
   7017  be4e		       a0 13		      ldy	#>MSG_EEE
   7018  be50		       20 1e cb 	      jsr	SY_STROUT
   7019  be53		       38		      sec
   7020  be54		       60		      rts
   7021  be55
   7022  be55
   7023  be55
   7024  be55
   7025  be55
   7026  be55
   7027  be55							; ==============================================================
   7028  be55							; OPEN FIRMWARE FILE AND FLASH
   7029  be55							; ==============================================================
   7030  be55
   7031  be55
   7032  be55				   FLASH_FIRMWARE subroutine
   7033  be55		       a9 83		      lda	#<MSG_FLASH
   7034  be57		       a0 13		      ldy	#>MSG_FLASH
   7035  be59		       20 1e cb 	      jsr	SY_STROUT
   7036  be5c
   7037  be5c		       20 80 14 	      jsr	SET_LOADPTR
   7038  be5f		       20 89 14 	      jsr	SET_SAVEPTR
   7039  be62		       20 f7 13 	      jsr	FLASH_FIRMWARE_2
   7040  be65		       b0 25		      bcs	.rts
   7041  be67		       20 95 14 	      jsr	SET_SAVEPTR_2
   7042  be6a							;ldy #0
   7043  be6a				   FLASH_FIRMWARE_2
   7044  be6a				   .02
   7045  be6a		       a9 80		      lda	#FEMOD_RAM_1	; RAM MODE
   7046  be6c		       8d 02 9c 	      sta	IO_FINAL
   7047  be6f		       b1 c3		      lda	(LOADPTR),y
   7048  be71
   7049  be71		       48		      pha
   7050  be72		       a9 20		      lda	#FEMOD_FLASH	; PROG MODE
   7051  be74		       8d 02 9c 	      sta	IO_FINAL
   7052  be77		       68		      pla
   7053  be78
   7054  be78		       20 18 13 	      jsr	FlashCodeWrite
   7055  be7b		       b0 10		      bcs	.err2
   7056  be7d
   7057  be7d		       d1 c1		      cmp	(SAVESTART),y
   7058  be7f		       d0 0c		      bne	.err2
   7059  be81
   7060  be81		       c8		      iny
   7061  be82		       d0 e6		      bne	.02
   7062  be84		       e6 c2		      inc	SAVESTART +1
   7063  be86		       e6 c4		      inc	LOADPTR +1
   7064  be88		       ca		      dex
   7065  be89		       d0 df		      bne	.02
   7066  be8b		       18		      clc
   7067  be8c				   .rts
   7068  be8c		       60		      rts
   7069  be8d
   7070  be8d
   7071  be8d							;.err
   7072  be8d							;  pla
   7073  be8d							;  pla
   7074  be8d				   .err2
   7075  be8d		       a9 76		      lda	#<MSG_ERRFLSH
   7076  be8f		       a0 13		      ldy	#>MSG_ERRFLSH
   7077  be91		       20 1e cb 	      jsr	SY_STROUT
   7078  be94		       38		      sec
   7079  be95		       60		      rts
   7080  be96
   7081  be96
   7082  be96
   7083  be96							;ERASE CURRENT SECTOR
   7084  be96				   FLASH_ERASE
   7085  be96		       a9 91		      lda	#<MSG_ERASE
   7086  be98		       a0 13		      ldy	#>MSG_ERASE
   7087  be9a		       20 1e cb 	      jsr	SY_STROUT
   7088  be9d		       20 12 13 	      jsr	FlashCodeSectorErase
   7089  bea0		       b0 eb		      bcs	.err2
   7090  bea2		       20 a7 12 	      jsr	FlashCodeEndSequ	; RESET
   7091  bea5		       18		      clc
   7092  bea6		       60		      rts
   7093  bea7
   7094  bea7
   7095  bea7							;BLANK CHECK BANK 1 to 15
   7096  bea7				   BLANK_CHECK_FULL subroutine
   7097  bea7		       a9 20		      lda	#FEMOD_FLASH	; EEP MODE
   7098  bea9				   .2
   7099  bea9		       18		      clc
   7100  beaa		       69 02		      adc	#2
   7101  beac		       8d 02 9c 	      sta	IO_FINAL
   7102  beaf		       29 10		      and	#$10
   7103  beb1		       d0 15		      bne	.e	;BANK 16? -->
   7104  beb3
   7105  beb3		       20 5f 14 	      jsr	BLANK_CHECK
   7106  beb6		       f0 06		      beq	.3
   7107  beb8
   7108  beb8		       20 23 14 	      jsr	FLASH_ERASE
   7109  bebb		       90 06		      bcc	.4
   7110  bebd		       60		      rts
   7111  bebe
   7112  bebe				   .3
   7113  bebe		       a9 91		      lda	#145	;CURSOR UP
   7114  bec0		       20 d2 ff 	      jsr	BSOUT
   7115  bec3				   .4
   7116  bec3		       ad 02 9c 	      lda	IO_FINAL
   7117  bec6		       d0 e1		      bne	.2
   7118  bec8				   .e
   7119  bec8		       a9 40		      lda	#FEMOD_ROM	; EEP MODE
   7120  beca		       8d 02 9c 	      sta	IO_FINAL
   7121  becd		       20 ab 14 	      jsr	FLASH_CROUT
   7122  bed0		       18		      clc
   7123  bed1							;.rts
   7124  bed1		       60		      rts
   7125  bed2
   7126  bed2
   7127  bed2
   7128  bed2							;BLANK CHECK BANK 0
   7129  bed2				   BLANK_CHECK subroutine
   7130  bed2		       a9 9e		      lda	#<MSG_BLANK
   7131  bed4		       a0 13		      ldy	#>MSG_BLANK
   7132  bed6		       20 a2 14 	      jsr	P_BANK
   7133  bed9
   7134  bed9		       20 8f 14 	      jsr	SET_SAVEPTR_1
   7135  bedc		       20 71 14 	      jsr	.BLANK_CHECK
   7136  bedf		       d0 11		      bne	.exit
   7137  bee1
   7138  bee1		       20 95 14 	      jsr	SET_SAVEPTR_2
   7139  bee4				   .BLANK_CHECK
   7140  bee4		       a9 ff		      lda	#$ff
   7141  bee6				   .02
   7142  bee6		       d1 c1		      cmp	(SAVESTART),y
   7143  bee8		       d0 08		      bne	.exit
   7144  beea		       c8		      iny
   7145  beeb		       d0 f9		      bne	.02
   7146  beed		       e6 c2		      inc	SAVESTART +1
   7147  beef		       ca		      dex
   7148  bef0		       d0 f4		      bne	.02
   7149  bef2				   .exit
   7150  bef2		       60		      rts
   7151  bef3
   7152  bef3
   7153  bef3
   7154  bef3				   SET_LOADPTR subroutine
   7155  bef3		       a5 ac		      lda	LOADSTART
   7156  bef5		       85 c3		      sta	LOADPTR
   7157  bef7		       a5 ad		      lda	LOADSTART +1
   7158  bef9		       85 c4		      sta	LOADPTR +1
   7159  befb		       60		      rts
   7160  befc
   7161  befc				   SET_SAVEPTR subroutine
   7162  befc		       a9 70		      lda	#$70	;FIRMWARE START ADDRESS
   7163  befe		       a2 10		      ldx	#16	;BLOCK COUNT
   7164  bf00		       d0 0a		      bne	SET_SAVEPTR_E
   7165  bf02
   7166  bf02				   SET_SAVEPTR_1 subroutine
   7167  bf02		       a9 20		      lda	#$20	;DEFAULT LOW CARTRIDGE ADDRESS
   7168  bf04		       a2 60		      ldx	#96	;BLOCK COUNT
   7169  bf06		       d0 04		      bne	SET_SAVEPTR_E
   7170  bf08
   7171  bf08				   SET_SAVEPTR_2 subroutine
   7172  bf08		       a9 a0		      lda	#$A0	;DEFAULT HI CARTRIDGE ADDRESS
   7173  bf0a		       a2 20		      ldx	#32	;BLOCK COUNT
   7174  bf0c				   SET_SAVEPTR_E
   7175  bf0c		       85 c2		      sta	SAVESTART +1
   7176  bf0e		       a9 00		      lda	#$00	;DEFAULT CARTRIDGE ADDRESS
   7177  bf10		       85 c1		      sta	SAVESTART
   7178  bf12		       a0 00		      ldy	#0
   7179  bf14		       60		      rts
   7180  bf15
   7181  bf15
   7182  bf15				   P_BANK     subroutine
   7183  bf15		       20 1e cb 	      jsr	SY_STROUT
   7184  bf18		       ad 02 9c 	      lda	IO_FINAL
   7185  bf1b		       20 b0 14 	      jsr	FLASH_HEXOUT
   7186  bf1e							;  lda #157				    ;CURSOR LEFT
   7187  bf1e							;  jmp BSOUT
   7188  bf1e				   FLASH_CROUT subroutine
   7189  bf1e		       a9 0d		      lda	#13
   7190  bf20		       4c d2 ff 	      jmp	BSOUT
   7191  bf23
   7192  bf23
   7193  bf23				   FLASH_HEXOUT subroutine
   7194  bf23		       29 0f		      and	#15
   7195  bf25				   .1
   7196  bf25		       18		      clc
   7197  bf26		       69 f6		      adc	#246
   7198  bf28		       90 02		      bcc	.12
   7199  bf2a		       69 06		      adc	#6
   7200  bf2c				   .12
   7201  bf2c		       69 3a		      adc	#58
   7202  bf2e		       4c d2 ff 	      jmp	BSOUT
   7203  bf31
   7204  bf31
   7205  bf31
   7206  bf31					      REND
   7207  bf31				   FLASH_FW_END
   7208  bf31
   7209  bf31
   7210  bf31
   7211  bf31
   7212  bf31							; ==============================================================
   7213  bf31							; DISPLAY STRING    in AC/YR
   7214  bf31							; ==============================================================
   7215  bf31
   7216  bf31				   STROUT     subroutine
   7217  bf31		       85 22		      sta	PT1
   7218  bf33		       84 23		      sty	PT1 +1
   7219  bf35		       a0 00		      ldy	#0
   7220  bf37							;sty 658			       ;Scroll Flag
   7221  bf37							;dey
   7222  bf37				   .1
   7223  bf37		       b1 22		      lda	(PT1),y
   7224  bf39		       f0 06		      beq	.E
   7225  bf3b							;_relo0140 = . +1
   7226  bf3b		       20 d1 b6 	      jsr	CHROUT
   7227  bf3e		       c8		      iny
   7228  bf3f		       d0 f6		      bne	.1
   7229  bf41				   .E
   7230  bf41		       60		      rts
   7231  bf42
   7232  bf42
   7233  bf42
   7234  bf42							; ==============================================================
   7235  bf42							; DISPLAY STRING AT POS   in AC/YR
   7236  bf42							; ==============================================================
   7237  bf42
   7238  bf42				   STR_AT
   7239  bf42		       85 22		      sta	PT1
   7240  bf44		       84 23		      sty	PT1 +1
   7241  bf46		       a0 00		      ldy	#0
   7242  bf48		       b1 22		      lda	(PT1),y
   7243  bf4a		       aa		      tax
   7244  bf4b		       c8		      iny
   7245  bf4c		       b1 22		      lda	(PT1),y
   7246  bf4e		       a8		      tay
   7247  bf4f							;_relo0143 = . +1
   7248  bf4f		       20 65 bf 	      jsr	SET_CURSOR
   7249  bf52		       a0 02		      ldy	#2
   7250  bf54		       d0 e1		      bne	.1
   7251  bf56
   7252  bf56
   7253  bf56							; ==============================================================
   7254  bf56							; DELETE LINE	    XR=Row
   7255  bf56							; ==============================================================
   7256  bf56
   7257  bf56				   DEL_LINE
   7258  bf56		       a0 00		      ldy	#0
   7259  bf58							;_relo0144 = . +1
   7260  bf58		       20 65 bf 	      jsr	SET_CURSOR
   7261  bf5b		       a0 15		      ldy	#21
   7262  bf5d		       a9 20		      lda	#32
   7263  bf5f				   DELI_2
   7264  bf5f		       91 d1		      sta	(C_LINE),y
   7265  bf61		       88		      dey
   7266  bf62		       10 fb		      bpl	DELI_2
   7267  bf64		       60		      rts
   7268  bf65
   7269  bf65
   7270  bf65							; ==============================================================
   7271  bf65							; SET CURSO POS	  XR=Row, YR=Col
   7272  bf65							; ==============================================================
   7273  bf65
   7274  bf65				   SET_CURSOR
   7275  bf65		       18		      clc
   7276  bf66		       4c 0a e5 	      jmp	CURSOR_POS
   7277  bf69
   7278  bf69
   7279  bf69
   7280  bf69							; ==============================================================
   7281  bf69							; STACK PARAM PROCS
   7282  bf69							; ==============================================================
   7283  bf69
   7284  bf69							; PRINT STRING PARAMETER AT RETURN ADDRESS
   7285  bf69				   SPAR_PRINTSTRING
   7286  bf69		       20 9d bf 	      jsr	SPAR_GETPTR
   7287  bf6c				   SPAR_PRINTSTRING_2
   7288  bf6c		       20 b2 bf 	      jsr	STRGET_2
   7289  bf6f		       4c 31 bf 	      jmp	STROUT
   7290  bf72
   7291  bf72
   7292  bf72							; PRINT STRING PARAMETER AT RETURN ADDRESS
   7293  bf72				   SPAR_PRINTSTRING_AT
   7294  bf72		       20 9d bf 	      jsr	SPAR_GETPTR
   7295  bf75				   SPAR_PRAT
   7296  bf75		       a0 02		      ldy	#2
   7297  bf77		       20 b2 bf 	      jsr	STRGET_2
   7298  bf7a		       4c 42 bf 	      jmp	STR_AT
   7299  bf7d
   7300  bf7d
   7301  bf7d							; PRINT MESSAGE, WAIT KEY
   7302  bf7d				   SPAR_MSGBOX
   7303  bf7d		       20 9d bf 	      jsr	SPAR_GETPTR
   7304  bf80		       20 75 bf 	      jsr	SPAR_PRAT
   7305  bf83		       20 e0 a1 	      jsr	WAIT_KEY
   7306  bf86				   SPAR_MSGCLR
   7307  bf86		       a0 00		      ldy	#0
   7308  bf88		       b1 bb		      lda	(PTR_FNAM),y
   7309  bf8a		       aa		      tax
   7310  bf8b		       4c 56 bf 	      jmp	DEL_LINE
   7311  bf8e
   7312  bf8e
   7313  bf8e							; GET STRING
   7314  bf8e				   SPAR_GETSTRING subroutine
   7315  bf8e		       20 9d bf 	      jsr	SPAR_GETPTR
   7316  bf91		       4c b2 bf 	      jmp	STRGET_2
   7317  bf94
   7318  bf94
   7319  bf94							; SEND DISK COMMAND
   7320  bf94				   SPAR_DISKCMD subroutine
   7321  bf94		       20 9d bf 	      jsr	SPAR_GETPTR
   7322  bf97		       20 b2 bf 	      jsr	STRGET_2
   7323  bf9a		       4c 3a b5 	      jmp	DISK_CMD_2
   7324  bf9d
   7325  bf9d
   7326  bf9d							; GET POINTER TO PARAMETER AT RETURN ADDRESS
   7327  bf9d				   SPAR_GETPTR subroutine
   7328  bf9d		       ba		      tsx
   7329  bf9e		       bd 03 01 	      lda	STACK +3,x
   7330  bfa1		       18		      clc
   7331  bfa2		       69 01		      adc	#1
   7332  bfa4		       85 bb		      sta	PTR_FNAM
   7333  bfa6		       bd 04 01 	      lda	STACK +4,x
   7334  bfa9		       69 00		      adc	#0
   7335  bfab		       85 bc		      sta	PTR_FNAM+1
   7336  bfad		       a0 00		      ldy	#0
   7337  bfaf		       60		      rts
   7338  bfb0
   7339  bfb0
   7340  bfb0							; ADD OFFSET +1 TO RETURN ADDRESS
   7341  bfb0				   STRGET
   7342  bfb0		       a0 00		      ldy	#0
   7343  bfb2				   STRGET_2
   7344  bfb2		       20 ce bf 	      jsr	STRLEN_2
   7345  bfb5		       c8		      iny
   7346  bfb6				   MEMGET
   7347  bfb6		       98		      tya
   7348  bfb7				   MEMGET_2
   7349  bfb7							;dex
   7350  bfb7							;dex
   7351  bfb7		       20 bf bf 	      jsr	SPAR_ADD
   7352  bfba		       a5 bb		      lda	PTR_FNAM
   7353  bfbc		       a4 bc		      ldy	PTR_FNAM +1
   7354  bfbe		       60		      rts
   7355  bfbf
   7356  bfbf
   7357  bfbf							; ADD OFFSET +1 TO RETURN ADDRESS
   7358  bfbf				   SPAR_ADD
   7359  bfbf		       18		      clc
   7360  bfc0		       7d 03 01 	      adc	STACK +3,x
   7361  bfc3		       9d 03 01 	      sta	STACK +3,x
   7362  bfc6		       90 03		      bcc	SPAD_0
   7363  bfc8		       fe 04 01 	      inc	STACK +4,x
   7364  bfcb				   SPAD_0
   7365  bfcb		       60		      rts
   7366  bfcc
   7367  bfcc							; GET STRING LEN IN YR
   7368  bfcc				   STRLEN
   7369  bfcc		       a0 00		      ldy	#0
   7370  bfce				   STRLEN_2
   7371  bfce				   STLE_0
   7372  bfce		       b1 bb		      lda	(PTR_FNAM),y
   7373  bfd0		       f0 03		      beq	STLE_E
   7374  bfd2		       c8		      iny
   7375  bfd3		       d0 f9		      bne	STLE_0
   7376  bfd5				   STLE_E
   7377  bfd5		       84 b7		      sty	LEN_FNAM
   7378  bfd7		       60		      rts
   7379  bfd8
   7380  bfd8
   7381  bfd8							; PRINT STRING IN PTR_FNAM
   7382  bfd8				   STRNOUT
   7383  bfd8		       a0 00		      ldy	#0
   7384  bfda		       a6 b7		      ldx	LEN_FNAM
   7385  bfdc				   STNO_0
   7386  bfdc		       b1 bb		      lda	(PTR_FNAM),y
   7387  bfde		       f0 07		      beq	STNO_E
   7388  bfe0		       20 d1 b6 	      jsr	CHROUT
   7389  bfe3		       c8		      iny
   7390  bfe4		       ca		      dex
   7391  bfe5		       d0 f5		      bne	STNO_0
   7392  bfe7				   STNO_E
   7393  bfe7		       60		      rts
   7394  bfe8
   7395  bfe8
   7396  bfe8
   7397  bfe8
   7398  bfe8
   7399  bfe8
   7400  bfe8
   7401  bfe8
   7402  bfe8
   7403  bfe8
   7404  bfe8
   7405  bfff					      org	$bfff
   7406  bfff		       00		      dc.b	#$00
