#11 Article 316 Posted at 1987/08/23 04:23:31 by W.M. (MAP009) [PRG.WML]
Subject: WMSAVER for FM-7
FM-7,77 ヨウ ノ WMSAVER デス。 ホントウ ハ モウスコシ カイリョウ シタカッタノデスガ、 loader ト
saver ノ ジキ ガ アマリ ハナレル ノモ ヨクナイ ト オモイ、 マタ、 リクエスト モ アリマシタノデ、 コノママ post
シマス。 キカイゴ サブルーチン デハ、 「ウツクシク ナイ」 トコロモ スクナク アリマセンガ、 ミノガシテ クダサイ。
MAP009 / W.M.
10 '
20 ' W.M. SAVER : "WMSAVE"
30 '
40 ' Original ハフマン code ニ ヨル、 ヨコ640 dot ノ ガゾウ アッシュク
50 '
60 ' COPYRIGHT (C) 1987 by W.M.
70 '
100 CLEAR 300,&H5FFF:DEFINT A-Q,T-Z:DIM GD(1200)
110 U=&H6000:PDATA=U+9:PFILENO=PDATA+2:PSUM=PFILENO+1:PBITN=PSUM+2:PCHARN=PBITN+1:YMAX=199
120 FOR P=U TO U+&H04FF STEP &H20
130 READ F$
140 FOR PJ=0 TO &H20-1:POKE P+PJ,VAL("&H"+MID$(F$,PJ*2+1,2)):NEXT
150 NEXT
160 '
170 BITN=7:POKE PBITN,BITN:' if 8 then output binary data
180 POKE PCHARN,239:' character/line
190 EXEC U
200 '
210 GET@A(0,0)-(639,9),GD,G
220 LOCATE 0,0:LINEINPUT "Input filename: ",F$
230 PUT@A(0,0)-(639,9),GD,PSET
240 IF F$="" THEN POKE PFILENO,0 ELSE OPEN "O",#1,F$:POKE PFILENO,1
250 '
260 EXEC U+3
270 FOR Y=0 TO YMAX
280 GET@(0,Y)-(639,Y),GD,G,1,3,5,7
290 GOSUB 630
300 LINE(0,Y)-(639,Y),XOR,1
310 NEXT
320 LINE(0,0)-(639,YMAX),XOR,1,BF
330 SUMB=PEEK(PSUM)*256+PEEK(PSUM+1)
340 '
350 EXEC U+3
360 FOR Y=0 TO YMAX
370 GET@(0,Y)-(639,Y),GD,G,2,3,6,7
380 GOSUB 630
390 LINE(0,Y)-(639,Y),XOR,2
400 NEXT
410 LINE(0,0)-(639,YMAX),XOR,2,BF
420 SUMR=PEEK(PSUM)*256+PEEK(PSUM+1)-SUMB
430 '
440 EXEC U+3
450 FOR Y=0 TO 199
460 GET@(0,Y)-(639,Y),GD,G,4,5,6,7
470 GOSUB 630
480 LINE(0,Y)-(639,Y),XOR,4
490 NEXT
500 LINE(0,0)-(639,YMAX),XOR,4,BF
510 '
520 EXEC U+3
530 SUM=PEEK(PSUM)*256+PEEK(PSUM+1):SUMG=SUM-SUMB-SUMR
540 CLOSE
550 '
560 PRINT USING "blue : #####chars * #bit/char = ######bits, ###.##_% ";SUMB;BITN;SUMB*BITN;SUMB*BITN/640/(YMAX+1)*100
570 PRINT USING "red : #####chars * #bit/char = ######bits, ###.##_% ";SUMR;BITN;SUMR*BITN;SUMR*BITN/640/(YMAX+1)*100
580 PRINT USING "green: #####chars * #bit/char = ######bits, ###.##_% ";SUMG;BITN;SUMG*BITN;SUMG*BITN/640/(YMAX+1)*100
590 PRINT USING "total: #####chars * #bit/char = ######bits, ###.##_% ";SUM;BITN;SUM*BITN;SUM*BITN/640/(YMAX+1)/3*100
600 '
610 END
620 '
630 P=VARPTR(GD(0)):POKE PDATA,P \ 256:POKE PDATA+1,P MOD 256
640 EXEC U+6
650 RETURN
660 '
670 '--------------
680 '
690 ' W.M. SAVER
700 '
710 ' 87/08/17 Ver.1.00 programed by W.M.
720 ' 87/08/23 Ver.1.02 programed by W.M.
730 '
1000 DATA 20200216002F16003BAAAA000000074F0000AAAAAAAAAAAAAAAAAAAAAAAAAAAA
1010 DATA AAAACC0000ED8CE4A78D02EEA78D02EBA78D02E839308D04C66F808C695F26F9
1020 DATA 17037E396F8CC92031638CC4A68CC24848484848481702FD481702F9481702F5
1030 DATA A68CAE48338D00026ED6607A608660A660C660E6614361806106170364170373
1040 DATA 1701E9ED8C8C170358308D04C2318D046EC650A680A8A4A7A05A26F717035417
1050 DATA 01CAED8DFF6E170338308D04F2318D044EC650A680A8A4A7A05A26F717033417
1060 DATA 01AAED8DFF50170318308D0522318D042EC650A680A8A4A7A05A26F717031417
1070 DATA 018AED8DFF321702F8308D0552318D040EC650A680A8A4A7A05A26F71702F417
1080 DATA 016AED8DFF141702D8308D0442318D057EC650A680A7A05A26F9308D05C1C650
1090 DATA 4F69825A26FB308D0565318D03D1C650A680A8A4A7A05A26F71702B717012DED
1100 DATA 8DFEDD17029B308D0405318D0541C650A680A7A05A26F9308D0534C6504F6680
1110 DATA 5A26FB308D0528318D0394C650A680A8A4A7A05A26F717027A1700F0ED8DFE9C
1120 DATA 17025E308D03C8318D0504C650A680A7A05A26F9308D04F7C6504F66805A26FB
1130 DATA 308D04EBC6504F66805A26FB308D04DF318D034BC650A680A8A4A7A05A26F717
1140 DATA 02311700A7ED8DFE556F8DFE44EC8DFE4110A38DFE3E23086C8DFE35EC8DFE34
1150 DATA 10A38DFE31230A8602A78DFE24EC8DFE2510A38DFE22230A8603A78DFE13EC8D
1160 DATA FE1610A38DFE13230A8604A78DFE02EC8DFE0710A38DFE04230A8605A78DFDF1
1170 DATA EC8DFDF810A38DFDF5230A8606A78DFDE0EC8DFDE910A38DFDE6230A8607A78D
1180 DATA FDCFEC8DFDDA16FE00308D03F2318D043EEC83EDA38C654F26F7AE8DFDAB318D
1190 DATA 02EDC650A680A7A05A26F9396D8DFDA0272D108E0000308D046586008C695F24
1200 DATA 15A1802604312120F31F2017008FA61F108E000120E61F20170082326220AACC
1210 DATA 00003406108E0000308D043386008C695F2416A1802604312120F38D14E3E4ED
1220 DATA E4A61F108E000120E58D06E3E4EDE435861F2010830040240F3406E3E4E3E133
1230 DATA 8D013BE6CB4F20313406584958491F894FC3003F3406E3E4E3E1338D0120E6CB
1240 DATA 4F1F0235064FC43F3406E3E4E3E1338D010CE6CB4F31AB1F2039AAAAAA108300
1250 DATA 4025133406584958491F894FC3003F8D083506C43F4F8D0139338D00E13406E3
1260 DATA E4E3E133CBE6C43404EC4158498D066AE426F835843406698CC16C8CBDA68CBA
1270 DATA A18DFCAA26048D13200F8101260BEC8DFC9AC30001ED8DFC933586A68C9DE68D
1280 DATA FC8CC10826048D2D2022815025028B308B218D216C8C85A68C82A18DFC71260C
1290 DATA 860D8D11860A8D0D6F8DFF706F8DFF6A6F8DFF6739E68DFC522705D7BFBDFBBB
1300 DATA 39A68DFF5527055F8D8B20F5A68DFC3E81082708860D8DDD860A8DD96F8DFF3C
1310 DATA 39AE8DFC24318D0116C650A680A7A05A26F939308D0108318D02E4CC02806FA0
1320 DATA 83000126F9318D02D6C608A68048240263A431215A26F6108C695F26EC390684
1330 DATA 0001000003A00005900005D00005F00006980006C40006E00006F800078A0007
1340 DATA 9C0007C20007CC0007E80007FC00088800088C00088F00089F0008C00008CA00
1350 DATA 08CE0008E50008E70008EB0008ED00098200098900098980098D00098E00098E
1360 DATA 80099E00099E8009C10009C18009C90009C98009CB0009CB8009CF0009E40009
1370 DATA E48009E60009E68009EA0009EA8009EC0009EC8009EE0009EE8009EF0009EF80
1380 DATA 09FE0009FE8009FF800A82800A82C00A83000A83400A83800A83C00A8D8005D8
1390 DATA 0007800008C80009FF000ACF800ACFC00B8DE00C8DD00E8DCC0E8DC80D8DC0AA
1400 GOTO 1400