! SCREEN.BAS - Produces compilable BSI listing for terminal screen. ! Written 02-01-85 ! by J. A. Jarboe IV ! ! USES: AMOS .SBR by Dave Pallman on AMUS ! VUE .SBR by Dave Pallman on AMUS ! STRIP .SBR somewhere in AMOS land ! ! RUNS: on AM100/L MAP1 ST ! main array of info in xcall MAP2 AR(24),S,80 ! easy to get to display MAP1 GRA ! Graphics of info MAP2 GR(24),S,80 ! easy to get to display MAP1 DO(24),S,80 MAP1 VUE ! Maps for Xcall VUE.SBR MAP2 ROWS,F,6,23 ! # of rows in display MAP2 COLUMNS,F,6,80 ! # of columns in display MAP2 LEFTCOL,F,6,0 ! left column position MAP2 LEFTROW,F,6,0 ! left row position MAP1 FILE$,S,24 ! Filename to process MAP1 EXT$,S,4,".SCR" ! Screen file extension MAP1 BASFIL,S,24 ! BASIC filename MAP1 MSG$,S,30 ! Input message MAP1 QU,S,1,CHR(34) ! Quotation mark MAP1 TERMINAL ! Terminal data ! Enter the characters for graphics characters for your terminal MAP2 BLC,S,1,"A" ! bottom left corner MAP2 TLC,S,1,"B" ! top left corner MAP2 TRC,S,1,"C" ! top right corner MAP2 BRC,S,1,"D" ! bottom right corner MAP2 CRS,S,1,"I" ! cross MAP2 VRT,S,1,"J" ! vertical MAP2 HRZ,S,1,"K" ! horizontal MAP2 LEF,S,1,"L" ! Line and left MAP2 LRT,S,1,"M" ! Line and right MAP2 DWN,S,1,"N" ! Line and down MAP2 LUP,S,1,"O" ! Line and up ! ? tab(-1,y) MAP2 LOW,B,2,11 ! Low Intensity MAP2 HIGH,B,2,12 ! High Intensity MAP2 PROT,B,2,13 ! prot field MAP2 UNPRO,B,2,14 ! unprot field MAP2 GON,B,2,23 ! start line draw MAP2 GOFF,B,2,24 ! end line draw MAP1 WHOLE,S,30 ! Xcall AMOS, string !****************** ! ! MAIN MENU ! !****************** MENU: ? TAB(-1,0); ? TAB(1,26);"Screen Processing"; ? TAB(2,29);"Version 1.0"; ? TAB(4,26);"Select Entry"; ? TAB(6,23);"1. DIRectory of Screens"; ? TAB(7,23);"2. VUE a Screen"; ? TAB(8,23);"3. BASing listing of Screen"; ? TAB(9,23);"4. INPut Special Effects to Screen"; ? TAB(10,23);"5. SEE actual Screen"; ? TAB(11,23);"6. HELp for Screen"; ? TAB(12,23);"7. QUIT"; IF FILE$#" " THEN ? TAB(13,19);"Processing ";FILE$ ? TAB(4,39);A$;TAB(4,39);:INPUT "",A$ ON A$ GOTO DIR,VUE,BAS,INP,SEE,HEL,QUIT IF A$="DIR" THEN GOTO DIR IF A$="VUE" THEN GOTO VUE IF A$="BAS" THEN GOTO BAS IF A$="INP" THEN GOTO INP IF A$="SEE" THEN GOTO SEE IF A$="HEL" THEN GOTO HEL IF A$="QUI" THEN GOTO QUIT GOTO MENU !****************** ! ! DIRectory ! !****************** DIR: ? TAB(-1,0);"DIRECTORY OF SCREEN FILES" XCALL AMOS,"DIR *.SCR/W" CALL PROMPT GOTO MENU !****************** ! ! VUE the screen file ! !****************** VUE: ? TAB(2,1);TAB(-1,10); MSG$="Enter name of file to VUE " CALL FILE XCALL AMOS,"VUE "+FILE$ GOTO BAS !****************** ! ! INPut Special effects (INPUT,GRAPHICS,INTENSITY) ! !****************** INP: ? TAB(-1,0); MSG$="Enter file to Process " CALL FILE ? TAB(-1,0); ? TAB(2,28);"SPECIAL EFFECTS"; ? TAB(4,28);"Enter Selection "; ? TAB(6,28);"1. Input Statements"; ? TAB(7,28);"2. Graphics on"; ? TAB(8,28);"3. Main Menu"; ? TAB(4,44);:INPUT "",M$ IF VAL(M$)<1 OR VAL(M$)>2 THEN GOTO MENU ? TAB(-1,0); OPEN #1,FILE$,INPUT FOR I=1 TO 23 INPUT LINE #1,AR(I) NEXT I FOR I=1 TO ROWS ? TAB(I,1);AR(I); AR(I)=AR(I)+SPACE$(80) NEXT I ON VAL(M$) CALL STA,GRA INP1: CLOSE #1 ? TAB(-1,0); IF GFLAG=1 THEN ? TAB(-1,GOFF); OPEN #1,FILE$,OUTPUT FOR I=1 TO 23 ? #1,AR(I)[1,80] NEXT I CALL PUTGRA CLOSE #1 !****************** ! ! BASic listing creation ! !****************** BAS: ? TAB(-1,0);"PRODUCING BSI COMPILABLE LISTING" MSG$="Enter Name of File to Process " IF A$="3" OR A$="BAS" THEN CALL FILE OPEN #1,FILE$,INPUT OPEN #2,BASFIL,OUTPUT IFLAG=0 FOR I=1 TO 23 INPUT LINE #1,AR(I) NEXT I FOR I=1 TO 23 INPUT LINE #1,GR(I) NEXT I GFLAG=0 BASAG: FOR I= 1 TO 23 DO(I)=AR(I) IF GFLAG=1 THEN GOTO BASAG2 BASAG2: IF DO(I)="" THEN GOTO NXI PASIT: A=0 IF DO(I)=" " THEN GOTO NXI XCALL STRIP,DO(I) FIN: A=A+1 IF A> LEN(DO(I)) THEN GOTO NXI IF DO(I)[A,A]=" " THEN GOTO FIN QUOT: Q1=INSTR(A,DO(I),CHR(34)) IF Q1>0 THEN Q2=INSTR(Q1,DO(I),CHR(34)) Q1=Q1-1 IF GFLAG=1 THEN Q1=INSTR(A,DO(I)," "):Q1=Q1-1 IF Q1<1 THEN Q1=LEN(DO(I)) PRI: ? #2,"? TAB("+I+","+A+");"+CHR$(34)+DO(I)[A,Q1]+CHR$(34)+";" A=Q1+3 Q1=0:Q2=0 GOTO FIN NXI: NEXI: A=0 NEXT I Q2=1 IF IFLAG=1 THEN GOTO QUOTA GFLAG=0 FOR I=1 TO 23 IF GFLAG=1 THEN GOTO PASFL IF GR(I)#""THEN ? #2,"? TAB(-1,"+GON+");":GFLAG=1 PASFL: IFLAG=1 DO(I)=GR(I) GOTO BASAG2 QUOTA: IF GFLAG=1 THEN ? #2,"? TAB(-1,"+GOFF+");" FOR I=1 TO 23 QUOT2: Q1=INSTR(Q2,AR(I),CHR(34)) IF Q1<1 THEN GOTO NEXIT Q2=Q1+3 ? #2,"? TAB("+I+","+Q1+");:INPUT A$" GOTO QUOT2 NEXIT: Q2=1 NEXT I FOR I=1 TO 23 DO(I)=SPACE$(80):GR(I)=DO(I):AR(I)=DO(I) NEXT I CL1: CLOSE #1 CLOSE #2 GOTO MENU !***************** ! ! SEE actual compiled BSI file ! !***************** SEE: ? TAB(-1,0); MSG$="Enter name of file to process " IF A$="5" OR A$="SEE" THEN CALL FILE WHOLE="COMPIL "+BASFIL XCALL AMOS,WHOLE ? TAB(-1,0); XCALL AMOS,"RUN "+BASFIL[1,DOT-1] CALL PROMPT GOTO MENU !****************** ! ! HELP file ! !****************** HEL: ? TAB(-1,0); XCALL AMOS,"HELP SCREEN" CALL PROMPT GOTO MENU !****************** ! ! SUBROUTINES ! !****************** FILE: ? TAB(4,24);MSG$; WHR=24+LEN(MSG$) ? TAB(4,WHR);FILE$[1,DOT-1]; ? TAB(4,WHR); INPUT "",FILE$ XCALL STRIP,FILE$ DOT=INSTR(1,FILE$,".") IF DOT=0 THEN FILE$=FILE$+EXT$ DOT=INSTR(1,FILE$,".") BASFIL=FILE$[1,DOT-1]+".BSI" XCALL STRIP,BASFIL RETURN PROMPT: ? TAB(24,1);"Enter Carriage Return to Continue";:INPUT " ",A$ RETURN QUIT: ? TAB(-1,0); END STA: ? TAB(24,1);"ESC-End ";QU;"$";QU;"-Input ";QU;"L";QU;"-Low ";QU;"H";QU;"-High"; XCALL VUE,ST,ROWS,COLUMNS,LEFTROW,LEFTCOL GOTO INP1 GRA: ? TAB(-1,GON); FOR I=1 TO ROWS INPUT LINE #1,GR(I) GR(I)=GR(I)+SPACE$(80) IF GR(I)="" THEN GOTO NEXA GTOP: A=A+1 IF A>80 THEN GOTO NEXA IF GR(I)[A,A]=" " THEN GOTO GTOP B=INSTR(A,GR(I)," ") B=B-1 IF B<1 THEN B=LEN(GR(I)) ? TAB(I,A);GR(I)[A,B];:A=B:GOTO GTOP NEXA: A=0 NEXT I ? TAB(-1,GOFF); ? TAB(24,1);TAB(-1,GON);TLC;TAB(-1,GOFF);"=";TLC;" "; ? TAB(-1,GON);HRZ;TAB(-1,GOFF);" =";HRZ;" "; ? TAB(-1,GON);TRC;TAB(-1,GOFF);" =";TRC;" "; ? TAB(-1,GON);VRT;TAB(-1,GOFF);" =";VRT;" "; ? TAB(-1,GON);BLC;TAB(-1,GOFF);" =";BLC;" "; ? TAB(-1,GON);BRC;TAB(-1,GOFF);" =";BRC;" "; ? TAB(-1,GON);CRS;TAB(-1,GOFF);" =";CRS;" "; ? TAB(-1,GON);DWN;TAB(-1,GOFF);" =";DWN;" "; ? TAB(-1,GON);LUP;TAB(-1,GOFF);" =";LUP;" "; ? TAB(-1,GON);LEF;TAB(-1,GOFF);" =";LEF;" "; ? TAB(-1,GON);LRT;TAB(-1,GOFF);" =";LRT;" "; ? TAB(-1,GON); GFLAG=1 XCALL VUE,GRA,ROWS,COLUMNS,LEFTROW,LEFTCOL GOTO INP1 PUTGRA: FOR I=1 TO 23 ? #1,GR(I)[1,80] NEXT I GFLAG=0 RETURN