#11 Article 494 Posted at 1987/10/13 21:20:14 by Ami (MAP404) [PRG.SHI]
Subject: シノブ ローダ for FM-11/OS-9
PROCEDURE Sloader (* SHINOBU Loader(sloader) by メイプルタウン (* Convert for OS-9/Basic09 by Ami (* 1987/10/13 BASE 0 DIM D(8):INTEGER DIM x,y,bf,c1,cm,c2:INTEGER DIM x2,y2:INTEGER DIM d1,d2:INTEGER DIM f,color:INTEGER DIM ta:STRING[256] DIM filename:STRING[32] DIM ipath:INTEGER ON ERROR GOTO 999 PRINT " *** SHONOBU Loader ***" PRINT " by SHINOBU" PRINT " Convert for OS-9 Ami" PRINT INPUT "file name :",filename OPEN #ipath,filename:READ RUN CLS RUN LOCATE(0,0,0) D(0):=0 D(1):=$4000 D(2):=$4040 D(3):=$4510 D(4):=$4545 D(5):=$B1B1 D(6):=$DEF6 D(7):=$FFFE f:=0 color:=7 FOR x:=0 TO 159 STEP 5 REPEAT RUN I_Readln(ipath,256,ta) UNTIL ta<>"" FOR bf:=0 TO 4 FOR y:=0 TO 95 STEP 2 cm:=ASC(MID$(ta,bf*48+INT(y/2)+12,1))-$20 c1:=cm/8 c2:=MOD(cm,8) x2:=(x+bf)*4 y2:=y*4 d1:=D(c1) d2:=D(c2) RUN PutBlock1(x2,y2,x2+3,y2+3,d1,f,color) RUN PutBlock1(x2,y2+4,x2+3,y2+7,d2,f,color) NEXT y NEXT bf NEXT x GET #0,ta CLOSE #ipath 999 RUN LOCATE(0,0,1) END PROCEDURE PutBlock1 (* Put block 1 sub system command (* PARAM px1,py1,px2,py2:INTEGER PARAM pdat:INTEGER PARAM pf:INTEGER PARAM pcl:INTEGER TYPE HD=Head,InOut,Insize,Outsize:BYTE TYPE OUTRCB=Dummy,cn,cmd:BYTE; X1,Y1,X2,Y2:INTEGER; CL,Func,Suu: BYTE; Patt1,Patt2:INTEGER; ETX:BYTE DIM Header:HD DIM Outdat:OUTRCB Header.Head:=$14 Header.InOut:=$0E Header.Outsize:=18 Outdat.cn:=0 Outdat.cmd:=$1C Outdat.X1:=px1 Outdat.Y1:=py1 Outdat.X2:=px2 Outdat.Y2:=py2 Outdat.CL=pcl Outdat.Func:=pf Outdat.Suu:=4 Outdat.Patt1:=pdat Outdat.Patt2:=pdat Outdat.ETX:=3 PUT #1,Header PUT #1,Outdat END PROCEDURE I_ReadLn (* Line input *) (* 85/02/25 *) (* SysCall use 85/05/12 *) (* by S.HARA *) PARAM IPath:INTEGER PARAM Length:INTEGER PARAM Text(256):BYTE TYPE Reg=CC,A,B,DP:BYTE; X,Y,U:INTEGER DIM R:Reg DIM Readln:INTEGER DIM MaxSize:INTEGER Text(1):=$FF MaxSize:=Length (* I$Readln call *) Readln:=$8B R.X=ADDR(Text) R.Y:=MaxSize+1 R.A:=IPath (* Input 1 Line *) RUN syscall(Readln,R) Length:=R.Y-1 Text(Length+1):=$FF END