›;ACTION! BINARY LOADER, APRIL 1984›;WARREN K. SMALL 71076,407››;NOTE!!! REQUIRES ATARI DOS 2.0S››SET $E=$5000 ›SET $491=$5000›DEFINE DISPLAY_OFF="0",› DISPLAY_ON="34",› BOOT="1" ›BYTE KEY=764,› COLDST=580,› FILE_COUNT=[0],› CHOICE,ROW,COL›CHAR ARRAY FILE_NAME(25),› LOAD_NAME(15)›BYTE ARRAY FILES(120),› LOGO=[›$00$00$00$00$00$00$00$00$00$00$00$00$00$03$F0$00$00$00$00$00$00$00$00$00$00$00›$00$00$00$00$00$00$00$00$00$00$00$00$00$0F$F0$00$00$00$00$00$00$00$00$00$00$00›$00$00$00$00$00$00$00$00$00$07$FF$FF$FF$FF$FF$C0$00$00$00$00$00$00$00$00$00$00›$00$00$00$00$00$00$00$00$00$0F$FF$FF$FF$FF$FF$FF$F0$00$00$00$00$00$00$07$D9$80›$00$00$00$00$00$00$00$00$F8$0F$FF$FF$FF$FF$FF$FF$FF$FE$00$00$00$00$00$03$1F$80›$00$00$00$00$00$00$00$0F$F8$00$00$00$0F$F8$01$FF$FF$FF$FC$00$00$00$00$03$19$80›$00$00$00$00$00$00$00$7F$F0$00$00$00$3F$C0$00$01$FF$FF$FF$F0$00$00$00$03$19$80›$00$00$00$00$00$00$07$FF$F0$00$00$00$FF$00$7E$00$00$FF$FF$F8$00$00$00$00$00$00›$00$00$00$00$00$00$7F$FF$E0$00$00$03$FC$01$FF$80$00$00$3F$F0$00$00$00$00$07$E0›$00$00$00$00$00$03$FF$FF$C0$7E$00$07$F8$00$FE$00$00$00$00$00$00$00$00$00$3F$E0›$00$00$00$00$00$0F$FF$FF$81$FF$80$1F$E0$00$00$01$F8$00$00$00$00$00$00$00$FF$C0›$00$00$00$00$00$3F$F8$FF$07$FF$80$7F$80$3E$00$1F$FC$03$FF$C0$00$00$00$03$FF$80›$00$00$00$00$00$FF$E1$FE$1F$FF$80$FF$00$FE$00$FF$FC$7F$FF$E0$00$00$00$1F$FF$00›$00$00$00$00$03$FF$87$FC$3F$1F$83$FC$01$FC$07$F0$FF$FF$FF$E7$F0$00$00$7F$FC$00›$00$00$00$00$0F$FE$0F$F0$FC$06$07$F8$03$F8$3F$C0$FF$FF$FF$FF$FC$00$03$FF$F0$00›$00$00$00$00$3F$F8$3F$E1$F8$00$1F$F0$0F$E0$FF$03$FF$C1$FF$FF$FE$00$0F$FF$80$00›$00$00$00$00$FF$FF$FF$C7$E0$00$3F$C0$3F$81$FC$0F$F8$07$FF$FF$FC$00$3F$FC$00$00›$00$00$0F$FF$FF$FF$FF$8F$C0$00$7F$80$7F$03$F8$3F$80$1F$FE$3F$F8$00$FF$E0$00$00›$00$00$1F$FF$FF$FF$FF$1F$00$00$FF$01$FE$0F$C0$FE$00$7F$F0$7F$F0$03$FF$00$00$00›$00$00$3F$FF$FF$FF$FE$3E$01$C1$FE$03$F8$1F$83$F8$01$FF$C1$FF$C0$1F$FC$00$00$00›$00$00$00$3F$F0$0F$F8$7C$07$C3$FC$0F$F0$3F$87$E0$03$FF$03$FF$00$FF$F0$00$00$00›$00$00$00$FF$C0$1F$F0$7C$3F$87$F8$1F$E0$7F$FF$80$0F$FC$0F$FE$01$FF$80$00$00$00›$00$00$03$FF$00$3F$E0$7F$FE$0F$F0$3F$80$FF$FC$00$3F$F0$3F$F8$0F$FE$00$00$00$00›$00$00$0F$FC$00$3F$C0$7F$F8$0F$80$3F$00$FF$F0$00$7F$C0$7F$E0$1F$F8$00$00$00$00›$00$00$3F$F0$00$3F$80$3F$E0$00$00$3E$00$FF$80$00$FF$00$FF$80$FF$C0$00$00$00$00›$00$00$FF$C0$00$1F$00$00$00$00$00$00$00$FC$00$00$7E$01$FE$00$FF$00$00$00$00$00›$00$03$FF$00$00$00$00$00$00$00$00$00$00$00$00$00$00$01$F0$00$F0$00$00$00$00$00›$00$0F$FE$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$1C$00$00$00$00$00$00›$00$1F$F8$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$7F$00$00$00$00$00$00›$00$3F$E0$00$00$00$00$01$FF$FF$FF$FF$FF$FF$C0$00$00$00$00$FF$00$00$00$00$00$00›$00$7F$80$00$00$00$03$FF$FF$FF$FF$FF$FF$FF$FF$F0$00$00$00$FE$00$00$00$00$00$00›$00$FF$00$00$00$0F$FF$FF$FF$FF$FF$FF$FF$FF$FF$FF$FC$00$00$1C$00$00$00$00$00$00›$00$FC$00$00$03$FF$FF$F0$00$00$00$00$0F$FF$FF$FF$FF$FF$00$00$00$00$00$00$00$00›$00$00$00$01$FF$FF$F0$00$00$00$00$00$00$00$00$0F$FF$FF$F0$00$00$00$00$00$00$00›$00$00$00$0F$FF$E0$00$00$00$00$00$00$00$00$00$00$00$FF$FC$00$00$00$00$00$00$00›$00$00$00$0F$F8$00$00$00$00$00$00$00$00$00$00$00$00$00$FF$00$00$00$00$00$00$00›]››;--------------------------››PROC PLOT_CHAR(BYTE CH) ;PLOT LETTERS ON GR.8 SCREEN›BYTE CHBASE=756›CARD OFFSET,INC,SCREEN=88›BYTE POINTER BIT_MAP,CHARSET,SCR› CHARSET=CHBASE*256› CH==&127 ;MASK INVERSE VIDEO› IF CH>31 AND CH<96 THEN› OFFSET=(CH-32)*8› ELSEIF CH>=0 AND CH<32 THEN› OFFSET=(CH+64)*8› ELSE OFFSET=CH*8› FI› BIT_MAP=CHARSET+OFFSET›› FOR INC=0 TO 7› DO › SCR=SCREEN+COL+(ROW+INC)*40› SCR^=BIT_MAP^ › BIT_MAP==+1› OD›RETURN ;END PLOT_CHAR()› ›;------------------------------› ›PROC CONVERT_NAME() ;INSERTS PERIOD BETWEEN FILENAME & EXTENSION› BYTE INC=[14]› WHILE INC>11› DO› LOAD_NAME(INC)=LOAD_NAME(INC-1)› INC==-1› OD› LOAD_NAME(11)='.› LOAD_NAME(0)=14›RETURN ;END CONVERT_NAME()››;------------------------------››PROC LOAD_FILE()› LOAD_NAME(0)=2› LOAD_NAME(1)='D LOAD_NAME(2)=':› SASSIGN(LOAD_NAME,FILES+CHOICE*12,3,13)› CONVERT_NAME()› CLOSE(1)› OPEN(1,LOAD_NAME,4,0)› [$4C $15C8] ;ATARI DOS 2.0S› ;BINARY LOAD ROUTINE›RETURN ;END LOAD_FILE()››;------------------------------››PROC READ_DIRECTORY()›BYTE LOCK,NEXT› ZERO(FILES,120)› CLOSE(3)› OPEN(3,"D:*.*",6,0)› DO› LOCK=GETD(3) NEXT=GETD(3)› INPUTMD(3,FILE_NAME,18) › FILE_NAME(0)=11› IF LOCK='* THEN› SCOPY(FILES+FILE_COUNT*12,FILE_NAME)› FILE_COUNT==+1› IF FILE_COUNT>9 THEN EXIT FI› › ELSEIF FILE_NAME(1)>='0 AND› FILE_NAME(1)<='9 THEN› EXIT › FI ›› OD › CLOSE(3)›RETURN ;END READ_DIRECTORY()››;------------------------------››PROC DISPLAY_CHOICE() ›BYTE POS›CHAR ARRAY LOAD="loading =>"› COL=2 ROW=80+CHOICE*8› FOR POS=1 TO LOAD(0)› DO› PLOT_CHAR(LOAD(POS))› COL==+1› OD›RETURN ;END DISPLAY_CHOICE()› ›;------------------------------› ›PROC DISPLAY_FILES()›BYTE FILENUM,POS›CHAR ARRAY TITLE="disk directory",› PROMPT="select"› ROW=64 COL=12› FOR POS=1 TO TITLE(0) › DO› PLOT_CHAR(TITLE(POS))› COL==+1› OD›› ROW=80› FOR FILENUM=0 TO FILE_COUNT-1› DO› COL=13› PLOT_CHAR(FILENUM+48)› COL==+2›› FOR POS=FILENUM*12+1 TO FILENUM*12+11› DO› PLOT_CHAR(FILES(POS))› COL==+1› OD› ROW==+8› IF ROW>152 THEN› EXIT› FI› OD› › COL=16 ROW=176› FOR POS=1 TO PROMPT(0)› DO› PLOT_CHAR(PROMPT(POS))› COL==+1› OD›RETURN ;END DISPLAY_FILES()››;------------------------------››PROC SCROLL_COLORS()›› BYTE WSYNC=54282,› VCOUNT=54283,› COLR=53274,› COUNTER,CHANGECOLR=[0],› INCCOLR,› CURSOR=752›› OPEN(3,"K:",4,0)› KEY=255› DO › WHILE KEY=255› DO› FOR COUNTER=1 TO 10› DO› INCCOLR=CHANGECOLR› DO› WSYNC=0› COLR=INCCOLR› INCCOLR==-1 › UNTIL VCOUNT&128› OD› OD› CHANGECOLR==+1› OD› CHOICE=GETD(3)› IF CHOICE>47 AND CHOICE› MOVEBLOCK($7308,A,8) ;a› MOVEBLOCK($7318,CDE,24) ;cde› MOVEBLOCK($7338,G,8) ;g› MOVEBLOCK($7348,I,8) ;i› MOVEBLOCK($7358,KL,16) ;kl› MOVEBLOCK($7370,NO,16) ;no› MOVEBLOCK($7390,RST,24) ;rst› MOVEBLOCK($73C8,Y,8) ;y››RETURN ;END CHAR_SET()››;------------------------------››PROC PLOT_LOGO()›BYTE LINE,BYT›CARD START,NEXTLYN,SCREEN=88›BYTE POINTER SCR›› START=12*40+7 ;OFFSET TO START OF LOGO DATA› NEXTLYN=40 ;INC TO NEXT LINE› FOR LINE=0 TO 35› DO› FOR BYT=0 TO 25› DO› IF LOGO(LINE*26+BYT)<>0 THEN› SCR=SCREEN+START+BYT› SCR^=LOGO(LINE*26+BYT)&$55 › FI› OD› START==+NEXTLYN› OD›RETURN ;END PLOT_LOGO()››;------------------------------››PROC MAIN()›BYTE DMA=559› DEVICE=0› POKEC($9B,$600)› COLDST=BOOT ;COLDSTART ON RESET› GRAPHICS(24)› DMA=DISPLAY_OFF› CHAR_SET()› COLOR=1› SETCOLOR(1,1,0)› SETCOLOR(2,1,12)› SETCOLOR(4,8,5)›READ_DIRECTORY()›PLOT_LOGO()›DISPLAY_FILES()› DMA=DISPLAY_ON›DO› SCROLL_COLORS()› DISPLAY_CHOICE()› LOAD_FILE()›OD›