; MICROS.ACT ; ; READPIC - Reads MicroIllustrator ; picture files. Original code by ; Robert E. Wilson, REW Consulting. ; ; Modified for Action! and converted ; to code blocks by Harold Long, ; Bolton, MA. 14-Jan-1985 ; PROC GetByt=*() [ ;Provides CCIO and bailout functions $A5$AA$C5$AC$D0$06$A5$A9$C5$AB$F0$16 $A2$10$A9$00$8D$58$03$8D$59$03$20$56 $E4$30$09$E6$A9$D0$02$E6$AA$60$A9$01 $85$A0$68$68$60] ;Provides screen address canculation PROC NxtPnt=*() [$24$A2$50$2C$C6$A5$F0 $0E$A9$50$18$65$A3$85$A3$A9$00$65$A4 $85$A4$60$A9$60$85$A5$C6$A6$F0$0E$A9 $28$18$65$AD$85$A3$A9$00$65$AE$85$A4 $60$A9$02$85$A6$A9$01$18$65$AD$85$AD $85$A3$A9$00$65$AE$85$AE$85$A4$60] ; BYTE FUNC READPIC=*() [ ; Segment contains 181 bytes. $A5$58$85$AD$85$A3$A5$59$85$AE$85$A4 $A9$60$85$A5$A9$02$85$A6$A9$07$8D$52 $03$A9$A0$8D$54$03$A9$00$8D$55$03$85 $A7$85$AC$A9$FF$85$AB$85$A9$85$AA$20 GetByt$85$A0$A5$A9$C9$07$F0$0A$C9$0C $F0$10$C9$1A$F0$2B$D0$EB$A5$A0$4A$6A $6A$85$A2$18$90$E1$A9$05$85$A1$20GetByt $A6$A7$9D$C4$02$E6$A7$C6$A1$D0$F2 $20GetByt$85$AB$20GetByt$85$AC$18$90 $C2$A5$A2$F0$24$20GetByt$85$A1$29$7F $D0$0F$20GetByt$85$A8$E6$A8$20GetByt $85$A7$18$90$06$85$A7$A9$01$85$A8$A5 $A1$29$80$85$A1$20GetByt$85$A0$A0$00 $A5$A0$91$A3$20NxtPnt$A5$A2$F0$EE$C6 $A7$D0$04$C6$A8$F0$C2$A5$A1$F0$E9$D0 $E0] ; ; Build an ANTIC E mode display list ; MODULE BYTE SDMCTL=$22F, DINDEX=$57 CARD SDLSTL=$230 PROC ANTIC_E() BYTE TEMP CARD CHANGE Graphics (8+16) ;Need GR 8 TEMP=Peek(SDMCTL) ;Save display control reg Poke (SDMCTL, 0) ;Turn off display Poke (SDLSTL+3,78) ;Force the first LMS FOR CHANGE=(SDLSTL+6) TO (SDLSTL+204) ;WE KNOW HOW LONG MODE 8 IS DO IF Peek (CHANGE)=15 THEN Poke (CHANGE, 14) ELSEIF Peek (CHANGE)=79 THEN Poke (CHANGE, 78) FI OD Poke (DINDEX,7) ;Fool OS to think it's mode 7 Poke (SDMCTL, TEMP) ;Turn screen back on RETURN MODULE ;FILEHAN.ACT - General file and screen handler ; Copyright (c) 1984 Harold Long, Bolton MA BYTE ARRAY fname(18) ;file name+ext BYTE ARRAY infile(16),outfile(16) BYTE FUNC IsLower(BYTE c) IF (c>='a) AND (c<='z) THEN RETURN(1) FI RETURN(0) BYTE FUNC ToUpper(BYTE c) IF IsLower(c) THEN c ==- $20 FI RETURN(c) PROC Test_Name(BYTE POINTER fname) BYTE chr, cnt, ext BYTE ARRAY str132(24) chr=0 ext=0 FOR cnt=1 TO fname(0) DO fname(cnt)=ToUpper(fname(cnt)) IF fname(cnt)='. THEN ext=cnt FI IF fname(cnt)=': THEN chr=1 FI OD IF (ext>0) AND (ext # (fname(0)-3)) THEN fname(0)=ext+3 FI IF chr=0 THEN str132(0)=fname(0)+3 str132(1)='D str132(2)='1 str132(3)=': FOR cnt=1 TO fname(0) DO str132(cnt+3)=fname(cnt) OD FOR cnt=0 TO str132(0) DO fname(cnt)=str132(cnt) OD FI RETURN ; ; Main shell routine ; PROC Shell(BYTE ARRAY infile, outfile) BYTE result BYTE key=764 Close(1) ;for sure Open(1,infile,4,0) ;open input ANTIC_E() ;set up display list this way ;for all those poor 400/800 ;owners... result=READPIC() Close(1) DO UNTIL key # 255 OD key=255 RETURN PROC Get_Files() BYTE cnt DO Poke(82,1) Put(125) PutE() PrintE("MICROS - MicroIllustrator Utilities.") PrintE("Provides simple cut and paste") PrintE("functions as demonstration routines.") PrintE("Copyright (c) 1984 Harold Long") PrintE("Permission granted to distribute for") PrintE("non-commercial purposes.") PutE() Position(1,8) PrintE("Input File? ") Close(7) Open(7,"K:",4,0) DO Position(13,8) Put(' ) InputS(infile) Test_Name(infile) Position(13,8) Print(" ") Position(13,8) Put(' ) Print(infile) PutE() PutE() Print("Correct (Y/N)? ") DO cnt=GetD(7) UNTIL cnt='Y OR cnt='y OR cnt='N OR cnt='n OD Put(cnt) UNTIL cnt='Y OR cnt='y OD PutE() Shell(infile, outfile) OD RETURN