1 'SIDWY3.BA by David Lapinski 1/17/88 10 DEFINT A-Z 11 DIM B(15),BI(15),LC(70),UL(70),LY(70) 12 GOTO27 14 Q=0:Q$=INKEY$: IF Q$<>"" THEN Q=ASC(Q$) 15 IF Q=3 THEN MENU 16 RETURN 24 XZ=PEEK(IZ):Q=PEEK(IZ+1):IF (Q AND 128) =0 THEN XZ=XZ OR (256*Q):RETURN 25 XZ=(((Q AND 127)*256) + XZ)-32768:RETURN 27 FOR J=0 TO 5:B(J)=32:NEXTJ:B(6)=68:B(7)=79:GOSUB6000:PRINT" " 28 BI(0)=1:FOR I=1 TO 7:BI(I)=BI(I-1)*2:NEXT I 30 FOR I=-1683 TO -1420 STEP 11:IF (PEEK(I) AND 240)<>192 THEN 70 50 FOR J=0 TO 7:IF PEEK(I+J+3)<>B(J) THEN70 60 NEXT J:GOTO80 70 NEXT I:PRINT"ERROR, CANNOT FIND ";:FOR J=0 TO 7:PRINTCHR$(B(J));:NEXT J:PRINT" ":GOTO27 80 XZ=0:ID=I+1:IZ=ID:GOSUB24:IS=XZ:GOSUB2000 100 I=IS:LN=0:LC(0)=IS:LY(0)=0:UL(0)=0 101 GOSUB14 110 C=PEEK(I) 'PRINTC;:IF C>31 THEN PRINTCHR$(C);" "; ELSE PRINT" "; 115 IF (C=13) OR (C=26) THEN 130 120 I=I+1:GOTO110 130 IF C=26 THEN EN=-1:GOTO400 140 IF LN=(LP-1) THEN IS=I+1:EN=0:GOTO400 150 LN=LN+1:LC(LN)=I+1:LY(LN)=0:UL(LN)=0:GOTO120 400 YT=0 401 CLS 405 XM=999:GOSUB3000 410 YB=YT+ST-1:PRINT@0,"TOP=";YT;" ";:XP=LP*SX+SX-1 411 GOSUB14 420 CF=-1:FOR L1=0 TO LN:XP=XP-SX 425 L2=LC(L1):C=PEEK(L2):IF C>31 THEN 510 430 IF (C=13) OR (C=26) THEN 590 435 CF=0 440 IF P1 THEN 490 450 D=PEEK(L2+1):E=PEEK(L2+2):IF (C<>27) OR (D<>45) THEN 480 460 IF E=49 THEN UL(L1)=-1:LC(L1)=LC(L1)+3:GOTO425 470 IF E=48 THEN UL(L1)=0:LC(L1)=LC(L1)+3:GOTO425 480 LC(L1)=LC(L1)+1:GOTO425 490 IF C=15 THEN UL(L1)=-1:GOTO480 500 IF C=14 THEN UL(L1)=0:GOTO480 505 GOTO480 510 CF=0:Z=C:IF Z>127 THEN Z=30193+Z*6:Z1=Z+5:GOTO530 520 Z=30321+Z*5:Z1=Z+4 530 Y1=LY(L1):Z2=Z 535 E=PEEK(Z2):XZ=XP:IF C<33 THEN E=0 540 YZ=Y1:Z3=0 545 IF (E AND BI(Z3))<>0 THEN GOSUB1000 550 XZ=XZ-1:Z3=Z3+1:IF Z3<8 THEN 545 560 IF UL(L1) THEN GOSUB 1000 570 Y1=Y1+1:Z2=Z2+1:IF Z2<=Z1 THEN 535 575 IF UL(L1) AND (C<128) THEN YZ=Y1:GOSUB 1000 580 IF (LY(L1)+5)>YB THEN 590 585 LY(L1)=LY(L1)+6:GOTO480 590 NEXT L1 600 GOSUB 4000 610 IF CF THEN GOSUB 5000 620 IF EN AND CF THEN STOP 630 IF NOT CF THEN YT=YT+ST:GOTO410 640 GOTO100 1000 GOSUB14:IF (XZ>=1000) OR (XZ<0) THEN RETURN 1010 KY=YZ-YT:IF (KY>(ST-1)) OR (KY<0) THEN RETURN 1015 Q=YZ\6:M=63-XZ\SX:IF (Q>=0) AND (M>=0) AND (Q<240) AND (M<64) THEN PSET(Q,M) 1020 LZ=-3585+XZ:POKELZ,(PEEK(LZ)OR B(KY)):IF XZ>XM THEN XM=XZ 1050 RETURN 2000 GOSUB2090:GOSUB2006 2001 IF P2=84 THEN P=-1:NL=128:ST=7:DL=480 :GOTO2015 2002 IF P2=69 THEN P=0:NL=0:ST=8:DL=480:GOTO2015 2003 IF P2=88 THEN P=0:NL=0:ST=8:DL=560:GOTO2015 2005 PRINT@0,"ERROR PRINTER NOT T,E OR X":GOSUB2006:GOTO2000 2006 PRINT"ENTER TARGET PRINTER TYPE T,E OR X":GOSUB2008:Q=Q AND 223:IF (Q=84) OR (Q=69) OR (Q=88) THEN P2=Q:RETURN 2007 GOTO2006 2008 Q=0:Q$=INKEY$: IF Q$<>"" THEN Q=ASC(Q$) 2009 IF Q=0 THEN 2008 2010 IF Q=3 THEN MENU 2011 RETURN 2015 CLS:IF ((INP(187) AND 6)-2)<>0 THEN PRINT@120,"PRINTER NOT READY,HIT ANY KEY":GOSUB2008:GOTO2015 2020 IF P THEN FOR S=0 TO 6:B(S)=2^S:NEXTS: CALL 5232,27:CALL5232,23:CALL5232,18:GOTO2040 2030 FOR S=0 TO 7:B(S)=2^(7-S):NEXT S:CALL 5232,27:CALL5232,112:CALL5232,0:CALL5232,27:CALL5232,65:CALL5232,8 2032 PRINT"DMP106 - IBM MODE, SEND ESC 2 (Y/N)?" 2033 GOSUB 2008:Q=Q AND 223:IF Q=89 THEN CALL 5232,27:CALL 5232, 50:GOTO 2040 2034 IF Q<>78 THEN GOTO2032 2040 CLS:PRINT"CHOOSE LINE SPACING - "; 2045 IF (P2=84) OR (P2=69) THEN PRINT"TANDY/EPSON" 2050 IF (P2=88) THEN PRINT"TTXPRESS" 2055 FOR I= 8 TO 12:L=DL/I:J=I-7:PRINT J;". " ;I;" DOTS/LINE, ";L;" LINES/PAGE" 2060 NEXT I 2070 PRINT@240,"ENTER NUMBER";:GOSUB 2008: PRINT@ 254,CHR$(Q);:IF (Q>53) OR (Q<49) THEN 2070 2080 Q=Q-41:LP=DL\Q:SX=Q:RETURN 2090 PRINT"ENTER PRINT FILE PRINTER TYPE T, E OR X":GOSUB2008:Q=Q AND 223:IF (Q=84) OR (Q=69) OR (Q=88) THEN 2100 2095 GOTO2090 2100 IF Q=84 THEN P1=-1:RETURN 2110 IF (Q=69) OR (Q=88) THEN P1=0:RETURN 2120 GOTO2090 3000 FOR I=-3585 TO -2584:POKEI,NL:NEXT I:XM=-1:RETURN 4000 GOSUB14:IF XM<0 THEN CALL 5232,13:RETURN 4020 IF NOT P THEN CALL 5232,27:CALL 5232,75:CALL 5232,(XM+1) MOD 256:CALL 5232,(XM+1)\256 4040 LZ=-3585+XM:FOR S=-3585 TO LZ:GOSUB14:CALL5232,PEEK(S):NEXT S:CALL5232,13:GOSUB3000:RETURN 5000 IF YB>785 THEN RETURN 5005 S=(791-YB)\ST:IF S<=0 THEN RETURN 5010 FOR I=0 TO S:CALL 5232,13:NEXT I 5020 RETURN 6000 CALL7994:PRINT"Enter Filename"; 6010 FOR J=0 TO 5 6020 GOSUB2008:IF (Q=8) AND (J>0) THEN J=J-1:PRINTCHR$(8);:GOTO6020 6025 IF (Q=8) AND (J<=0) THEN 6020 6030 IF Q=13 THEN RETURN 6040 IF (Q>96) AND (Q<123) THEN Q=Q AND 223 6045 B(J)=Q:PRINTCHR$(Q);:NEXT J:RETURN