#11 Article 2719 Posted at 1989/03/16 19:56:49 by SS-20 (MAP698) [PRG.BAS]

Subject: GCOPY.Bas for X1turbo

for X1turbo+CZ-8PC1
 Monochrome Hard-copy Utility
 “GCOPY.Bas”

え~、ここに披露しますプログラムは、
『24ピンプリンタの性能をフルに引き出し、
 640×400 or 640×200のグラフィック画面を、
 8階調で、
 A4サイズに、
 印刷するプログラム』
です。

何ぶん、アセンブラ使うのが初めてという柄から、
かなりキタナイ代物になってしまいました。が、
『終わり良ければすべて良し』
の精神にのっとり、思い切ってここに掲載します。
---------------------------------------
使い方:
1)RUN″GCOPY.Bas″
2)400ラインか200ラインか聞いてくるので、4か2を入力する。
3)200ラインの時はどっちのバンクを印刷するか聞いてくるので、0か1を入力。
4)正しければ、Sure?の問にYと答える。
5)Hit any Key。ここで何か入力すると、HCOPYが始まる。
6)もう1枚印刷したいときは、More?の問にYと答える。

とまぁ、以外と安直かつ簡単なんだけど、

欠点:
1)200ラインの時にムリヤリ400ラインに展開するので、
  裏画面(印刷しない方の画面)が見事に破壊される。
2)横320ドットモードに対応していない。
  (誰か320→640コンバータ作って。)
3)シャープ純正24ピンで改行幅がn/120インチのプリンタに限る。
  (適当に解析して直せば動くと思うけど。)
---------------------------------------
あぁ、あと、
1)A4の紙に印刷する時は紙がギリギリなので、紙のセットには注意するやうに。
2)Version upは今の所一切考えてないよ。
3)ここのネットッて、まだまだX1tユーザーさんが少ないんだよねぇ。

↓それじゃ、プログラム。

