sinistar/MAKE.COM

845 lines
26 KiB
Plaintext
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

$! A few equates
$ VERSION = 17 ! Hopefully unnecessary
$ TOPCOM :== COMMON
$ TOPDIR :== LIBRARY.SINISTAR
$ SAMDIR :== 'TOPDIR'.SAM
$ WITTDIR :== 'TOPDIR'.WITT
$ FALSDIR :== 'TOPDIR'.FALS
$ MICADIR :== 'TOPDIR'.MICA
$ ESC[0,8] = %X1B ! VT100 control character.
$!xxx turn off external messages.
$ disp :== WRITE SYS$OUTPUT
$!
$ DISP ESC,"[24;1H " ! Clear bottom two lines of the screen
$ DISP " " ! for informational use.
$ DISP ESC,"[1;22r" ! Set scrolling region
$ DISP ESC,"[24;1H",ESC,"#6",ESC,"[7mLIBRARY COPY of SINISTAR",ESC,"[0m"
$!
$ ON ERROR THEN GOTO _ABORT
$ ON CONTROL_Y THEN GOTO _ABORT
$ SET NOON ! Setup for use of $STATUS and $SEVERITY
$!
$_NAME:
$ @['TOPDIR'.COM]INQUIRE PGMR_NAME "What do you want to do?" -
"[ALLNEW,CHECK,CONTINUE,HELP,Control-Y]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$!!! IF PGMR_NAME .EQS. "NOAH" THEN GOTO _NOAH
$!!! IF PGMR_NAME .EQS. "RICH" THEN GOTO _'PGMR_NAME'
$!!! IF PGMR_NAME .EQS. "RICH2" THEN GOTO _'PGMR_NAME'
$!!! IF PGMR_NAME .EQS. "SAM" THEN GOTO _SAM
$!!! IF PGMR_NAME .EQS. "BOB" THEN GOTO _BOB
$!!! IF PGMR_NAME .EQS. "LIBCHK" THEN GOTO _LIBCHK
$!!! IF PGMR_NAME .EQS. "RXX" THEN GOTO _R_XX
$ IF PGMR_NAME .EQS. "ALLNEW" THEN GOTO _'PGMR_NAME'
$ IF PGMR_NAME .EQS. "CHECK" THEN GOTO _'PGMR_NAME'
$ IF PGMR_NAME .EQS. "CONTINUE" THEN GOTO _'PGMR_NAME'
$ IF PGMR_NAME .EQS. "HELP" THEN GOTO _HELP1
$ DISP " "
$ DISP "You may only enter one of the designated responses."
$!
$_HELP1:
$ DISP " "
$ DISP "ALLNEW will destroy previous builds, forcing an all new library copy"
$ DISP " to be built. This will take several hours."
$ DISP "CONTINUE will test the current condition of the library copy and if it"
$ DISP " is in the middle of being built, will continue doing so. You"
$ DISP " must correct any errors it reports and stops at. Then, you"
$ DISP " need to CONTINUE again."
$ DISP " To change a source and remake the library MOT file, just edit"
$ DISP " the SRC file, then delete the LOG and LIS files before running"
$ DISP " this proceedure."
$ DISP "CHECK will test the current condition of the library copy and report"
$ DISP " as if it were building (CONTINUEing) but will not actually try"
$ DISP " to build anything. It stops when it finds and reports errors."
$ DISP "HELP will print this out."
$ DISP " "
$ GOTO _NAME
$!
$!
$_ALLNEW:
$ SET DEFAULT ['SAMDIR']
$ @['TOPDIR'.COM]DELETER message.lis
$ @['TOPDIR'.COM]DELETER message.log
$ @['TOPDIR'.COM]DELETER image.lis
$ @['TOPDIR'.COM]DELETER image.log
$ GOTO _CONTINUE
$!
$!
$_CHECK:
$ DISP "Sorry. This isn't implimented."
$ GOTO _NAME
$!
$!
$_CONTINUE:
$ RUN_STOP := RUN
$ GOTO _SAM
$!
$!
$_CHECK:
$ RUN_STOP := STOP
$ GOTO _SAM
$!
$! N N OOO AAA H H
$! NN N O O A A H H
$! N N N O O AAAAA HHHHH
$! N NN O O A A H H
$! N N OOO A A H H
$!
$_NOAH:
$ set DEFAULT [fals]
$ @login
$ set DEFAULT [LIBRARY.SINISTAR.fals]
$ DISP " "
$ DISP "I will now search and RICHS.EQU and RICHS2.EQU for the symbol _1"
$ DISP "If it is not found, then the $Symbols were not edited to _Symbols."
$ search ['WITTDIR']richs.equ,['WITTDIR']richs2.equ "_1"
$N_SYMBOLS:
$ DISP ESC,"[23;1H",ESC,"[0KResponses: [YES,NO,Control-Y]"
$ DISP ESC,"[21;1H"
$ INQUIRE YES_NO "Was the _1 symbol found?"
$ IF YES_NO .EQS. "YES" THEN GOTO N_SET
$ IF YES_NO .EQS. "Y" THEN GOTO N_SET
$ IF YES_NO .EQS. "NO" THEN GOTO N_NO_SET
$ IF YES_NO .EQS. "N" THEN GOTO N_NO_SET
$ GOTO N_SYMBOLS
$N_NO_SET:
$ DISP "Please go back and edit RICHS.EQU and/or RICHS2.EQU and change"
$ DISP "all the $Symbols to _Symbols now."
$ GOTO _EXIT
$!
$! Reset NOAHS.SET and NOAHS.SYM
$!
$N_SET:
$ search/output=noahs.set ['WITTDIR']richs2.equ " SET "
$ copy [witt]null.src ['FALSDIR']noahs.sym
$ copy [witt]null.src ['FALSDIR']noah.sym ! For the work files.
$ a9s ['FALSDIR']noahs
$ DISP " "
$ DISP "I will now wait for the first assembly to finish."
$ synchronize ASM09/queue=SYS$SLOW
$ @['TOPDIR'.COM]CAPTURE SLOW @['FALSDIR']symver noahs.lis noahs y
$ DISP " "
$ DISP "I will now wait for the symbol capturing to finish."
$ synchronize CAPTURE/queue=SYS$SLOW
$ a9s ['FALSDIR']noahs
$ DISP " "
$ DISP "I will now wait for the second assembly to finish."
$ synchronize ASM09/queue=SYS$SLOW
$ DISP " "
$ search ['FALSDIR']noahs.log "errors detected"
$N_DETECT:
$ DISP ESC,"[23;1H",ESC,"[0KResponses: [YES,NO,Control-Y]"
$ DISP ESC,"[21;1H"
$ INQUIRE YES_NO "Were there any errors detected?"
$ IF YES_NO .EQS. "YES" THEN GOTO N_ERROR
$ IF YES_NO .EQS. "Y" THEN GOTO N_ERROR
$ IF YES_NO .EQS. "NO" THEN GOTO N_NO_ERROR
$ IF YES_NO .EQS. "N" THEN GOTO N_NO_ERROR
$ GOTO N_DETECT
$N_ERROR:
$ DISP "Please examine NOAHS.LOG and correct the errors."
$ DISP " "
$ DISP "Once the assembly works, don't forget to run:"
$ DISP "@['TOPDIR'.COM]EQUATES NOAHS"
$ purge ['FALSDIR']noahs.*
$ GOTO _EXIT
$!
$!
$!
$N_NO_ERROR:
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ STOP
$ GOTO _BOBS
$!
$! RRRR IIIII CCCC H H
$! R R I C H H
$! RRRR I C HHHHH
$! R R I C H H
$! R R IIIII CCCC H H
$!
$_RICH:
$ DISP "Beginning RICH's !!!"
$!
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ SET DEFAULT ['WITTDIR']
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']SAMS.EQU "_1"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_EDIT_CHK
$!
$!
$ SOURCE := RICHS
$!!!!!
$!
$! Test for assembled RICHS.SRC
$!
$!!!!!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['WITTDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS
$!
$ disp "''SOURCE'.SRC is already assembled."
$ goto R_RICHS_EQU_CHK
$!
$!
$R_RICHS:
$!
$! Test for first pass completed and RICHS.SYM generated.
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['WITTDIR']'SOURCE'.sym "SYMVER"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS_ASM1 ! If no SYMVER then ASM1.
$ disp "''SOURCE'.SYM is already generated."
$ GOTO R_RICHS_ASM2
$!
$! Assemble RICHS.SRC the first time.
$!
$R_RICHS_ASM1:
$ DISP "''SOURCE'.SRC needs assembly with a new ''SOURCE'.SET ..."
$!
$! Reset RICHS.SET and RICHS.SYM
$!
$ @['TOPDIR'.COM]DELETER rich.sym ! Work file.
$ search/output='SOURCE'.set;1 ['SAMDIR']sams.equ " SET "
$ search/output='SOURCE'.set;2/match=nand 'SOURCE'.set;1 "displa" ! From sam
$ CREATE 'SOURCE'.sym
$ CREATE rich.sym ! For the work files.
$!
$! Now, assemble RICHS
$!
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE'
$ DISP "Waiting for ''SOURCE' 1st pass assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize 'SOURCE'SLOW/queue=SYS$SLOW
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Capture RICHS symbols
$!
$ DISP "''SOURCE' symbols are about to be captured..."
$ @['TOPDIR'.COM]CAPTURE SLOW @['WITTDIR']symver 'SOURCE'.lis 'SOURCE' y
$ disp "Waiting for ''SOURCE' symbol capture ..."
$
$ @['TOPDIR'.COM]MESSAGE "Batch Capturing" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW CAPTURE
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Assemble RICHS.SRC the second time.
$!
$R_RICHS_ASM2:
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE'
$ DISP "Waiting for ''SOURCE' 2nd pass assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize 'SOURCE'SLOW/queue=SYS$SLOW
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS ! Any errors the 2nd time?
$!
$! Test for generated RICHS.EQU
$!
$R_RICHS_EQU_CHK:
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS_EQU
$ disp "''SOURCE'.EQU is already generated."
$ goto R_EDIT1_CHK
$!
$! Generate RICHS.EQU
$!
$R_RICHS_EQU:
$ purge ['WITTDIR']'SOURCE'.*
$ @['TOPDIR'.COM]DELETER RICHS2.equ
$ @['TOPDIR'.COM]DELETER RICHS2.lis
$ @['TOPDIR'.COM]DELETER RICHS2.log
$ @['TOPDIR'.COM]DELETER RICHS2.set
$ @['TOPDIR'.COM]DELETER RICHS2.sym
$!
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Test for _1 edited from $1 in listing.
$!
$R_EDIT1_CHK:
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ SET DEFAULT ['WITTDIR']
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.EQU "_1"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF $STATUS THEN $ GOTO R_EDIT1_OK
$!
$! Convert $symbols to _symbols.
$!
$ RUN ['TOPDIR'.COM]DOLLAR
RICHS.EQU
RICHS.EQU
RICHS
$!
$! Part 2 of RICHS section of Sinistar.
$!
$R_EDIT1_OK:
$ SOURCE := RICHS2
$!
$! Test for assembled RICHS2
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['WITTDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS2
$!
$ disp "''SOURCE'.SRC is already assembled."
$ goto R_RICHS2_EQU_CHK
$!
$!
$R_RICHS2:
$!
$! Test for first pass completed and RICHS2.SYM generated.
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['WITTDIR']'SOURCE'.sym "SYMVER"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS2_ASM1 ! If no SYMVER then ASM1.
$ disp "''SOURCE'.SYM is already generated."
$ GOTO R_RICHS2_ASM2
$!
$! Assemble RICHS2 the first time.
$!
$R_RICHS2_ASM1:
$ DISP "''SOURCE'.SRC needs assembly with a new ''SOURCE'.SET ..."
$!
$! Reset RICHS2.SET and RICHS2.SYM
$!
$ search/output='SOURCE'.set;1 ['WITTDIR']RICHS.equ " SET "
$ CREATE 'SOURCE'.sym
$!
$! Now, assemble RICHS2
$!
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE'
$ DISP "Waiting for ''SOURCE' 1st pass assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize 'SOURCE'SLOW/queue=SYS$SLOW
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Capture RICHS2 symbols
$!
$ DISP "''SOURCE' symbols are about to be captured..."
$ @['TOPDIR'.COM]CAPTURE SLOW @['WITTDIR']symver 'SOURCE'.lis 'SOURCE' y RICHS2
$ disp "Waiting for ''SOURCE' symbol capture ..."
$
$ @['TOPDIR'.COM]MESSAGE "Batch Capturing" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW CAPTURE
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Assemble RICHS2 the second time.
$!
$R_RICHS2_ASM2:
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE'
$ DISP "Waiting for ''SOURCE' 2nd pass assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize 'SOURCE'SLOW/queue=SYS$SLOW
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS ! Any errors the 2nd time?
$!
$! Test for generated RICHS2.EQU
$!
$R_RICHS2_EQU_CHK:
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO R_RICHS2_EQU
$ disp "''SOURCE'.EQU is already generated."
$ goto R_EDIT2_CHK
$!
$! Generate RICHS2.EQU
$!
$R_RICHS2_EQU:
$ purge ['WITTDIR']'SOURCE'.*
$ @['TOPDIR'.COM]DELETER ['FALSDIR']NOAHS.equ ! Pre-empt the
$ @['TOPDIR'.COM]DELETER ['FALSDIR']NOAHS.log ! third phase
$ @['TOPDIR'.COM]DELETER ['FALSDIR']NOAHS.set ! of Sinistar,
$ @['TOPDIR'.COM]DELETER ['FALSDIR']NOAHS.sym ! which is NOAHS.
$!
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Test for _1 edited from $1 in listing.
$!
$R_EDIT2_CHK:
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ SET DEFAULT ['WITTDIR']
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.EQU "_1"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF $STATUS THEN $ GOTO R_EDIT2_OK
$!
$! Convert $symbols to _symbols.
$!
$ RUN ['TOPDIR'.COM]DOLLAR
RICHS2.EQU
RICHS2.EQU
RICHS2
$!
$R_EDIT2_OK:
$ STOP
$ GOTO _NOAH
$!
$! SSSS TTTTT AAA RRRR TTTTT
$! S T A A R R T
$! SSS T AAAAA RRRR T
$! S T A A R R T
$! SSSS T A A R R T
$!
$_START:
$ SET DEFAULT ['SAMDIR']
$ @['TOPDIR'.COM]DELETER MESSAGE.LIS
$ @['TOPDIR'.COM]DELETER MESSAGE.LOG
$ @['TOPDIR'.COM]DELETER MESSAGE.EQU
$!
$! SSSS AAA M M
$! S A A MM MM
$! SSS AAAAA M M M
$! S A A M M
$! SSSS A A M M
$!
$_SAM:
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ DISP "Beginning SAM's !!!"
$ SET DEFAULT ['SAMDIR']
$ SOURCE = ""
$!
$! Test for assembled MESSAGE.SRC
$!
$ SOURCE := MESSAGE
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_NO_MESLIS
$ disp "''SOURCE'.SRC is already assembled."
$ goto S_MESEQU
$!
$! Assemble MESSAGE.SRC
$!
$S_NO_MESLIS:
$ DISP "''SOURCE'.SRC is not correctly assembled."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]DELETER 'SOURCE'.equ
$ @['TOPDIR'.COM]DELETER SAMS.equ
$ @['TOPDIR'.COM]DELETER SAMS.lis
$ @['TOPDIR'.COM]DELETER SAMS.log
$ @['TOPDIR'.COM]DELETER SAMS.set
$ @['TOPDIR'.COM]DELETER SAMS.sym
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE' ! sb ab sq
$ disp "Waiting for ''SOURCE' assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW 'SOURCE'SLOW ! sambuasm
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS
$!
$S_MESEQU:
$!
$! Test for generated MESSAGE.EQU
$!
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO S_NO_MESEQU
$ disp "''SOURCE'.EQU is already generated."
$ goto S_EQULIS
$!
$! Generate MESSAGE.EQU
$!
$S_NO_MESEQU:
$ DISP "''SOURCE'.EQU is not generated."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]DELETER EQUATES.equ
$ @['TOPDIR'.COM]DELETER EQUATES.lis
$ @['TOPDIR'.COM]DELETER EQUATES.log
$ @['TOPDIR'.COM]DELETER SAMS.equ
$ @['TOPDIR'.COM]DELETER SAMS.lis
$ @['TOPDIR'.COM]DELETER SAMS.log
$ @['TOPDIR'.COM]DELETER SAMS.set
$ @['TOPDIR'.COM]DELETER SAMS.sym
$!
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Test for assembled EQUATES.SRC
$!
$S_EQULIS:
$ SOURCE := EQUATES
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_NO_EQULIS
$ disp "''SOURCE'.SRC is already assembled."
$ goto S_EQUEQU
$!
$! Assemble EQUATES.SRC
$!
$S_NO_EQULIS:
$ DISP "''SOURCE'.SRC needs assembly ..."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]DELETER 'SOURCE'.equ
$ @['TOPDIR'.COM]DELETER IMAGE.equ
$ @['TOPDIR'.COM]DELETER IMAGE.lis
$ @['TOPDIR'.COM]DELETER IMAGE.log
$ @['TOPDIR'.COM]DELETER SAMS.equ
$ @['TOPDIR'.COM]DELETER SAMS.lis
$ @['TOPDIR'.COM]DELETER SAMS.log
$ @['TOPDIR'.COM]DELETER SAMS.set
$ @['TOPDIR'.COM]DELETER SAMS.sym
$ @['TOPDIR'.COM]ASM -ABS -OLD -MED 'SOURCE' ! fb ab sq
$ disp "Waiting for ''SOURCE' assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize/queue=sys$MED 'SOURCE'MED ! sambuasm
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS
$!
$! Test for generated EQUATES.EQU
$!
$S_EQUEQU:
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO S_NO_EQUEQU
$ disp "''SOURCE'.EQU is already generated."
$ goto S_IMALIS
$!
$! Generate EQUATES.EQU
$!
$S_NO_EQUEQU:
$ DISP "''SOURCE'.EQU is not generated."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]DELETER SAMS.equ
$ @['TOPDIR'.COM]DELETER SAMS.lis
$ @['TOPDIR'.COM]DELETER SAMS.log
$ @['TOPDIR'.COM]DELETER SAMS.set
$ @['TOPDIR'.COM]DELETER SAMS.sym
$!
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$! Test for assembled IMAGE.SRC
$!
$S_IMALIS:
$ SOURCE := IMAGE
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_NO_IMALIS
$ disp "''SOURCE'.SRC is already assembled."
$ goto S_IMAEQU
$!
$! Assemble IMAGE.SRC
$!
$S_NO_IMALIS:
$ DISP "''SOURCE'.SRC is not correctly assembled."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]DELETER 'SOURCE'.equ
$ @['TOPDIR'.COM]DELETER SAMS.equ
$ @['TOPDIR'.COM]DELETER SAMS.lis
$ @['TOPDIR'.COM]DELETER SAMS.log
$ @['TOPDIR'.COM]DELETER SAMS.set
$ @['TOPDIR'.COM]DELETER SAMS.sym
$ @['TOPDIR'.COM]ASM -ABS -OLD -MED 'SOURCE' ! fb ab sq
$ disp "Waiting for ''SOURCE' assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize/queue=sys$MED 'SOURCE'MED ! sambuasm
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS
$!
$! Test for generated IMAGE.EQU
$!
$S_IMAEQU:
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO S_NO_IMAEQU
$ disp "''SOURCE'.EQU is already generated."
$ goto S_SAMLIS
$!
$! Generate IMAGE.EQU
$!
$S_NO_IMAEQU:
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]EQUATES 'SOURCE'
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!!!!!
$!
$! Test for assembled SAMS.SRC
$!
$!!!!!
$S_SAMLIS:
$ SOURCE := SAMS
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_SAMS
$!
$ disp "''SOURCE'.SRC is already assembled."
$ goto S_SAMS_EQU_CHK
$!
$! Test for first pass completed and SAMS.SYM generated.
$!
$S_SAMS:
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.sym "SYMVER"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO S_SAMS_ASM1 ! If no SYMVER then ASM1.
$ disp "''SOURCE'.SYM is already generated."
$ GOTO S_SAMS_ASM2
$!
$! Assemble SAMS.SRC
$!
$S_SAMS_ASM1:
$ DISP "''SOURCE'.SRC needs assembly with a new ''SOURCE'.SET ..."
$!
$! Reset SAMS.SET and SAMS.SYM
$!
$ CREATE library.equ
$ CREATE sinistar.equ
$!
$ @['TOPDIR'.COM]DELETER 'SOURCE'.equ
$ @['TOPDIR'.COM]DELETER 'SOURCE'.set
$!
$ @['TOPDIR'.COM]DELETER s.tmp
$ search/nohead/out=s.tmp message.equ,equates.equ,image.equ " set "
$ sort/key=(pos=1,size=16) s.tmp 'SOURCE'.set
$ @['TOPDIR'.COM]DELETER s.tmp
$!
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE' ! sb ab sq
$ disp "Waiting for ''SOURCE' assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW 'SOURCE'SLOW ! sambuasm
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp ['SAMDIR']'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF $STATUS THEN $ GOTO S_SAMS_EQU_CHK
$!
$! Capture symbols.
$!
$S_TSYMVER:
$ DISP "''SOURCE' symbols are not captured."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$!
$ @['TOPDIR'.COM]DELETER capture.tmp
$ @['SAMDIR']CAPTURE @['SAMDIR']tsymver ['SAMDIR']'SOURCE'.lis 'SOURCE' y
$ disp "Waiting for ''SOURCE' symbol capture ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Capturing" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW CAPTURE
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$!
$S_SAMS_ASM2:
$ @['TOPDIR'.COM]ASM -ABS -OLD -SLOW 'SOURCE' ! 2nd pass assemble of SAMS
$ disp "Waiting for ''SOURCE' assembly ..."
$ @['TOPDIR'.COM]MESSAGE "Batch Assembling" "[Control-Y if necessary]"
$ synchronize/queue=sys$SLOW 'SOURCE'SLOW ! sambuasm
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.log "No errors detected"
$ @['TOPDIR.COM]ERRORCHK error.tmp
$ IF .NOT. $STATUS THEN $ GOTO _ASMERRORS ! Any errors 2nd time?
$!
$ ren ['SAMDIR']'SOURCE'.lis ['SAMDIR']'SOURCE'
$ @['TOPDIR'.COM]DELETER 'SOURCE'.equ
$!
$! Test for generated SAMS.EQU
$!
$S_SAMS_EQU_CHK:
$ @['TOPDIR.COM]ERRORCHK 'SOURCE'.EQU
$ IF .NOT. $STATUS THEN $ GOTO S_SAMS_EQU
$ disp "''SOURCE'.EQU is already generated."
$ goto S_EDIT_CHK
$!
$! Generate SAMS.EQU
$!
$S_SAMS_EQU:
$ DISP "''SOURCE'.EQU is being generated ..."
$ IF RUN_STOP .EQS. "STOP" THEN $ GOTO _EXIT
$ @['TOPDIR'.COM]INQUIRE null "Press both RETURN and CTRL-A to continue" -
"[<Return><Control-A>,Control-Y if necessary]"
$ IF .NOT. $STATUS THEN $ GOTO _ABORT
$ @['TOPDIR'.COM]MESSAGE "Editing" "[Control-Y if necessary]"
$ @['TOPDIR'.COM]MESSAGE "Working" "[Control-Y if necessary]"
$!
$S_EDIT_CHK:
$ SET DEFAULT ['SAMDIR'] ! Multiple entry points to here.
$ @['TOPDIR'.COM]DELETER error.tmp
$ search/output=error.tmp 'SOURCE'.equ "$AT"
$ open/read test error.tmp
$ read/end=S_DONE test match
$ if match.eqs."No strings matched" then goto S_DONE
$!
$! Convert $symbols to _symbols.
$!
$ @['TOPDIR'.COM]DELETER ['WITTDIR']RICHS.equ ! Pre-empt the next
$ @['TOPDIR'.COM]DELETER ['WITTDIR']RICHS.log ! phase of Sinistar.
$ @['TOPDIR'.COM]DELETER ['WITTDIR']RICHS.set
$ @['TOPDIR'.COM]DELETER ['WITTDIR']RICHS.sym
$ RUN ['TOPDIR'.COM]DOLLAR
SAMS.EQU
SAMS.EQU
SAMS
$!
$!
$S_DONE:
$ close test
$ @['TOPDIR'.COM]DELETER error.tmp
$ goto _RICH
$!
$_ASMERRORS:
$ disp "Errors assembling ",SOURCE,".src"
$ disp "Correct the errors and restart this program."
$ goto _EXIT
$!
$! BBBB OOO BBBB
$! B B O O B B
$! BBBB O O BBBB
$! B B O O B B
$! BBBB OOO BBBB
$!
$_BOB:
$ set DEFAULT [mica]
$ @login
$ set DEFAULT ['MICADIR']
$ DISP " "
$ DISP "I will now search NOAHS.EQU for the symbol _1"
$ DISP "If it is not found, then the $Symbols were not edited to _Symbols."
$ search ['FALSDIR']noahs.equ "_1"
$B_SYMBOLS:
$ DISP ESC,"[23;1H",ESC,"[0KResponses: [YES,NO,Control-Y]"
$ DISP ESC,"[21;1H"
$ INQUIRE YES_NO "Was the _1 symbol found?"
$ IF YES_NO .EQS. "YES" THEN GOTO B_SET
$ IF YES_NO .EQS. "Y" THEN GOTO B_SET
$ IF YES_NO .EQS. "NO" THEN GOTO B_NO_SET
$ IF YES_NO .EQS. "N" THEN GOTO B_NO_SET
$ GOTO B_SYMBOLS
$B_NO_SET:
$ DISP "Please go back and edit NOAHS.EQU and change"
$ DISP "all the $Symbols to _Symbols now."
$ GOTO _EXIT
$!
$! Reset BOBS.SET and BOBS.SYM
$!
$B_SET:
$ search/output=bobs.set ['FALSDIR']noahs.equ " SET "
$ copy [witt]null.src ['MICADIR']bobs.sym
$ copy [witt]null.src ['MICADIR']bob.sym ! For the work files.
$ asms ['MICADIR']bobs
$ DISP " "
$ DISP "I will now wait for the first assembly to finish."
$ synchronize BOBS/queue=SYS$SLOW
$ @['TOPDIR'.COM]CAPTURE SLOW @['MICADIR']vsymver bobs.lis bobs y
$ DISP " "
$ DISP "I will now wait for the symbol capturing to finish."
$ synchronize CAPTURE/queue=SYS$SLOW
$ asms ['MICADIR']bobs
$ DISP " "
$ DISP "I will now wait for the second assembly to finish."
$ synchronize BOBS/queue=SYS$SLOW
$ DISP " "
$ search ['MICADIR']bobs.log "errors detected"
$B_DETECT:
$ DISP ESC,"[23;1H",ESC,"[0KResponses: [YES,NO,Control-Y]"
$ DISP ESC,"[21;1H"
$ INQUIRE YES_NO "Were there any errors detected?"
$ IF YES_NO .EQS. "YES" THEN GOTO B_ERROR
$ IF YES_NO .EQS. "Y" THEN GOTO B_ERROR
$ IF YES_NO .EQS. "NO" THEN GOTO B_NO_ERROR
$ IF YES_NO .EQS. "N" THEN GOTO B_NO_ERROR
$ GOTO B_DETECT
$B_ERROR:
$ DISP "Please examine BOBS.LOG and correct the errors."
$ DISP " "
$ DISP "Once the assembly works, don't forget to run:"
$ DISP "@['TOPDIR'.COM]EQUATES BOBS"
$ purge ['MICADIR']bobs.*
$ GOTO _EXIT
$B_NO_ERROR:
$ DISP " "
$ DISP "I will now generate the equate file."
$ DISP "Follow the instructions which follow ..."
$ DISP " "
$ @['TOPDIR'.COM]EQUATES BOBS
$ GOTO _EXIT
$!
$! L IIIII BBBB CCCC H H K K
$! L I B B C H H K K
$! L I BBBB C HHHHH KKK
$! L I B B C H H K K
$! LLLLL IIIII BBBB CCCC H H K K
$!
$_LIBCHK:
$ ERR_COUNT = 0
$ ON ERROR THEN GOTO _LIBABORT1
$ ON CONTROL_Y THEN GOTO _LIBABORT1
$ SORT/KEY=(pos:1,size:6) ['SAMDIR']library.equ temp.tmp
$ OPEN/READ TMP: temp.tmp
$ ON ERROR THEN GOTO _LIBABORT2
$ ON CONTROL_Y THEN GOTO _LIBABORT2
$ NEXT_LABEL = ""
$ NEXT_LINE = ""
$_LIBLOOP:
$ LAST_LABEL = "''NEXT_LABEL'"
$ LAST_LINE = "''NEXT_LINE'"
$ READ TMP: NEXT_LINE
$ NEXT_LABEL = "''F$EXTRACT(0,6,NEXT_LINE)'"
$ IF NEXT_LABEL .NES. LAST_LABEL THEN GOTO _LIBLOOP
$ DISP "Duplicate: ""''LAST_LINE'"""
$ DISP " ""''NEXT_LINE'"""
$ ERR_COUNT = ERR_COUNT+1
$ GOTO _LIBLOOP
$_LIBABORT2:
$ CLOSE TMP:
$_LIBABORT1:
$ @['TOPDIR'.COM]DELETER temp.tmp
$ IF ERR_COUNT .NE. 0 THEN DISP SYS$OUTPUT "['SAMDIR']Library.equ is BAD."
$ GOTO _EXIT
$!
$_ABORT:
$_EXIT:
$ DISP ESC,"[23;1H",ESC,"[0K",ESC,"[5mTerminated",ESC,"[0m"
$ DISP ESC,"[1;24r",ESC,"[24;79H " ! Reset screen scroll region.
$ @['TOPDIR'.COM]DELETER *.tmp
$ set default ['TOPDIR']
$ show default
$ EXIT