8(@;TART.BATBAT38 START c}E q0 \C)CC8`DCeECiD` RP h1$E ȍ @y b Y)hܭ]L]` q  DMD   u j)`0  ,p0i2 &28jJ1f02 9 g iJf0i1)xԍӭ232002XԦ`  *'  } *(L `(  L l pL[,L] C i0 } p  gފދLh ( LD 0  C  C  \i +$+0'}; $(%)  b L[C `D P^߰")(݃   $DD}G@НL]S")M T H0 G$Ș݃ b 8$}$%8(() T `$E0(0)8`$GE` P} Li 8GD }L[ PH >iJ ;  yyB } ' |L[ "E( % H$ H#`L]B  0 G LO<  ( d lH۪!A3 A }jA !B EIC Y$E0 F  < 7 JN8Ndâ!,P h0ʠJd,6 } ' r/ $ ɛ ` '  L[  l }-     }    L[L  }  '  L[   p  ` g  l }) g ' }L[) ̠,L]T-0 |LM N݃:ː6UV LM N L(TU N,)M}LL[IL3GDIɛ ɜ DI  , JȊGм  G I) GȦ=}*GG ȄI1200820I H1E 1h0hIGI2ȢI`FE 0ɛ rɛ$ l '}蚦TTUVD`M L$:;Pyȱ$` r  iȱ$/:ȱ$VWyA**⩀ / }`$***? mL]-+ȱ$ɛ m* ? g. $0f.?'@ wAsTt/` }0: gL  `$0`j`& CpCi s L0JCܢj? I#}𴽎F ގМގ& & 0 C4 08L`0   | 레L] EGȽGȽ}G | E` 8,  }EG)݀G)ȱGȱG`"!L] l!i}栠$8  (IƭIp  h,g+j? 8 ii(Lq)! }S S0$} ) E9`H)N,L]8GH Lq`gNgfj****8jHi h` } 2J  &e2i`"%?&;^$IM ! ! <u hh`$}Ev옝^! 1EHFHjm GHm H`u$Ev`L=? +`!,pFE ȄD8 }q D&E`I0` i`+DOS SYSMOC.I   J ٍ = ) F)}8`Ll T!U<; Ln <JM -18     HH =}D 2 :  /1[F:M #.!  `>C #   #`>   e}L'>/b;\I\o@ @LK~ L  % /e  LL H}H0S0N:;=91D,1ɛK$ɛ`:;ʾ  ,ɛ}`XYȄ #`DTDRLUFFFCICLRSJ==CIYEEONSMDLNOOUAOOOARPLNCL#####PANVBNFR*),-PQOR}a/%<}) j ө  RES L%-, # 3 0 %   4(H 4(` }( 3  #  ZOiۨ L4RE 3 =F S Z +8!} 0+  FF % 4 4& 4(X)Y    # 4 ʤ Ȅ L"}F F LH hL4`*J 0 B B 0a   8#}    Lkl  );<  : ` 0 } T T 7̀΀$}LIl <;`<L 3   #/ ! R( 7 7   7 89i L7 ,(&  %} L480  ` Ln    `   HJJJJ h) ii0 ``0  ,BLV&}[J  B Vso Fhh` GH ,H hɐɀɡ)HDCȱCɛeCD먥D h'}N MSп` ED` OIH`hhXhh  nL Free Fil-SBreakI/O-Error 170Disk f(}ullWrite protectedFile MismatchBad FilenameDOS II+/D - Ver. 6.4plus RUN:Br`čLLockedDe)}vice doneDIR fullNot foundLoad?Bad DOSHex?AbortFromToHD) S)Eh` ɛLn ;LD2:+DOS SY} %s%RaLF%} Basic to Binary by: Matthew Arrington%` BHI V+}ȹ%`%'''''^- -)fRL]'}͠ӠîԠ3',}` BHI Vȹ3'L''W`L'SD'E JKB V TU'`` BHI V-}ȹ'`#'',)!'i˭"'i̭' +DL?(  ( L?( ( ( ( q˙ȭq˙饌.}ʢح"(#(L(@L ' {"(#E)˩̩)˙)˙)/}) ((L) *))`H)˝̝h`(NUR'pppB@BhBBBBB0BXBBB0}НBB BHBpBBBBB8B`BBB؟A7)}`````  ` | ` ` |1}|``| |`| 1: Display/Set Options |`| 2} |`| 2: Convert Basic file |`| |`| 3: File Directory |`| |`| 4: Exi3}t to DOS |`| |`` 6L4+_1+` B4}HI Vȹ1+L+о;Lt+_q+` BHI Vȹq+թL"+L+ +` BH5}I Vȹ+թL"+0BHI V~ L"+LV,ɜ L"+Ly,ɛL,tA )a8 L"+~ B6}HI VL"+ ,~ BHI VL"+ ,~ BHI VL"+ BHI V~`L,7}~,` BHI Vȹ,` BHI V`uAdA:L8-:eA~dA8}`8  `tAMD1:D0:*.*0LAK:DAEJKB V70)1@XYS/aR9})` BHI Vȹ)ՠt*` BHI Vȹt*թ!/EZ :} ˭ B B\L6BLBZLBELBCLBQLBRR``;}Z CQLBEZW`R0BHI V)a8 2 1CLA1 OELA3 vLL~A4LA'Sl } , TULTC<}INPUT FILE - FC` BHI VȹFC +` - B VdDAEJKB V0''=}BHI V '' B VdDAEJKB VLDOUTPUT FILE - D` BHI V>}ȹ D +` - B V dDAEJKB V0'6) G-!'i˭"'i̥ˍ3)m'5)̍4)m'6)5)85?})6)6) BD'EH I VB_D-EHI VHI   B_D-EH I V Ь@} B V B V`} ,RLzE Basic to Binary Control Pad`[E` BHI Vȹ[ELE A} `E` BHI VȹELF : Item to change`E` BHIB} VȹEL]F : Changes Item`DF` BHI VȹDFLF Ԡ : Exits````F`C} BHI VȹFLF -``BREAK -``TITLE -``MEMLO -F` BHI VȹFթD} GЭЍ ԩЭ L^L`X˥Y̭i(˥i)E}8˥̠LGPiL>G˅̽' iLG iLGe˪FLHGLHLTUL:HTrapF} & Re-Run Program$H` BHI Vȹ$H`TULHReset Normally sH` BHG}I VȹsH`TULHCold Start H` BHI VȹH` TULIDisabledIH}` BHI VȹI` TUL\IEnabled SI` BHI VȹSI` TULIOffI}I` BHI VȹI` TULIOn I` BHI VȹItATUL JENTER TITLEJ}:``J` BHI VȹJL|J[ ]PJ` BHK}I VȹPJթ +TULJJ` BHI VȹJխtAL;L ' 8 L}~'LKtA`TUL7K 1K` BHI Vȹ1KթTU!'ԭ"' ٩ԅ ؠȹ).M}` BHI Vȱ`TULKNEW MEMLO VALUE IS:K` BHI VȹKN}թ +~ ٥ԍ!'Ս"''LGHhHHIHI;LII;L&KK;L''' GL>G} ,yALL```Which dO}rive? -L` BHI VȹLբ0BHI VyA B VxDAEJKB V` BP} VLMEDME JKB VBHI V0 BHI VҢ B VLM``Type any key.`pQ}M` BHI VȹpMբ0BHI V`~A BHI VҢ B VLM``Type any key.`p@ %s%RaLF%} Basic to Binary by: Matthew Arrington%` BHI VS}ȹ%`%'''''( -)fRL]'}͠ӠîԠ3'T}` BHI Vȹ3'L''W`L'SD'E JKB V TU'`` BHI VU}ȹ'`#'',)!'i˭"'((i̭' +DL?(  ( L?( ( ( ( q˙ȭq˙饌V}ʢح"(#(L(@L ' {"(#E)˩̩)˙)˙)W}) ((L) *)))6)`H)˝̝h`(NUR'7)2*pppB@BhBBBBBX}0BXBBBНBB BHBpBBBBB8B`BBB؟A7)}`````  ` | ` Y}` ||``| |`| 1: Display/Set Opt3*+ions |`| Z} |`| 2: Convert Basic file |`| |`| 3: File Directory |`| [} |`| 4: Exit to DOS |`| |``+, 6L4+_\}1+` BHI Vȹ1+L+о;Lt+_q+` BHI Vȹq+թL"+L+ +]}` BHI Vȹ+թL"+0BHI V~ L"+LV,ɜ L"+Ly,ɛL,-,tA )a8 ^}L"+~ BHI VL"+ ,~ BHI VL"+ ,~ BHI VL"+ B_}HI V~`L,~,` BHI Vȹ,` BHI V`uAd-^-A:L`}8-:eA~dA`8  `tAoBD1:D0:*.*0LAK:DAEJKB V70)1@XYa}S/aR)` BHI Vȹ)ՠt*` BHI Vȹt*թ!/Eb}Z  ˭pBkC B B\L6BLBZLBEc}LBCLBQLBRR``Z CQLBEZW`R0BHI V)a8 2 1CLA1 OELA3 vLL~A4d}LA'Sl } , TULTCINPUT FILE - FC` BlCgDHI VȹFC +` - B VdDe}AEJKB V0''BHI V '' B VdDAEJKB VLDOUTPUT FILE - f} D` BHI Vȹ D +` - B V dDAEhDcEJKB V0'6) G-!'ig}˭"'i̥ˍ3)m'5)̍4)m'6)5)85)6)6) BD'EH I VB_D-EHI VHI  h} B_D-EH I V Ь B V B V`} ,RLzE Basic tdE_Fo Binary Control Pad`[E`i} BHI Vȹ[ELE `E` BHI VȹELF : Itemj} to change`E` BHI VȹEL]F : Changes Item``F[GDF` BHI Vk}ȹDFLF Ԡ : Exits````F` BHI VȹFLF -``BREAK -``TITLE -``MEMLO -F`l} BHI VȹFթ GЭЍ ԩЭ\GWH L^L`m}X˥Y̭i(˥i)8˥̠LGPiL>G˅̽' iLn}G iLGe˪FLHGLHLTUL:HTrap & Re-Run Program$H` BHIXHSI Vȹ$H`To}ULHReset Normally sH` BHI VȹsH`TULHCold Start H`p} BHI VȹH` TULIDisabledI` BHI VȹI` TUL\IETIOJnabled SIq}` BHI VȹSI` TULIOffI` BHI VȹI` TULIOn I`r} BHI VȹItATUL JENTER TITLE:``J` BHI VȹJL|JPJKK[ s} ]PJ` BHI VȹPJթ +TULJJ` Bt}HI VȹJխtAL;L ' 8 ~'LKtA`TUL7K 1K` LKGLBu}HI Vȹ1KթTU!'ԭ"' ٩ԅ ؠȹ).` BHI Vȱ`Tv}ULKNEW MEMLO VALUE IS:K` BHI VȹKթ +~ ٥ԍ!'Ս"''LGHHw}LCMhHHIHI;LII;L&KK;L''' GL>G} ,yALL```Which drive? -L` BHI VȹLx}բ0BHI VyA B VxDAEJKB V` B VLMEDME JKB VBy}HIDMM V0 BHI VҢ B VLM``Type any key.`pM` BHI VȹpMբ0Bz}HI V`~AHI VҢ B VLM``Type any key.`pM` BHI VȹpMբ0B10 ;BASIC TO BINARY -10/16 ;20 ;BY: MATTHEW ARRINGTON ;30 ; ;40 ; OSS. MAC-65 SOURCE ;50 ;60 |} .OPT NO LIST70 ;80 ;90 ; MACROS0100 ;0110 .MACRO @PT 0120 ;0130 ; PUT TO DEVICE0140 ; " PUT IOCB#,BYTE "015 }}0 ;0160 STY 00170 TAY 0180 .IF %0=10190 LDX #%1*160200 .ENDIF 0210 LDA #110220 STA 834 ~},X ; COMMAND PUT=110230 LDA #00240 STA 840,X0250 STA 841,X0260 TYA 0270 JSR 584540280 LDY 00 }290 .ENDM 0300 ;0310 ;0320 ;0330 .MACRO @GT 0340 ;0350 ; GET FROM DEVICE (INTERNAL)0360 ; " GET IOCB# "0370 ; }0380 .IF %0=10390 LDX #%1*160400 .ENDIF 0410 LDA #70420 STA 834,X ; COMMAND GET=70430 LDA } #00440 STA 840,X0450 STA 841,X0460 JSR 584540470 .ENDM 0480 ;0490 ; PUT BYTE0500 ;0510 ;0520 . }MACRO PUT 0530 .IF %0=00540 @PT 0550 .ELSE 0560 @PT %10570 .ENDIF 0580 .ENDM 0590 };0600 ; GET EX. "GET 0"0610 ;0620 .MACRO GET 0630 .IF %0=00640 @GT 0650 .ELSE 0660 @GT } %10670 .ENDIF 0680 .ENDM 0690 ;0700 ; PRINT 0710 ;0720 .MACRO PRINT 0730 ;0740 JMP @OVER0750 @T }EXT .BYTE %$2,00760 @OVER LDY #00770 @LOOP STY 00780 LDA @TEXT,Y0790 CMP #'.0800 BNE @CIO0810 LDA #155 }0820 @CIO @PT %10830 LDY 00840 INY 0850 LDA @TEXT,Y0860 BNE @LOOP0870 .ENDM 0880 ;0890 ; PRINT B }UFFER0900 .MACRO PRINTB 0910 LDY #00920 @LO STY 00930 ;0940 .IF %2<2560950 LDA (%2),Y0960 .ELS }E 0970 ;0980 LDA %2,Y0990 .ENDIF 1000 ;1010 CMP #'.1020 BNE @CO1030 LDA #1551040 @CO @PT %1 }1050 LDY 01060 INY 1070 .IF %2<2561080 LDA (%2),Y1090 .ELSE 1100 LDA %2,Y1110 .END }IF 1120 BNE @LO1130 .ENDM 1140 ;1150 ; INPUT RECORD/ SAVE EOL1160 ; EX. "INPUT IOCB#"1170 ;1180 .MACRO INP }UT 1190 ;1200 LDX #%1*161210 LDA #%2&255 ; INBUF LO1220 STA 836,X1230 LDA #%2/256 ; INBUF LO1240 ST }A 837,X1250 LDA #5 ; GET RECORD1260 STA 834,X1270 LDA #40 ; BUF LEN1280 STA 840,X1290 LDA # }01300 STA 841,X1310 JSR 584541320 LDY 840,X1330 LDA #01340 STA %2,Y1350 .ENDM 1360 ;1370 }.MACRO OPEN 1380 ;1390 LDX #%1*16 ; IOCB #1400 .IF %4<2561410 JMP @EXC1420 @OPEN .BYTE %$41430 @EXC LDA } #@OPEN&255 ;(S:,D:)1440 STA 836,X1450 LDA #@OPEN/2561460 STA 837,X1470 .ELSE 1480 LDA #%4 }&2551490 STA 836,X1500 LDA #%4/2561510 STA 837,X1520 .ENDIF 1530 LDA #%21540 STA 842,X } ; OPEN (8,12,4)1550 LDA #%31560 STA 843,X ; AUX11570 LDA #3 ; COMMAND OPEN1580 STA 834,X1590 } JSR 584541600 .ENDM 1610 ;1620 .MACRO RWSECT 1630 ;1640 ; DUNIT,DCOM,DBUFF,SIZE,SECT1650 ;1660 LDA #491 }670 STA 768 ; DDEVIC1680 .IF %1>41690 LDA %11700 .ELSE 1710 LDA #%11720 .ENDIF 1730 } STA 769 ; DUNIT1740 LDA #%21750 STA 7701760 LDA #%61770 STA 7711780 LDA #%3&2551790 ST }A 7721800 LDA #%3/2561810 STA 7731820 LDA #311830 STA 7741840 LDA #%4&2551850 STA 7761860 }LDA #%4/2561870 STA 7771880 LDA #%5&2551890 STA 7781900 LDA #%5/2561910 STA 7791920 JSR 584571 }930 .ENDM 1940 ;1950 ; MACRO CLOSE IOCB1960 ;1970 .MACRO CLOSE 1980 ;1990 LDX #%1*162000 LDA #12 ; } COMMAND CLOSE2010 STA 834,X2020 JSR 58454 ; CIO2030 .ENDM 2040 ;2050 .MACRO XIO 2060 ;2070 LDX }#%2*16 ; IOCB2080 LDA #%1 ; COMMAND2090 STA 834,X2100 LDA #%32110 STA 842,X ; AUX12120 LDA # }%42130 STA 843,X ; AUX22140 LDA #%5&2552150 STA 836,X2160 LDA #%5/2562170 STA 837,X2180 JSR 5 }8454 ; CIOV2190 ;2200 .ENDM 2210 ;2220 .MACRO POS 2230 ;.EX POS COL,ROW2240 ;2250 LDA #%12260 STA 8 }42270 LDA #%22280 STA 852290 ;2300 .ENDM 2310 ;2320 .MACRO BGET 2330 ;2340 ; EX. BGET 1,BUFFER,10000, }LEN2350 ;2360 LDX #%1*162370 LDA #72380 STA 834,X ; COMMAND2390 LDA #%2&2552400 STA 836,X2410 } LDA #%2/2562420 STA 837,X2430 LDA #%3&2552440 STA 840,X2450 LDA #%3/2562460 STA 841,X2470 JSR } $E456 ;CIO2480 ;2490 LDA 840,X2500 STA %42510 LDA 841,X2520 STA %4+12530 .ENDM 2540 ;2550 ; EX }. BPUT 1,BUFFER,LEN2560 ;2570 .MACRO BPUT 2580 LDX #%1*162590 LDA #112600 STA 834,X ; COMMAND2610 } LDA #%2&2552620 STA 836,X2630 LDA #%2/2562640 STA 837,X2650 LDA %32660 STA 840,X2670 LDA %3+1 }2680 STA 841,X2690 JSR $E456 ;CIO2700 ;2710 .ENDM 2720 ;2730 ;2740 ; WORK BYTES2750 ;2760 *= $0600 }2770 ;2780 MAXLINE .BYTE 02790 INLINE .BYTE 02800 FLASH .BYTE 02810 TEMP1 .BYTE 02820 CHR1 .BYTE 02830 CHR2 .BYTE 028 }40 OPTION .BYTE 02850 SCRN .BYTE 02860 LEN .BYTE 0,02870 TEMY .BYTE 02880 ;2890 LBUFF = $057E2900 HATABS = $031A2910 ; }2920 ; ZERO PAGE2930 ;2940 TEMP2 = 2032950 TEMP3 = 2042960 PSTART = 2242970 PEND = 2262980 MEMBOT = 2282990 AMOUNT = } 2303000 ;3010 *= $27003020 ;3030 ; LOAD SCREEN3040 ;3050 INIT LDA #0 ; BLACK3060 STA 710 ; SCREEN30 }70 STA 823080 LDA #97 ; RED3090 STA 712 ; BORDER3100 LDA #1 ; NO CURSOR3110 STA 7523120 } PRINT 0,"$).......... Basic to Binary by: Matthew Arrington"3130 RTS ; CONTINUE LOAD3140 ;3150 *= }7383160 .WORD INIT ; FOR BIN LOAD3170 ;3180 *= $27003190 ;3200 ;3210 ; EXECUTE & RUN BASIC PROGRAM3220 ;323 }0 ; THIS ROUTINE GETS SAVED ALONG3240 ; WITH BASIC PROGRAM.3250 ;3260 ;3270 BASRUN .BYTE "" ; BIN LOAD HEADER3280 }.WORD FILELEN ; LOAD START3290 .WORD RN3 ; LOAD END3300 ;3310 ;3320 FILELEN *= *+2 ; BASIC FILE LEN3330 ;3340 TL }INE .BYTE " ." ; TITLE STORED HERE3350 ;3360 RESET .BYTE 0 ; OPTION FLAGS3370 BREAK .BYTE 03380 TITL }E2 .BYTE 0,03390 MEMLO .WORD LA12+33400 ;3410 GO LDA 6 ; CART PRESENT?3420 BNE RN2 ; YES CONTINUE3430 ;3 }440 LDA #1 ; CURSOR OFF3450 STA 7523460 LDA #0 ; ZERO MARGIN3470 STA 823480 PRINT 0,"$) } PROGRAM REQUIRES BASIC. REBOOT "3490 X2 JMP X2 ; LOOP FOREVER3500 ;3510 RN2 LDA TITLE2 ; DISPLAY TITLE?3520 } BEQ RN3 ; NO3530 ;3540 OPEN 6,12,1,"S" ; GR. 13550 POS 10,03560 PRINTB 6,TLINE3570 RN3 RTS } ; COUNTINE LOAD3580 ;3590 ; MORE BIN POINTERS3600 ;3610 .WORD 738,739 ; INIT ADD.3620 .WORD GO3630 ;3640 } .WORD X1,LA12+23650 ;3660 ;3670 ; INIT MEMLO3680 ;3690 X1 LDY #03700 LDA MEMLO ; SET REAL MEMLO3710 ST }A 7433720 ;3730 CLC 3740 ADC #2423750 STA TEMP23760 ;3770 LDA MEMLO+13780 STA 7443790 ;3800 }ADC #03810 STA TEMP33820 ;3830 ; INIT RESET VECTORS3840 ;3850 LDA RESET ; TRAP RESET?3860 BEQ TRAP ; B }R. IF YES3870 ;3880 CMP #2 ; COLD START?3890 BNE MOVEPOINT ;NO, RESET NORMAL3900 LDA #1 ; DIE ON RE }SET3910 STA 580 ; COLST3920 JMP MOVEPOINT3930 ;3940 TRAP LDA 13 ; TRAP RESET3950 CMP #8 ; DOS P }RESENT?3960 BCS DODOS ;BR. IF SO3970 LDA #INITAL&255 ; SET RESET VECTOR3980 STA 123990 LDA #INITAL/256 }4000 STA 134010 JMP MOVEPOINT4020 ;4030 DODOS LDA 12 ; SAVE DOS INIT VEC4040 STA RESET1+14050 LDA 13 }4060 STA RESET1+24070 ;4080 LDA #RESET1&255 ; SET NEW RESET VEC4090 STA 124100 LDA #RESET1/2564110 S }TA 134120 ;4130 ; ADD VALUE OF MEMLO TO BASIC'S4140 ; PROGRAM POINTERS.4150 ;4160 MOVEPOINT LDA 7434170 CLC 4180 } ADC (TEMP2),Y4190 STA 128,Y4200 INY 4210 ;4220 LDA 7444230 ADC (TEMP2),Y4240 STA 128,Y4250 }INY 4260 CPY #144270 BNE MOVEPOINT4280 ;4290 LDA 140 ; COPY STARP TO:4300 STA 142 ; RUNSTAK4310 } STA 144 ; MEMTOP (LOW)4320 ;4330 LDA 141 ; (HIGH)4340 STA 1434350 STA 1454360 ;4370 ;4380 ; } SET UP TO RUN4390 ;4400 LDA #04410 STA $92 ; BASIC DOES THIS4420 STA $CA ; ON COLD START4430 L }DX #$FF4440 TXS 4450 CLD 4460 ;4470 LDA $0222 ; SAVE VBI VEC4480 STA VBIX+14490 LDA $02234500 } STA VBIX+24510 JMP INITAL4520 ;4530 ; IMMEDIATE VBI TO DISSABLE4540 ; BREAK.4550 ;4560 BRK LDA #644570 STA 1 }64580 STA 537744590 VBIX .BYTE $4C,0,04600 ;4610 ;4620 RESET1 .BYTE $20,0,0 ; JSR INIT DOS4630 INITAL LDX #04640 } LDA BREAK ; DISSABLE BREAK?4650 BNE LA2 ; BR. IF NOT4660 ;4670 LDA #BRK&255 ; SET IMM. VBI4680 STA $ }0222 ; VECTOR4690 LDA #BRK/2564700 STA $02234710 ;4720 ; PATCH THE "E:" INPUT COMMAND4730 ; WILL FORCE A "RUN" } WHEN BASIC4740 ; GOES TO THE "READY" PROMPT.4750 ;4760 LA2 LDA HATABS,X ; GET A BYTE4770 CMP #'E ; LOOK FOR E47 }80 BEQ LA1 ; FOUND YA4790 ;4800 INX ; NEXT HANDLER4810 INX ; ADDRESS4820 INX 4830 } BNE LA2 ; KNOW ITS THERE4840 ;4850 LA1 INX 4860 STX LA3 ; SAVE OFFSET4870 ;4880 LDA HATABS,X ; SAVE OL }D4890 STA TEMP24900 LDA #VTBLE&255 ; REPLACE WITH NEW4910 STA HATABS,X ;$031A4920 ;4930 INX ; NO }W HI BYTES4940 ;4950 LDA HATABS,X ; SAVE OLD4960 STA TEMP2+14970 LDA #VTBLE/256 ; REPLACE WITH NEW4980 S }TA HATABS,X4990 ;5000 LDY #0 ; COPY VTABLE5010 LDX #45020 LA7 LDA (TEMP2),Y5030 STA VTBLE,Y5040 IN }Y 5050 DEX 5060 BNE LA75070 LDY #85080 LDX #75090 LA8 LDA (TEMP2),Y5100 STA VTBLE,Y5110 INY 5 }120 DEX 5130 BNE LA85140 ;5150 LDA #2 ; COUNTER5160 STA LA105170 ;5180 LDA #1 ; BOOT SUCC }ESSFUL5190 STA 9 ; BOOT5200 STA 8 ; WARMST5210 ;5220 LDA 49146 ; CART RUN ADD.5230 STA CAR }T+15240 LDA 491475250 STA CART+25260 CART .BYTE $4C,0,0 ; JMP TO BASIC5270 ;5280 EINPUT LDY LA10 ; GET OFFSET52 }90 CPY #255 ; END?5300 BEQ LA11 ; YES5310 ;5320 LDA LA12,Y5330 DEC LA105340 LDY #15350 RT }S 5360 ;5370 LA11 TXA 5380 PHA 5390 LDX LA35400 LDA TEMP25410 STA HATABS,X ;$031A5420 INX 5430 } LDA TEMP2+15440 STA HATABS,X ;$031A5450 PLA 5460 TAX 5470 LDA #155 ; C/R5480 LDY #1 ; SUCC }ESS5490 RTS ; DONE5500 LA3 .BYTE 05510 LA10 .BYTE 05520 ;5530 VTBLE .BYTE 0,0 ; CLOSE5540 .BYTE 0,0 ; } OPEN5550 .WORD EINPUT-1 ; GET5560 .BYTE 0,0 ; PUT5570 .BYTE 0,0 ; STATUS5580 .BYTE 0,0 ; SPECIAL5 }590 .BYTE 0,0,0 ; JMP INIT5600 ;5610 LA12 .BYTE "NUR"5620 ;5630 .BYTE "..a." ;RUN POINTERS5640 .WORD X1 ; }FOR BAS RUN5650 ;5660 BASICSTART .BYTE 0,05670 .BYTE 05680 ENDRUN .BYTE 05690 ;5700 ; DISPLAY LIST5710 ;5720 DLIS }T .BYTE 112,112,112,66,64,1565730 .BYTE 66,104,156,66,144,156,66,184,1565740 .BYTE 66,224,156,66,8,157,66,48,15757 }50 .BYTE 66,88,157,66,128,157,66,168,1575760 .BYTE 66,208,157,66,248,157,66,32,1585770 .BYTE 66,72,158,66,112,1 }58,66,152,1585780 .BYTE 66,192,158,66,232,158,66,16,1595790 .BYTE 66,56,159,66,96,159,66,136,1595800 .BYTE 66, }176,159,66,216,159,655810 .WORD DLIST5820 MENU .BYTE "$)....."5830 .BYTE " ......... ."5840 .BYTE }" | ."5850 .BYTE " .................."5860 .BYTE " |Basic to Binary|."5870 .BYTE ". }..........................."5880 .BYTE "| |."5890 .BYTE "| 1: Display/Set Options |."5900 } .BYTE "| |."5910 .BYTE "| 2: Convert Basic file |.."5920 MENU2 .BYTE "| } |."5930 .BYTE "| 3: File Directory |."5940 .BYTE "| |."5950 .BYTE "| 4: }Exit to DOS |."5960 .BYTE "| |."5970 .BYTE "............................."5980 ; }5990 ;6000 ;6010 ; EVERYDAY TYPE SUBROUTINES6020 ;6030 ;6040 ; INPUT A LINE6050 ;6060 GETLINE LDA #0 ; LINE INDEX &6 }070 STA INLINE ; LINE LEN=06080 ;6090 GLOOP LDA #10 ; 1/6 SEC6100 STA 536 ; SYS TIMER6110 TIMLOOP LDA 764 }; STAT KEYBOARD6120 CMP #255 ; KEY IN?6130 BEQ CHECKTIME ; BR. IF NO6140 PRINT 0,"_." ; PRINT CURSOR6150 } JMP GCHR ; GET KEY6160 ;6170 CHECKTIME LDA 536 ; SYS TIMER=0?6180 BNE TIMLOOP ; NO, LOOP6190 LDA FLASH }; FLASH ON OR OFF?6200 BEQ OFF ; TURN IT OFF6210 PRINT 0,"_." ; CURSOR ON6220 LDA #0 ; FLASH OFF=0 }6230 STA FLASH ; FOR NEXT TIME6240 JMP GLOOP ; LOOP6250 ;6260 OFF PRINT 0," ." ; CUROSRO OFF6270 LDA #1 } ; FLASH ON=16280 STA FLASH ; FOR NEXT TIME6290 JMP GLOOP ; LOOP6300 ;6310 GCHR GET 3 ; GET A CHAR }6320 ;6330 CMP #'$- ; BACKSPACE?6340 BNE DL ; BR. IF NOT6350 ;6360 LDX INLINE ; SOMTHING TO BS?637 }0 BNE OK1 ; BR. IF YES6380 JMP GLOOP ; NOTHING THERE6390 OK1 JMP BACKSPACE ; DO BACKSPACE6400 ;6410 DL CMP } #'. ; DELETE LINE?6420 BNE ENDL ; BR. IF NOT6430 LDX INLINE ; SOMTHING TO DEL?6440 BNE OK2 ; BR. }IF YES6450 JMP GLOOP ; ELSE IGNORE & LOOP6460 OK2 JMP DLINE ; DO DELETE LINE6470 ;6480 ENDL CMP #155 ; END OF L }INE?6490 BNE NOCTRL ; NO6500 JMP EOL ; DO ENDLINE6510 NOCTRL LDX STRIP ; FILTER CHARS?6520 BNE OK3 ; } BR. IF NO6530 ;6540 ;6550 AND #127 ; STRIP INVERSE6560 CMP #97 ; LOWWER CASE??6570 BCC OK3 ; BRA }NCH IF NOT6580 SEC 6590 SBC #32 ; MAKE IT UPPER6600 OK3 LDX INLINE ; RESTORE X6610 CPX MAXLINE ; LINE TO }O LONG?6620 BNE OK5 ; BR. AND SAVE6630 JMP GLOOP ; IGNORE KEY & LOOP6640 ;6650 OK5 STA 1406,X ; SAVE BYTE }6660 INX ; FOR NEXT SAVE6670 STX INLINE ; SAVE X6680 PUT 0 ; PRINT CHAR6690 JMP GLOOP ; G }ET NEXT BYTE6700 ;6710 ;6720 BACKSPACE JSR ST6730 ;6740 DOBS LDA #'$- ; BS CHAR6750 PUT 0 ; PRINT IT6760 } DEC INLINE ; DEC LINE LEN6770 JMP GLOOP ; NEXT KEY6780 ;6790 ;6800 DLINE JSR ST6810 ;6820 DODL LDA #'$- ; } BS CHAR6830 PUT 0 ; PRINT IT6840 DEC INLINE ; DEC LINE LEN6850 BNE DODL ; LOOP TILL GONE6860 J }MP GLOOP ; START AGAIN6870 ;6880 ;6890 EOL LDA #'. ; DELETE PROMPT6900 PUT 06910 LDX INLINE ; GET LINE }LEN6920 LDA #06930 STA 1406,X ; MARK EOL6940 RTS ; RETURN6950 ;6960 ;6970 ST PRINT 0,".$-" ; ER }ASE CURSOR6980 RTS 6990 ;7000 ;7010 PUTBYTE LDX #0 ; IOCB #07020 PUTD PUT ; PUT A7030 RTS ; RET }URN7040 ;7050 ; ;7060 ; VALIDATE A FILENAME ;7070 ; ;7080 SETNAME LDY #0 ; S }ET DEFUALT7090 L8 LDA DEF,Y ; TO DRIVE ONE7100 STA FNAME,Y7110 INY 7120 CPY #37130 BNE L87140 ;7150 } LDA LBUFF+1 ; "D:FNAME"?7160 CMP #':7170 BNE L5 ; BR. IF NOT7180 LDY #2 ; SET OFFSET7190 J }MP MOVENAME ; COPY NAME OVER7200 ;7210 L5 LDY #0 ; "DX:FNAME"??7220 LDA LBUFF+27230 CMP #':7240 BNE MO }VENAME ;NO, ASSUME "D1:"7250 LDA LBUFF+1 ; GET D# BYTE7260 STA FNAME+1 ; SAVE IT7270 LDY #3 ; OFFSET7280 } ;7290 MOVENAME LDX #3 ; COPY FILE NAME7300 L6 LDA LBUFF,Y ; FROM LBUFF.7310 STA FNAME,X7320 BEQ L77330 INY } 7340 INX 7350 BNE L67360 ;7370 L7 RTS 7380 ;7390 ; CALCULATE THE DISTANCE BETWEEN7400 ; TO ADRESS'S...7410 };7420 SUBTRACT LDA PEND7430 SEC 7440 SBC PSTART7450 STA LEN7460 ;7470 LDA PEND+17480 SBC PSTART+1 }7490 STA LEN+17500 ;7510 INC LEN7520 BNE L157530 INC LEN+17540 L15 RTS 7550 ;7560 BUF *= *+5125 ; 5K } BUFFER7570 ;7580 FNAME *= *+167590 STRIP .BYTE 07600 DEF .BYTE "D1:" ; DEFUALT DRIVE7610 DIR .BYTE "D0:*.*" ; DIRECTORY }7620 ;7630 RUN OPEN 3,4,0,"K:"7640 LDA #DLIST&255 ; POINT TO7650 STA 560 ; MY DIS. LIST7660 LDA #DLIST }/2567670 STA 5617680 ;7690 LDA #64 ; LET THE "E:"7700 STA 88 ; IN ON THE CHANGE.7710 LDA #156 }7720 STA 897730 LDA #1 ; CURSOR OFF7740 STA 7527750 LDA #31 ; RIGHT MARGIN7760 STA 837770 ; }7780 ;7790 MAINMENU LDA #0 ; SCREEN OFF7800 STA 5597810 STA 710 ; CHANGE COLOR7820 LDA #977830 STA }7127840 LDA #2 ; LEFT MARGIN7850 STA 827860 PRINTB 0,MENU ; PRINT MENU7870 PRINTB 0,MENU27880 } LDA #33 ; SCREEN ON7890 STA 5597900 ;7910 ; TWIRLING THING7920 ;7930 LDA #697940 STA CHR17950 L }DA #907960 STA CHR27970 TITLE LDY #117980 LDA #07990 LDX #38000 STA 40208,X8010 STA 40208,Y8020 } LDY CHR18030 LDA CHR28040 STY CHR28050 STA CHR18060 LDX #48070 LDY #108080 TLOOP LDA 40208,X8090 } STA TEMP18100 LDA CHR18110 STA 40208,X8120 LDA 40208,Y8130 STA TEMP28140 LDA CHR28150 STA }40208,Y8160 LDA #08170 STA 208180 TTIME LDA 208190 CMP #38200 BNE TTIME8210 LDA #08220 JSR TWI }ST8230 STA 40208,X8240 LDA #18250 JSR TWIST8260 STA 40208,Y8270 ;8280 LDA 7648290 CMP #255830 }0 BNE GOPT8310 ;8320 INX 8330 DEY 8340 CPY #28350 BNE TLOOP8360 JMP TITLE8370 TWIST CMP #1838 }0 BEQ OVER8390 LDA TEMP18400 JMP SWAP8410 OVER LDA TEMP28420 ;8430 SWAP CMP #908440 BNE F18450 JMP } SWITCH8460 F1 CMP #698470 BNE F28480 JMP SWITCH8490 F2 CMP #678500 BNE F38510 JMP SWITCH8520 F3 CM }P #818530 BNE F48540 JMP SWITCH8550 F4 CMP #828560 BEQ ZERO8570 LDA #828580 RTS 8590 ZERO LDA #0 }8600 RTS 8610 SWITCH LDA CHR18620 CMP #908630 BNE OTHER8640 LDA #678650 STA CHR18660 LDA #8186 }70 STA CHR28680 JMP EXIT8690 ;8700 OTHER LDA #698710 STA CHR18720 LDA #908730 STA CHR28740 EXIT LD }A #878750 RTS 8760 ;8770 ; GET OPTION FROM KEYBOARD8780 ;8790 GOPT LDA #0 ; ZERO MARGIN8800 STA 828810 } GET 3 ; GET KEY8820 AND #127 ; STRIP INVERSE8830 CMP #97 ; LOWWER CASE?8840 BCC A6 ; BR. IF } NOT8850 SEC ; ELSE....8860 SBC #32 ; MAKE IT UPPER8870 ;8880 A6 CMP #'2 ; OPTION 2?8890 BN }E A1 ; NO8900 JSR CONVERT ; GO CONVERT8910 JMP MAINMENU ;8920 ;8930 A1 CMP #'1 ; OPTION 1?8940 BNE } A2 ; NO8950 JSR PAD ; CONTROL PAD8960 JMP MAINMENU8970 ;8980 A2 CMP #'3 ; HOW ABOUT 3?8990 BN }E A4 ; NO9000 JSR FILES ; DIRECTORY9010 JMP RUN ; REINIT SCREEN9020 ;9030 A4 CMP #'4 ; OPTION 4? }9040 BEQ A5 ; YES...9050 JMP MAINMENU ; BAD INPUT9060 ;9070 A5 LDA #39 ; RESET RIGHT9080 STA 83 } ; MARGIN9090 JMP (10) ; GO TO DOS9100 ;9110 ; CONVERT A FILE TO BINARY9120 ;9130 CONVERT LDA #1259140 JSR }PUTBYTE ; CLEAR SCREEN9150 LDA #169160 STA MAXLINE ; INPUT LINE LEN.9170 ;9180 POS 10,09190 L11 PRINT 0, }"INPUT FILE - "9200 JSR GETLINE ; GET INPUT NAME9210 LDA INLINE ; NAME ENTERED?9220 BNE L10 ; BR. IF YES }9230 RTS ; NO, RETURN9240 ;9250 L10 JSR SETNAME ; VALIDATE NAME9260 CLOSE 19270 OPEN 1,4,0,FNAME }9280 BMI L11 ; ERROR TRY AGAIN9290 ;9300 ; PASS 1, COUNT BYTES9310 ;9320 ; MUST KNOW EXACT LEN OF BASIC9330 ; FI }LE.9340 ;9350 LDA #0 ; ZERO BASIC9360 STA FILELEN ; FILE LENGTH9370 STA FILELEN+19380 ;9390 L13 GET }1 ; GET A BYTE9400 CPY #136 ; CHECK FOR EOF9410 BEQ PASS2 ; BR. EOF REACHED9420 ;9430 INC FILELEN ; }COUNT BYTES.9440 BNE L139450 INC FILELEN+19460 BNE L139470 ;9480 ; PASS2 SAVE ROUTINE THAT RUNS9490 ; THE B }ASIC. THEN COPY BASIC9500 ; PROGRAM OVER TO THE NEW FILE.9510 ;9520 PASS2 CLOSE 1 ; REOPEN INPUT FILE9530 OPEN 1, }4,0,FNAME9540 ;9550 L3 PRINT 0,"OUTPUT FILE - "9560 JSR GETLINE ; GET FILENAME9570 LDA INLINE ; NAME ENTERED? }9580 BNE L12 ; BR. IF SO9590 RTS ; RETURN - ABORT9600 ;9610 L12 JSR SETNAME ; VALIDATE NAME9620 !} CLOSE 29630 OPEN 2,8,0,FNAME9640 BMI L39650 ;9660 ; CALCULATE LENGTH OF THE ROUTINE9670 ; THAT'LL EXECUTE TH "}E BASIC9680 ; PROGRAM. SAVE RESULT IN "LEN"9690 ;9700 LDA #BASRUN&2559710 STA PSTART9720 LDA #BASRUN/256973 #}0 STA PSTART+19740 ;9750 LDA #ENDRUN&2559760 STA PEND9770 LDA #ENDRUN/2569780 STA PEND+19790 JS $}R SUBTRACT ; GET LENGTH9800 ;9810 ; MAKE BIN LOAD POINTERS9820 ;9830 ; ADD THE LEN. OF THE BAS PROGRAM9840 ; TO THE ADDR %}ESS WHERE IT FIRST9850 ; LOADS IN MEMORY.9860 ;9870 LDA MEMLO ; START ADDRESS9880 CLC 9890 ADC #242 ; B &}AS. BUFFER OFFSET9900 STA TEMP29910 LDA MEMLO+19920 ADC #09930 STA TEMP39940 ;9950 ; LOW BYTES9960 ;9 '}970 LDA TEMP2 ; SAVE START POINT9980 STA BASICSTART9990 CLC ; ADD IN FILE LENGTH010000 ADC FILELEN (}010010 STA ENDRUN-1 ;SAVE END POINT010020 ;010030 ; HIGH BYTES010040 ;010050 LDA TEMP3 ; SAVE START010060 STA B )}ASICSTART+1010070 ADC FILELEN+1 ; ADD IN LEN010080 STA ENDRUN ; SAVE END010090 ;010100 LDA ENDRUN-1 ; SUBTRACT 10 *}10110 SEC ; FROM END POINT010120 SBC #1 ; (FUDGE)010130 STA ENDRUN-1010140 LDA ENDRUN010150 SBC #0 +}010160 STA ENDRUN010170 ;010180 ; SAVE THE EXECUTE ROUTINE010190 ; ALONG WITH ALL BIN POINTERS010200 ;010210 BPUT ,} 2,BASRUN,LEN010220 ;010230 ; COPY BASIC FILE OVER010240 ;010250 L4 BGET 1,BUF,5125,LEN010260 STY TEMY ; SAVE ERR -}OR FLAG010270 BPUT 2,BUF,LEN010280 ;010290 LDY TEMY ; GET ERROR FLAG010300 CPY #136 ; EOF REACHED?010310 .} BNE L4 ; BR. IF NOT010320 ;010330 CLOSE 1 ; CLEAN UP010340 CLOSE 2010350 RTS ; ALL DONE010360 /};010370 ; CONTROL PAD?!010380 ;010390 PAD LDA #125 ; CLEAR SCREEN010400 JSR PUTBYTE010410 LDA #0 ; ZERO MARGIN 0}010420 STA 82010430 ;010440 PRINT 0," Basic to Binary Control Pad."010450 PRINT 0," ......................... 1}..."010460 PRINT 0," SELECT : Item to change."010470 PRINT 0," OPTION : Changes Item."010480 PRINT 0," STAR 2}T : Exits...."010490 PRINT 0,"RESET -..BREAK -..TITLE -..MEMLO -"010500 ;010510 ;010520 LDA #0 ; ZERO VARIABL 3}ES010530 STA TEMP1010540 STA OPTION010550 TAX 010560 ;010570 LDA #8010580 STA SCRN010590 PRINTITEM JSR PITEM 4} ; PRINT OPTION010600 LDX TEMP1 ; GET X010610 INX ; ADD 1010620 STX TEMP1 ; SAVE IT010630 CPX #4 5} ; ALL DONE?010640 BNE PRINTITEM ; NO.010650 ;010660 STATCON LDA #8 ; CLEAR CONSOL010670 STA 53279010680 LDA 53279 6} ; STATUS CONSOL010690 CMP #7 ; PRESSED?010700 BCS STATCON ; BR. IF NOT010710 TAY ; SAVE A010720 L 7}DA #0 ;010730 STA 53279 ; CLICK010740 STA 54282 ; WAIT010750 ;010760 CN1 LDA #8 ; CLEAR CON010770 STA 8}53279010780 LDA 53279 ; STATUS CON010790 CMP #7 ; HANDS OFF?010800 BNE CN1 ; NO, PEOPLE ARE SLOW010810 ; 9}010820 LDA #10 ; 1/6 SEC DELAY010830 STA 542010840 CN2 LDA 542010850 BNE CN2 ; LOOP TIL ZERO010860 ;01087 :}0 TYA ; RESTORE A010880 ;010890 CMP #5 ; SELECT PRESSED?010900 BEQ CON1 ; YES010910 ;010920 CMP ;}#3 ; OPTION PRESSED?010930 BNE EXITPAD ; NO, EXIT010940 ;010950 JMP OPT010960 EXITPAD RTS 010970 ;010980 CON1 <}LDA 88 ; GET SCREEN ADDR010990 STA TEMP2011000 LDA 89011010 STA TEMP3011020 ;011030 LDA SCRN ; CALC. SCREEN =}011040 TAX ; POSITON011050 Z1 LDA TEMP2011060 CLC 011070 ADC #40011080 STA TEMP2011090 LDA TEMP30111 >}00 ADC #0011110 STA TEMP3011120 DEX 011130 BNE Z1011140 ;011150 LDY #0011160 Z2 LDA (TEMP2),Y ; GET BYTE0111 ?}70 BEQ Z7 ; END OF BLOCK011180 AND #127 ; INVERSE OFF011190 STA (TEMP2),Y ; PUT IT BACK011200 INY @} ; NEXT BYTE011210 BNE Z2 ; NO011220 ;011230 Z7 LDA OPTION ; LAST OPTION?011240 CMP #3011250 BNE Z3 ; NO A}011260 ;011270 LDA #0 ; YES LOOP TO FIRST011280 STA OPTION011290 LDA #8 ; RESET POSITION011300 STA SCR B}N011310 LDA TEMP2011320 SEC 011330 SBC #240011340 STA TEMP2011350 LDA TEMP3011360 SBC #0011370 STA TEMP3 C}011380 LDY #0011390 JMP Z4011400 ;011410 Z3 INC OPTION ; NEXT OPTION011420 INC SCRN011430 INC SCRN011440 LDY D} #80011450 ;011460 Z4 LDA (TEMP2),Y ; GET BYTE011470 BEQ Z6 ; END OF BLOCK011480 CLC 011490 ADC #128 ; INV E}ERSE ON011500 STA (TEMP2),Y ; PUT IT BACK011510 INY ; NEXT BYTE011520 BNE Z4 ; LOOP011530 Z6 JMP STATC F}ON ; DONE011540 ;011550 ; PRINT SELECTED ITEM.011560 ;011570 PITEM LDA #0 ; ZERO VARIABLES011580 STA TEMP2011590 S G}TA TEMP3011600 ;011610 LDA RESET,X ; GET Y VALUE011620 TAY 011630 ;011640 ; (X*6)+(Y*2)=JMP ADDR011650 ; X=OPTION Y H}=ITEM011660 ;011670 ; MULTIPLY X*6011680 ;011690 DOX DEX 011700 CPX #255011710 BEQ DOY011720 LDA TEMP2011730 I}CLC 011740 ADC #6011750 STA TEMP2011760 JMP DOX011770 ;011780 ; MULTIPLY Y*2011790 ;011800 DOY DEY 011810 CPY J} #255011820 BEQ ADDEM011830 LDA TEMP3011840 CLC 011850 ADC #2011860 STA TEMP3011870 JMP DOY011880 ;011890 K} ADDEM LDA TEMP3011900 CLC 011910 ADC TEMP2011920 TAX 011930 ;011940 LDA TABLE1,X011950 STA GOPRNT+1011960 L} LDA TABLE1+1,X011970 STA GOPRNT+2011980 ;011990 GOPRNT .BYTE $4C,0,0 ; JMP XX012000 ;012010 ; PRINT'S TO MAKE TABLE1 M}012020 ;012030 O0I0 POS 8,8012040 PRINT 0,"Trap & Re-Run Program"012050 RTS 012060 O0I1 POS 8,8012070 PRINT N} 0,"Reset Normally "012080 RTS 012090 O0I2 POS 8,8012100 PRINT 0,"Cold Start "012110 RTS 0121 O}20 ;012130 ;012140 O1I0 POS 10,8012150 PRINT 0,"Disabled"012160 RTS 012170 O1I1 POS 10,8012180 PRINT 0,"E P}nabled "012190 RTS 012200 ;012210 O2I0 POS 12,8012220 PRINT 0,"Off"012230 RTS 012240 O2I1 POS 12,8012250 Q} PRINT 0,"On "012260 INC STRIP ; STRIP CHR OFF012270 POS 16,0012280 PRINT 0,"ENTER TITLE:.."012290 PRINT R} 0,"[ ]....................."012300 LDA #19012310 STA MAXLINE ; 19 CHR LIMIT012320 JSR GETLINE ; S} GET TITLE012330 POS 16,0012340 PRINT 0,"." ; ERASE PROMPT012350 LDA INLINE ; TITLE ENTERED?012360 BNE TI5 T} ; BR IF SO012370 DEC STRIP ; NO TITLE012380 JMP NULL012390 ;012400 TI5 LDY #19 ; TITLE LEN-1012410 LDA #32 U} ; SPACE CHR012420 ;012430 TI4 STA TLINE,Y ; ERASE OLD TITLE012440 DEY 012450 CPY #255012460 BNE TI4012470 ;0 V}12480 ; CENTER TITLE012490 ;012500 LDX #10 ; MAX TITLE LEN/2012510 LDA INLINE ; TITLE LEN012520 ;012530 TI1 DEX W} ; DIVIDE TITLE012540 SEC ; LEN BY 2012550 SBC #2012560 BCS TI1012570 ;012580 CPX #11 ; X>10 ? X}012590 BCC TI9 ; NO012600 ;012610 LDX #0 ; YES012620 ;012630 TI9 LDY #0 ; MOVE TITLE012640 TI3 LDA LBUF Y}F,Y ; GET BYTE012650 BEQ TI2 ; BR IF END012660 STA TLINE,X ; SAVE BYTE012670 INY ; NEXT BYTE012680 IN Z}X 012690 JMP TI3 ; LOOP012700 TI2 DEC STRIP ; STRIP CHR ON012710 RTS ; DONE012720 ;012730 O3I0 POS 14, [}8012740 PRINT 0," "012750 POS 14,8012760 PNUM 0,MEMLO012770 RTS 012780 ;012790 O3I1 POS 16,0012800 \} PRINT 0,"NEW MEMLO VALUE IS:"012810 LDA #5 ; 5 CHRS MAX012820 STA MAXLINE012830 ;012840 JSR GETLINE ; GET ]} NUMBER012850 LDA INLINE ; CHECK LEN012860 BEQ NULL ; NOTHING THERE012870 ASCIINUM LBUFF,MEMLO ; ASCII->FP012 ^}880 ;012890 NULL LDX OPTION ; NULL ITEM012900 LDA #0 ; LOOP TO VALID012910 STA RESET,X ; ITEM012920 JMP PITEM _}012930 ;012940 TABLE1 .WORD O0I0,O0I1,O0I2012950 .WORD O1I0,O1I1,NULL012960 .WORD O2I0,O2I1,NULL012970 .WORD O3I0,O `}3I1,NULL012980 ;012990 ;013000 ;013010 OPT LDX OPTION ; GET OFFSET013020 INC RESET,X ; NEXT ITEM013030 LDA RESET,X a}013040 CMP #3 ; INC TO FAR?013050 BNE Z5 ; BR. IF NOT013060 LDA #0 ; LOOP TO FIRST013070 STA RESET, b}X ; ITEM.013080 Z5 JSR PITEM ; PRINT NEW ITEM013090 JMP STATCON ; CHECK CONSOL013100 ;013110 ; FILES013120 ;013130 F c}ILES LDA #125013140 JSR PUTBYTE013150 ;013160 LDA #0 ; ZERO DRIVE BYTE013170 STA DIR+1013180 ;013190 PRIN d}T 0,"...Which drive? 1-8"013200 GET 3 ; GET A KEY013210 STA DIR+1 ; STORE AT D#013220 CLOSE 1013230 e}OPEN 1,6,0,DIR013240 BPL DD1 ; BR. IF SUCCESSFUL013250 RTS ; ERROR, RETURN013260 ;013270 DD1 CLOSE 0 ; f} CLOSE EDITOR013280 OPEN 0,12,0,"E" ; GR. 0013290 LDA #0 ; CHANGE COLOR013300 STA 710013310 DD3 GET 1 ; g}GET A BYTE013320 BMI DD2 ; BR. ON ERROR013330 PUT 0 ; PRINT BYTE013340 BPL DD3 ; LOOP013350 ;013360 q}6?b&DOS SYSB(*BAS2BINACOMB)RBAS2BINBCOMB{BAS2BIN M65B'sBAS2BIN TXTDD2 CLOSE 1013370 PRINT 0,"..Type any key.."013380 GET 3 ; GET KEY013390 RTS 013400 ;013410 *= 736 r} ; BIN LOAD RUN013420 .WORD RUNType any key.."013380 GET 3 ; GET KEY013390 RTS 013400 ;013410 *= 736 $> BASIC TO BINARY> by> Matthew Arrington>>This is a utility program that will>convet}rt a file written and saved under>ATARI BASIC or BXL into a binary load>file. Binary load files are usually>machine-language u}programs that are>loaded from DOS or a quick menu, or>they are sometimes named AUTORUN.SYS>and then automatically loaded whenv} the>computer is turned on.>>This program also lets you determine>what action to take if the RESET key>should be pressed whilw}e your program is>running. You can RESET do one of three>things: reset and re-run the program,>coldstart or simply reset thex} computer>and return to BASIC's READY prompt.>The break key can be similary enabled>or disabled. Disabling Break along with>ty}rapping RESET, of course, makes the>program unlistable.>>Another feature of this program is the>ability to have a load title.z} If you>choose to have one, a program title>will be displayed while the program is>loading in. Last, and certainly not>least,{} is the ability to 'relocate'>your BASIC program to run anywhere>(almost) in memory. This is>accomplished by giving this prog|}ram an>address which will be stored at MEMLO>during program initialization. This is>an ideal way to reserve memory for ML>sub}}routines, character sets, etc.>>One thing this program won't do,>unfortunately, is to make your BASIC>program run faster>>> ~} WHY BINARY?>>ATARU's binary load process is great>for getting things off the disk and>into memory with minimum h}assle. For>example, let's say you're writing a>BASIC program and you have a custom>character set or some other large>amount o}f data you need to get into>memory. Normally your options would be>to manually type the data into DATA>statements or bring it} in from a disk>file. Using a disk file is fine while>developing a program, but it's a lot>nicer having everything in one fil}e>for the finished product. Once you>have your BASIC program made into a>binary load file, you can start>appending data and M}L routines to your>main program freely, as long as the>data you append has binary load>pointers.>>Another plus to these hybri}d files is>that they can be loaded from one of the>many quick load menus.>>> PROGRAM OPERATION:>>This program is w}ritten in ML, so it>will need to be loaded from the DOS>menu. A quick menu won't work, since>this program requires DOS for di}sk>access.>>After loading you should see the main>menu. Pressing 1 will take you to the>Control Pad. In the Control Pad, the>}SELECT key is used to select a setting>to change. An inverse block will>highlight the setting that will be>affected when you }press OPTION. Each>time OPTION is pressed, you'll change>the hightlighted setting's function.>>For example, press SELECT to c}hoose>the title setting, then press OPTION.>You will be prompted for a load title.>Enter the title, and hit RETURN. You>will }then see "ON" in front of the>title setting. Note that when entering>a title you don't have to worry about>centering the titl}e between the>prompts. The program will automatically>center the title on the screen for>you. Once everything is set to your>}liking, press START, and you'll be>returned to the main menu. You're now>ready to turn your BASIC code into>binary.>>From the} main menu press 2 convert your>BASIC program. You'll see the "INPUT>FILE-" prompt. Enter the filename of>the program you wis}h to convert. If>the program is on a drive other than>D1, you'll need to enter the device>number too.>>After you have entered} the filename and>pressed RETURN, the specified file will>be opened and read in. This is the>first pass, which consists of re}ading>and counting bytes to find the exact>size of your program. When completed,>you will be asked for an output file.>Use th}e same procedure to enter the>output file as you did for the input>file. The output file will be opened,>the ML code required} to run your BASIC>program will be written (2 or 3>sectors) and finally your BASIC program>will be copied over. When the copy} has>completed, you'll be returned to the>main menu. From here you can return to>DOS and, if BASIC is in the machine,>you can} try out your newly-converted>program.>>> THINGS TO WATCH OUT FOR:>>Disk swapping isn't supported. If you>have only 1 }drive, be sure you have>enough free sectors on the disk for the>conversion.>>If you need to change the MEMLO address>be sure }not to enter an address lower>than the address originally shown.>Let's say you need to reserve 1K, and>from the Control Pad y}ou see "MEMLO->10000". Use the SELECT key to select>MEMLO, and press OPTION to get the>"NEW ADDRESS" prompt. Then add 1024>(1}K) to 10000 and enter "11024".>Locations 10000 to 11023 will then be>reserved for your use, and your program>will run startin}g in location 11024.> "11024".>Locations 10000 to 11023 will then be>reserved for your use, and your program>will run startin