! 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
!******************
!
! 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
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