100 ' SAVE "GCOPY.Bas"
110 '
120 CLEAR &HE000:DEFINT A-Z:OPTION SCREEN 4:WIDTH 80,25,,2:INIT
130 MEM$(&HE000,16)=HEXCHR$("06 1D ED 79 CD 3C E0 21 5C E1 11 E0 E1 01 0B 00")
140 MEM$(&HE010,16)=HEXCHR$("ED B0 CD 1A E1 21 58 E1 11 E0 E1 01 04 00 ED B0")
150 MEM$(&HE020,16)=HEXCHR$("21 7F 02 22 6A E1 CD 4A E0 21 67 E1 11 E0 E1 01")
160 MEM$(&HE030,16)=HEXCHR$("03 00 ED B0 CD 1A E1 06 1E ED 79 C9 3E 04 32 D7")
170 MEM$(&HE040,16)=HEXCHR$("F8 CD 20 12 3E 24 CD DF 10 C9 06 50 C5 DD 21 E4")
180 MEM$(&HE050,16)=HEXCHR$("E1 CD 73 E0 DD 36 00 0D DD 36 01 0A CD 1A E1 C5")
190 MEM$(&HE060,16)=HEXCHR$("E5 2A 6A E1 01 08 00 B7 ED 42 22 6A E1 E1 C1 C1")
200 MEM$(&HE070,16)=HEXCHR$("10 DA C9 11 00 00 ED 53 6C E1 D5 CD 9E E0 21 40")
210 MEM$(&HE080,16)=HEXCHR$("E1 22 76 E1 CD C5 E0 CD 0F E1 CD C5 E0 CD 0F E1")
220 MEM$(&HE090,16)=HEXCHR$("CD C5 E0 D1 13 21 90 01 B7 ED 52 20 D9 C9 C5 D5")
230 MEM$(&HE0A0,16)=HEXCHR$("E5 2A 6A E1 ED 5B 6C E1 01 6E E1 D9 06 08 D9 E5")
240 MEM$(&HE0B0,16)=HEXCHR$("D5 C5 CD BD 58 C1 60 69 77 D1 E1 03 2B D9 10 EE")
250 MEM$(&HE0C0,16)=HEXCHR$("D9 E1 D1 C1 C9 21 6E E1 D9 01 00 08 11 00 00 D9")
260 MEM$(&HE0D0,16)=HEXCHR$("ED 5B 76 E1 4E 06 00 EB 09 EB 1A B7 F5 CD 00 E1")
270 MEM$(&HE0E0,16)=HEXCHR$("CD 00 E1 CD 00 E1 F1 D9 83 5F D9 23 D9 10 E0 DD")
280 MEM$(&HE0F0,16)=HEXCHR$("71 00 DD 72 01 DD 73 02 D9 DD 23 DD 23 DD 23 C9")
290 MEM$(&HE100,16)=HEXCHR$("D9 CB 21 AF CB 22 89 4F AF CB 23 8A 57 D9 C9 2A")
300 MEM$(&HE110,16)=HEXCHR$("76 E1 01 08 00 09 22 76 E1 C9 3A E1 E1 FE 4A 20")
310 MEM$(&HE120,16)=HEXCHR$("13 21 E0 E1 01 F6 EF 7E CD 83 39 23 E5 B7 ED 42")
320 MEM$(&HE130,16)=HEXCHR$("E1 20 F4 C9 21 E0 E1 7E B7 C8 CD 83 39 23 18 F7")
330 MEM$(&HE140,16)=HEXCHR$("07 05 05 02 02 01 00 00 07 07 02 05 00 00 02 00")
340 MEM$(&HE150,16)=HEXCHR$("07 02 05 02 05 04 00 00 1B 4A 04 B0 1B 25 39 02")
350 MEM$(&HE160,16)=HEXCHR$("0A 1B 25 39 10 0D 00 1B 36 00 00 00 00 00 00 00")
360 MEM$(&HE170,16)=HEXCHR$("00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00")
370 MEM$(&HE180,16)=HEXCHR$("F5 C5 E5 D5 11 00 40 3A D6 F8 F6 10 6F 3A D6 F8")
380 MEM$(&HE190,16)=HEXCHR$("E6 EF 67 01 D0 1F ED 61 42 4B ED 78 01 D0 1F ED")
390 MEM$(&HE1A0,16)=HEXCHR$("69 42 4B ED 79 13 7B B2 C2 93 E1 7D 32 D6 F8 D1")
400 MEM$(&HE1B0,16)=HEXCHR$("E1 C1 F1 C9 00 00 00 00 00 00 00 00 00 00 00 00")
410 CLS:CREV 1:LOCATE 2,1:COLOR 6:PRINT "Resolution: (4)00 / (2)00 = ";
420 R$=INKEY$(1):PRINT R$:CREV
430 IF R$="4" THEN RESO=4:GOTO 510
440 IF R$="2" THEN RESO=2:GOTO 460
450 BEEP:GOTO 410
460 CREV 1:LOCATE 2,2:PRINT "Source BANK: BANK(0) / BANK(1) = ";
470 R$=INKEY$(1):PRINT R$:CREV
480 IF R$="0" THEN POKE &HE18C,&H6F:POKE &HE192,&H67:GOTO 510
490 IF R$="1" THEN POKE &HE18C,&H67:POKE &HE192,&H6F:GOTO 510
500 BEEP:GOTO 460
510 CREV 1:LOCATE 2,-RESO/2+4:PRINT "Sure?: (Y)es / (N)o = ";
520 R$=INKEY$(1):PRINT R$:CREV
530 IF R$="Y" THEN PAUSE 5:GOTO 560
540 IF R$="N" THEN PAUSE 5:GOTO 410
550 BEEP:GOTO 510
560 WIDTH ,,1:IF RESO=2 THEN CALL &HE180
570 CLS:CREV 1:LOCATE 2,1:PRINT "Hit any key to start.";:CREV
580 DUMMY$=INKEY$(1)
590 CALL &HE000
600 CLS:CREV 1:LOCATE 2,1:PRINT "Completed."
610 CREV 1:LOCATE 2,2:PRINT "More?: (Y)es / (N)o = ";
620 R$=INKEY$(1):PRINT R$:CREV
630 IF R$="Y" THEN PAUSE 5:GOTO 570
640 IF R$="N" THEN INIT:PRINT:END
650 BEEP:GOTO 610
660 ' *************************************
670 ' *** Produced by MAP698 / SS-20.   ***
680 ' ***          at 1989/03/16 (Thu.) ***
690 ' *************************************

P.S. コノ PROGRAM ヲ ドコ ニ オイタラ イイノカ マルデ ワカラナクナッタノデ、 ココニ UPシマス。
     ダケド、ホントウニ ツカッテクレル ヒト ガ イルノカナァ・・・。