#11 Article 1027 Posted at 1988/02/03 07:48:22 by Ami (MAP404) [PRG.NL3]
Subject: N3Loader for FM-11 OS-9
n3loaderを以前OS-9/Basic09に移植したのですが,色の再現 性が悪いものでした。今回Ami-Netの会員の方が色の再現性を改善し さらにほぼ640*400のサイズで表示するように修正されましたので 再度uploadします。 このPgmで響子さんを表示しましたが,とてもきれいで感動しました。 これからもよい絵をupしてくださーい。 PROCEDURE n3loader (* N3Loader (* メイプルタウン ネットワーク (* 1987/10/13 (* 1988/02/01 BASE 0 DIM c(64),r(64),g(64),b(64):INTEGER DIM x,y:INTEGER DIM ipath:INTEGER DIM filename:STRING[32] DIM tc:STRING[1] DIM cl,ch,cn,i,tflg:INTEGER PRINT " ** NL3 Loader **" PRINT " by Ami 1987/10/13" PRINT INPUT "filename :",filename RUN CLS RUN LOCATE(0,0,0) OPEN #ipath,filename:READ x:=0 \y:=0 FOR i:=0 TO 63 GOSUB 50 cl:=ASC(tc)-32 IF cl>=127 THEN cl:=cl-33 \ ENDIF GOSUB 50 ch:=ASC(tc)-32 IF ch>=127 THEN ch:=ch-33 \ ENDIF c(i):=ch*128+cl r(i):=c(i)/81 g(i):=(c(i)-r(i)*81)/9 b(i):=c(i)-r(i)*81-g(i)*9 NEXT i FOR i=0 TO 8 READ c(i) NEXT i WHILE x<160 AND y<100 DO GOSUB 50 cl:=ASC(tc)-32 IF cl>=127 THEN cl:=cl-33 \ ENDIF tflg:=LAND(cl,$40) IF tflg<>0 THEN cl:=cl-$40 GOSUB 50 \cn:=ASC(tc)-32 IF cn>=127 THEN cn:=cn-33 \ ENDIF cn:=cn+2 ELSE cn:=1 ENDIF FOR i:=1 TO cn RUN PutBlock(x*4,y*4,x*4+3,y*4+3,c(r(cl)),2,2) RUN PutBlock(x*4,y*4,x*4+3,y*4+3,c(g(cl)),2,1) RUN PutBlock(x*4,y*4,x*4+3,y*4+3,c(b(cl)),2,4) (* fill(x*3,y*4,x*3+2,y*4+3,rgb(r(cl),g(cl),b(cl))) y:=y+1 IF y=100 THEN y:=0 \x:=x+1 \ ENDIF NEXT i ENDWHILE CLOSE #ipath GET #0,tc RUN LOCATE(0,0,1) END 50 (* get 1 byte *) REPEAT GET #ipath,tc UNTIL ASC(tc)>=$20 RETURN DATA $00,$8020,$A0A0,$A4A1,$A5A5,$E5B5,$F5F5,$FDF7,$FFFF PROCEDURE PutBlock (* 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,Patt3:INTEGER; ETX:BYTE DIM Header:HD DIM Outdat:OUTRCB Header.Head:=$14 Header.InOut:=$0E Header.Outsize:=20 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:=6 Outdat.Patt1:=pdat Outdat.Patt2:=pdat Outdat.Patt3:=pdat Outdat.ETX:=3 PUT #1,Header PUT #1,Outdat END