home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
club100
/
prt
/
sidwy3.ba
< prev
next >
Wrap
Text File
|
2006-10-19
|
5KB
|
109 lines
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