X7$ ?BOOT-U-No boot on volume ߋtv @Ǝ HvS' Hv*S'SRT11A DECRT11A ۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶mRcM[)S'RcMkQ%S'RcMTqS'RcMkQ_ (9g&_S'cd%S'cYv(S'cv*S'cjL^iS'cjLxS'csQv(S'cwS_MS'cyvS'&w:[S'&w:S'&w:3S'&w:SS'&w:SS':Ev7S':dv.S':KvS':|v S'R@vS'LTmvS'LT v S'LTKv S'LTySv S'LTSv S'LTSv S'Oe[XSS'Zg,v+S'pjL"SS'9g&S'm۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m  @ƎMICROVMS MICROVMS02 SYSTEM DECFILE11B Tr~ MICROVMS.GS MICROVMS.NBACKUP/VERIFY _DUB0: _DUA1:[000000]MICROVMS/SAVESET/IMAGE/INTERCHANGE/NOREWIND SYSTEM @ƎY4.4 _::  _DUA1: V4.4 ~    MJCLOK (Multi-Job CLOcK program) Version II by S.C. CRIBBS Pinawa, Manitoba Canada R0E1L0 ABSTRACT MJCLOK is a Foreground or System job utility that displays current calendar and time values, and user defined messages, on a VT100 RT-11 console terminal in a manner transparent to the Background job. This program demonstrates the feasibility of routing output to the console from Foreground or System jobs through Background job completion routines thus avoiding terminal context switching. MJCLOK has the facility to avoid conflicts with Background jobs that require full use of the video display. Version II differs from the original version in two ways: Terminal flow control commands are used to regulate communication. A single line display option has been added. MJCLOK (Multi-Job CLOcK program) MJCLOK is a PDP-11 program that maintains a current display of date, day of the week, and time of day on the RT-11 console terminal. The display device used must be a VT100 series or equivalent terminal. This program has been written in MACRO-11 for the RT-11 V4 Foreground/Background (FB) and Extended Memory (XM) monitors. It will not execute properly under the Single Job (SJ) or Base Line (BL) monitors. 1.0 PURPOSE Apart from providing the user with an incessant reminder of his/her life ticking away, MJCLOK has been designed as a vehicle to demonstrate the feasibility of multi-job use of a video display under RT-11. When programs execute concurrently, RT-11 precedes output to the shared console with a job identification text string. I'm sure this was designed by DEC as a convenience feature and is appreciated when there is infrequent output from more than just the Background job directed to the same printing terminal. However, the job identification string is only a liability to programmers attempting to create software that write to specific display screen zones on a video terminal. MJCLOK is intended to be a Foreground or System Job that can be initiated when RT-11 is bootstrapped and remain in execution until the computer is shut down. To be practical, such a job should use very little memory and central processor time, be completely memory resident, require little or no operator interaction - yet still be useful. This program solves the multi-job I/O problem and exhibits the above named features. Even the price is right! 2.0 PROGRAM DESCRIPTION The program executes a simple loop. It obtains the current time from the monitor, modifies the display fields on the screen that must be changed and uses the .TWAIT programmed request to have the monitor put it to sleep for a time interval (eg. one second). When it re-awakens the cycle repeats. MJCLOK is composed of five main routines: screen initialization, date-day-time display, keyboard command processor and a Background job watch routine. The last two are optional features that may be omitted to minimize program size. Page 2 2.1 Screen Initialization Routine This subroutine requests the terminal to allocate the non-scrolling display area to be used, erases it, and defines the display area characteristics. A program assembly time option allows for the selection of either double height - double width characters or simply double width only characters in the top line of the display area. If the optional message display facility (see section 2.4) has been requested, the line immediately below the date - time fields will be cleared. The remaining screen lines are not affected and are defined as the terminal's scrolling region. Screen initialization is performed once as the program is started and whenever called by the keyboard command processor and Background job watch routines. 2.2 Date-Day-Time Display Routine The time of day field is updated each time the program awakens. The date field is written to the terminal whenever the screen is initialized and upon time of day rollover. Each time the date field is written, the current day of the week is also calculated and written to the screen. These three fields are displayed in VT100 oversized characters. For double height - double width fields, the same text must be sent to both lines one and two of the screen. The user is given the option of having the date field formatted in year/month/day numbers or day-month-year alphanumerics. 2.3 Keyboard Command Processor After each pass through the display routines MJCLOK checks the terminal input buffer for a command from the user. Two single character commands are recognized. Future display field updates are suspended when an "S" is received. MJCLOK then becomes almost dormant. It simply looks for a new command each time it awakes and then goes back to sleep if one has not been received. This feature allows the RT-11 console to be temporarily shifted to a hardcopy terminal or another program to have full control of the VT100 display screen. Anytime the user types an "R", the screen is re-initialized, the display fields are repainted and normal field updating resumes. Page 3 2.4 Message Display Routine This is an optional feature selected before program assembly. It's purpose is to allow the user to request that various single line text strings be displayed at predefined times of day for specified time intervals. Additionally, message requests can be made for only on a specific day of the week, only for weekdays (Monday-Friday), only on weekends, and for every day of the week. The user created messages will be displayed on the line immediately below the date - time fields. 2.5 Job Watch Routine The Background job watch routine is another optional feature that must be selected before the program is assembled. It's purpose is to inhibit MJCLOK from interfering with the output written to the display by Background jobs that utilize the VT100's programmable features. An example of such a program is the KED editor which assumes that it has exclusive ownership of the video screen. 3.0 OUTPUT METHOD To defeat the job identification features of the RT-11 console terminal handler, MJCLOK passes all of it's output text through the Background job for display. All print requests execute as completion routines for the Background job. Thus, there is a clean RT-11 solution to an RT-11 problem. The output from the higher priority job gets preference over text written by the Background job, the output requests from MJCLOK are transparent to the Background job and terminal direct cursor addressing by multiple jobs is made practical. Unfortunately there is no programmed request or SYSLIB routine that directly allows a job to queue such a completion routine. The solution, demonstrated by subroutine DSPLAY in program MJCLOK, is to simulate an interrupt and then use the .SYNCH request to queue the printing of the text string. The switch of context to the Background job is made by the monitor when the job number argument for .SYNCH is defined as zero. There is always a Background job in RT-11, even if it's only the Keyboard monitor, so the request will never fail because it has been queued for a non-existent job. Output performed by a completion routine does not interfere with normal output of a Background job so it is possible to execute virtually any Background job while MJCLOK is running. Page 4 The use of this technique is quite straight forward as long as the following considerations are observed. First, the job queueing the request must make sure the last request completes before an attempt is made to re-use the same workspace. This restriction is common to all usage of the .SYNCH programmed request. The user must test the word at offset octal 14 of the .SYNCH workspace to be sure it is zero before re-using it. Second, each call to .SYNCH results in the new request being put at the head of the Background job completion routine queue. This can be a problem if the order of execution of the output requests is important. An example of this is the screen initialization routine, INISCN in MJCLOK, which executes a .TWAIT request after it has issued it's commands to the terminal. This insures that the terminal is in the proper state before the time and date text fields are output. The RT-11 console terminal handler has been designed to throw away characters that are to be echoed if the job's output buffer is full. If this happened, the user would notice that the occasional character typed as input at the keyboard was not echoed on the display. This is, to say the least, undesirable and shows that the output method is somewhat baud rate dependent. One solution is to limit the amount of text output by the high priority job. A most significant enhancement in version II, is to insert ASCII flow control characters into the output stream. Every text string issued by MJCLOK is preceded by XOFF and terminates with XON . User typed characters are temporarily stored in the terminal's own input buffer while MJCLOK updates the display. In conjunction with the above, the higher priority job should not send text to the Background job's output buffer until there is room for it. Unfortunately, RT-11 V4 does not provide easy access to the character count values associated with ring buffers in non-multiterminal configurations. 4.0 GENERATING MJCLOK A demonstration version of the program (MJCLOK.REL) has been provided, but the source code (MJCLOK.MAC) has been included for people who wish to take advantage of the optional features. An option is selected by defining the associated symbol at the beginning of the source file. This is accomplished by simply deleting the semi-colon that proceeds the symbol name. Page 5 Users of PDP-11 computers equipped with the extended instruction set will wish to define symbol EIS. This will invoke hardware multiplication and division instructions which will speed execution and slightly reduce program size. Non-Hardware dependent (NHD) code is generated as a default condition. Defining symbol YMD results in the date field being displayed as year, month and day two digit numbers seperated by slash characters. Thus the sub fields are displayed in order of decreasing significance, a standard now adopted for international acceptance. The American traditional date format is used if this symbol is not defined, but costs an aditional 52 words in program size. Two more conditional assembly options are available. They are the message display feature (symbol MSGDSP) and the Background job watch function (symbol JBWTCH). These options require more user involvement than the previous two in that code at the end of the source file may have to be modified. I will describe the message display option first. If the option has been selected, MJCLOK looks at the current element of an event table each time it awakens. The event code is tested against the current day of the week. If the test is passed, a check is made to determine if the present time of day falls within the time interval specified for the message. In that case, the message is written to the display. Failure to pass the event code test or on finding the present time to be later than the specified interval causes MJCLOK to advance the event table pointer. The structure of the event table and message strings are most easily understood by looking at the examples found at the end of the MJCLOK source file (begins at symbol EVNTBL:). The event table consists of a number of six word table elements. The table must be terminated by a zero word. The first word of each table entry defines the day of week conditions that the message should be displayed. A code of -3 specifies only on weekends, -2 every day of the week, -1 means only on weekdays and the positive numbers ranging from 1 to 7 select the appropriate day of the week (Sunday=day#1). Table element words 2 and 3 specify, in RT-11 internal time format, the time of day that the message display should be initiated. Words 4 and 5 specify the time that the message should be erased. Finally, word 6 is the address of the text string to be displayed. The number of elements in the table is restricted only by the number of clock ticks in a 24 hour period, the amount of memory one wants to allocate to MJCLOK and by the user's imagination. The event table must be terminated with a word containing a zero value. One word of caution, the elements of the event table should be sorted in order of advancing time of day. Page 6 User defined messages should have the same structure as the examples provided in the program. First, issue XOFF and the terminal's save cursor position command. The text should be routed one line above the scrolling region (symbol BGNSCL defines the first line of the scrolling region). The cursor position must be restored at the end of the message and the character XON inserted before the octal 200 byte string terminator. I've written MJCLOK assuming that the terminal will normally be used in 80 character per line format, although 132 character messages are feasible with the VT100 display. In the examples given, the text string is displayed in reverse video, centered on the line and two bell tones are output as the message is written. Remember any VT100 character attribute turned on within the message must also be turned off again within the same text string. Defining symbol JBWTCH selects the Background job watch function. This routine is the first code executed each time MJCLOK re-awakens. The filename of the current Background job is tested against each of the filenames stored in the MJCLOK job table. The table begins at symbol JOBTBL:. When a match is made MJCLOK goes back to sleep without updating the time display, and will execute only the job watch routine until the match fails. The first complete scan through the job table that does not result in a match causes the program to re-initialize the screen and resume normal output. Elements of the job table are three words in length and must be stored in RAD50 format. The first two words represent the job name, the last one is the job type. There is no defined limit to the number of data elements in the table, but it must terminate with a zero word. 5.0 USING MJCLOK Since the demonstration version (MJCLOK.REL) has been built to use NHD code it should execute properly on any RT-11 FB or XM system equipped with a VT100 terminal. Note that for the program to be useful, the line time clock (LTC) on the processor must be enabled. This program will execute as a Foreground or System job. In fact if it is relinked as a "SAV" file, it will run as a Background job. To start it type: .FRUN MJCLOK or .SRUN MJCLOK.REL Page 7 Please remember that you must turn off the automatic carriage return - line feed feature of the RT-11 console terminal handler. You accomplish this by entering the command: .SET TT: NOCRLF before executing MJCLOK. Failure to do so will result in the terminal appearing to occasionally misplace one of the display fields. Display field updating can be suspended with the "S" command and the display refreshed through use of the "R" command. Remember you must change job input context by preceding commands to MJCLOK with CONTROL_F or CONTROL_X. To return to addressing your input to the Background job type CONTROL_B. The RT-11 command SUSPEND will perform the same function as the "S" command when MJCLOK is executing as a Foreground job but RESUME, ofcourse, only continues rather than repaints the screen. If you have modified the source file, for example to change a display message or to add a new file specification to the job table, the program will have to be regenerated. Use the following RT-11 commands to do so. .MACRO MJCLOK.MAC .LINK/FOREGROUND MJCLOK The newly generated program can then be executed as described above. 6.0 ACKNOWLEDGEMENTS I would like to thank Peter Dodd of Saint Mary's University in Nova Scotia for suggesting the inclusion of terminal flow control commands and the option of single line double width character displays. The former makes MJCLOK much more useful to users with the slower LSI-11 & LSI-11/2 processors, the latter leaves an additional free line to the terminal's scrolling region. .TITLE MJCLOK .IDENT /V02 / ;April 25,1983 .NLIST CND,TOC .ENABLE LC ; ; Author: Stephen C. Cribbs ; Technical Services Branch ; Whiteshell Nuclear Research Establishment ; Atomic Energy of Canada Limited ; Pinawa, Manitoba ; Canada R0E1L0 ; ; The user must **** SET TT NOCRLF **** ; ---- ; CONDITIONAL ASSEMBLY SYMBOLS ; Remove the leading semi-colon to request inclusion of the feature EIS = 1 ;Use EIS hardware MUL & DIV YMD = 1 ;Year/month/day date format ; MSGDSP = 1 ;Display message lines JBWTCH = 1 ;Watch background job SINGLL = 1 ;Single line display .IF NDF YMD .GLOBL DATE ; EXTERNAL .ENDC ;NDF YMD .GLOBL TIMASC ; EXTERNAL .MCALL .DATE,.EXIT,.GTIM,.GTJB,.GVAL,.INTEN .MCALL .MTPS,.PRINT,.SYNCH,.TTINR,.TWAIT JSW = 44 ;Job Status Word CONFIG = 300 ;Offset to Monitor CONFIGURATION word .IF DF JBWTCH SYSGEN = 372 ;Offset to Monitor's SYSGEN word SYSJOB = 40000 ;System Job flag in SYSGEN word .ENDC ;DF JBWTCH START: .GVAL #EMT,#CONFIG ;Get Monitor's Configration word ROR R0 ;Rotate bit zero into carry BCS 1$ ;Jump if FB or XM monitor .PRINT #NORUN ;Tell user - we don't run as SJ .EXIT ;Abort 1$: .IF DF JBWTCH .GTJB #EMT,#JOBBLK,#0 ;Get BG job configuration info. MOV JOBBLK+10,R1 ;Locate pointer to impure area MOV 22(R1),R1 ;Create pointer to I.JID ADD #12,R1 ;Offset to I.NAME+2 (ignore device) .GVAL #EMT,#SYSGEN ;Get monitor's System Generation word BIT #SYSJOB,R0 ;Is this a system job monitor? BEQ 2$ ;Jump if not ADD #12,R1 ;If so, we require additional offset 2$: MOV R1,BJBNME ;Save as pointer to BG job file name CLRB JBMTCH ;-Init. flag .ENDC ;DF JBWTCH CLRB DFORCE ;-Init. flag .IF DF MSGDSP CLRB MSGCUR ;-Init. flag .ENDC ;DF MSGDSP CLRB STATE ;-Init. flag MOV #TBUF,R0 ;Point to time data buffer MOV R0,RTP ;Save pointer to reference time value CMP (R0)+,(R0)+ ;Point to next two word slot MOV R0,NTP ;Save as pointer to new time reading .GTIM #EMT,RTP ;Load reference (ensures proper date) CALL INISCN ;Set up display screen BIS #10100,@#JSW ;Enable real-time terminal input UPDATE: .GTIM #EMT,NTP ;Obtain current time of day MOV #TARGS,R5 ;Build arg. block pointer MOV NTP,2(R5) ;Load time of day value CALL TIMASC ;Call encode routine .IF NDF SINGLL JSR R5,COPYF ;Duplicate the ASCII string .WORD TSTRNG+10. .WORD TSTRNG+25. .WORD 8. .ENDC MOV #TSTRNG,R0 ;Point to string to be output MOV #TSYNCH,R1 ; and to the .SYNCH block to be used CALL DSPLAY ;Ask the BG job to display it for us TSTB DFORCE ;Look at Date force flag BNE 1$ ;Display Date & Day if not zero CMP @NTP,@RTP ;Compare H.O. time values BPL EVNTST ;Jump if no day roll over 1$: MOV #DARGS,R5 ;Build a pointer to argument block .IF DF YMD CALL ENCDTE ;Return date in Canadian format .IFF CALL DATE ;Return date in American format BISB #40,DSTRNG+13. ;Convert month name letters two BISB #40,DSTRNG+14. ; and three to lowercase .ENDC ;DF YMD .IF NDF SINGLL JSR R5,COPYF ;Duplicate the field .WORD DSTRNG+9. .WORD DSTRNG+38. .WORD 9. .ENDC .IF DF MSGDSP MOV #EVNTBL,ETP ;Initialize event table pointer .ENDC ;DF MSGDSP CALL DOW ;Determine the Day-of-week MOV DAYP,R1 ;Get day-of-week pointer ASL R1 ;Convert to byte offset ADD #DAYNT,R1 ;Create table pointer MOV @R1,2$ ;Load pointer to day-of-week string JSR R5,COPYF ;Store day-of-week in output string 2$: .BLKW 1 .WORD DSTRNG+23. .WORD 9. .IF NDF SINGLL JSR R5,COPYF ;Duplicate the field .WORD DSTRNG+23. .WORD DSTRNG+52. .WORD 9. .ENDC MOV #DSTRNG,R0 ;Point to string to be displayed MOV #DSYNCH,R1 ; and to the .SYNCH block to be used CALL DSPLAY ;Ask BG job to do our I/O INCB DFORCE ;Assume failure TST R0 ; but check anyway BNE EVNTST ;If it did fail, we'll try again CLRB DFORCE ; else report the success EVNTST: .IF DF MSGDSP MOV ETP,R0 ;Get pointer to event table TSTB MSGCUR ;Is there a message current? BNE 7$ ;Skip turn_on check if so MOV (R0)+,R1 ;Test first word of table entry BEQ LOKCMD ;If zero, reached end-of-table BMI 2$ ;Negative means a Day_type message SUB #2,R1 ;Convert day_of_week to program range BPL 1$ ;Jump if positive or zero MOV #6,R1 ;Perform a Sunday wrap-around 1$: CMP DAYP,R1 ;Is this a message for today? BEQ 4$ ;Yes, queue it up BR 9$ ;No, ignore it 2$: ADD #2,R1 ;Adjust code for testing ease BEQ 4$ ;Jump if it's an always message BPL 3$ ;Jump if a weekday message CMP #4,DAYP ;Is today part of a weekend? BHIS 9$ ;Look at next table entry if not BR 4$ ;Yes, prepare to display it 3$: CMP #4,DAYP ;Is today a weekday (mon.-fri.)? BLO 9$ ;Look at next table entry if not 4$: MOV NTP,R1 ;Point to new time value CMP (R0)+,(R1)+ ; H.O. table element - H.O. time BHI LOKCMD ;Jump if no high order match BLO 5$ ;Look at next table entry if time past CMP (R0)+,(R1)+ ;L.O. table element - L.O. time BHI LOKCMD ;Jump if haven't reached event yet 5$: MOV ETP,R0 ;Get another copy of table pointer MOV NTP,R1 ;Reset pointer to new time value CMP 6(R0),(R1)+ ;Test against H.O. turn_off time BHI 6$ ;Do nothing if still within interval BLO 7$ ;Else, Update pointer to next element CMP 10(R0),(R1)+ ;Test against L.O. turn-off time BLOS 9$ ;If time is past, look at next message 6$: MOV 12(R0),MSGPTR ;Preserve a pointer to message text INCB MSGCUR ;Set flag: Message current INCB MFORCE ;Cause message to be displayed BR 10$ ;Display it 7$: MOV NTP,R1 ;Reset pointer to new time value CMP 6(R0),(R1)+ ;Test against H.O. turn_off time BHI 10$ ;Do nothing if still within interval BLO 8$ ;Kill current message if time past CMP 10(R0),(R1)+ ;Test against L.O. turn-off time BHI 10$ ;Do nothing if still within interval 8$: CLRB MSGCUR ;Indicate message display period over MOV #MKILL,MSGPTR ;Queue the clean_up sequence INCB MFORCE ;Cause it to be written to terminal 9$: ADD #12.,ETP ;Update table pointer to next message 10$: TSTB MFORCE ;Request to display a message? BEQ LOKCMD ;Jump if not CLRB MFORCE ;Assume successful display attempt MOV MSGPTR,R0 ;Point to test string BEQ LOKCMD ;Preserve us from programming errors MOV #MSYNCH,R1 ; and to message .SYNCH block CALL DSPLAY ;Output to screen TST R0 ;Assume success, but check to be sure BEQ LOKCMD ;Jump if message actually displayed INCB MFORCE ;Set flag to call for new attempt .ENDC ;DF MSGDSP LOKCMD: .TTINR ;Look for a user command BCS 2$ ;Jump if no request received BIC #^C177,R0 ;Keep just the ASCII code CMPB #'S,R0 ;SUSPEND request? BNE 1$ ;Jump if not INCB STATE ;Flag the state change BR 2$ ;Process it 1$: CMPB #'R,R0 ;RESUME request? BNE 2$ ;Ignore invalid commands CLRB STATE ;Reset the state flag CALL INISCN ;Re-initialize the display 2$: .TWAIT #EMT,#INTVAL ;Sleep for a while TSTB STATE ;Are we supposed to be dormant? BNE LOKCMD ;Yup, go back to sleep .IF DF JBWTCH MOV #JOBTBL,R1 ;Point to first job in table 3$: TST @R1 ;Is the table empty? BEQ 5$ ;If so, skip the test MOV BJBNME,R0 ;Form pointer to current BG job name CMP (R0)+,@R1 ;H.O. file names match? BNE 4$ ;No, go check next table entry CMP (R0)+,2(R1) ;Yes, do L.O. file names match? BNE 4$ ;No, go check next table entry CMP (R0)+,4(R1) ;Do the file types match BNE 4$ ;No, go check next table entry INCB JBMTCH ;Yes, set flag: Job match found BR 2$ ; and now put ourself back to sleep 4$: ADD #6,R1 ;Update to next Job table entry BR 3$ ;Repeat the test procedure 5$: TSTB JBMTCH ;Was a match found last pass? BEQ 6$ ;Jump if not CALL INISCN ;Re-initialize the display CLRB JBMTCH ;Indicate we are back in operation .ENDC ;DF JBWTCH 6$: MOV NTP,R0 ;Prepare to swap time pointers MOV RTP,NTP ;Swap them MOV R0,RTP ;properly JMP UPDATE ;Update the display .SBTTL Utility Routines ; Subroutine COPYF -Copy a byte field COPYF: MOV (R5)+,R1 ;Load address of source field MOV (R5)+,R2 ; and destination field address MOV (R5)+,R0 ; and the number of bytes to copy 1$: MOVB (R1)+,(R2)+ ;Copy a byte .IF DF EIS SOB R0,1$ ;Count down # bytes left to move .IFF DEC R0 ;+Count down # bytes left to move BNE 1$ ;+NHD equivalent of SOB instruction .ENDC ;DF EIS RTS R5 ;Return to caller ; Subroutine DSPLAY -Text string ouput rouitne DSPLAY: TST 14(R1) ;Be sure that .SYNCH block is free BNE 1$ ;Quick exit if not MOV R0,10(R1) ;Preserve address of display string CLR R0 ;Now indicate queue attempt success MOV R1,SBNME ;Load pointer to the .SYNCH block MOV @SP,-(SP) ;-Make room on stack CLR 2(SP) ;-Fake interrupt .MTPS #340 ;-Priority = 7 .INTEN 0 ;;;-Enter System state .SYNCH SBNME ;;Become BG job completion routine RTI ;Ignore failures (Doesn't everyone??) .PRINT ;Output the text string 1$: RETURN ;to caller ; Subroutine INISCN -Initialize display screen INISCN: MOV #INISTR,R0 ;Point to initialization string MOV #ISYNCH,R1 ; and to .SYNCH block CALL DSPLAY ;Get BG job to talk to terminal for us INCB DFORCE ;Insist Date-Day string be displayed .IF DF MSGDSP TSTB MSGCUR ;Is there a message to be displayed BEQ 1$ ;Jump if not INCB MFORCE ; and the current message 1$: .ENDC ;DF MSGDSP .TWAIT #EMT,#INTVAL ;Sleep for a while RETURN ;to caller ; Subroutine DOW -Determine day_of_week DOW: .DATE ;Get current date from monitor MOV R0,R1 ;Take a copy for days calculation BEQ 7$ ;Flag no-date situation MOV #^C37,R2 ;Construct a useful field mask ASL R1 ;+Shift days value into high byte ASL R1 ;+ ASL R1 ;+ SWAB R1 ;Get days value into low byte BIC R2,R1 ;Isolate days value MOV R1,-(SP) ;Preserve it on the stack MOV R0,R1 ;Take a copy of date for month calc. SWAB R1 ;Get month value in low byte ASR R1 ;+Right justify it ASR R1 ;+ BIC R2,R1 ;Isolate months value MOV R1,-(SP) ;Preserve it on the stack BIC R2,R0 ;Isolate year value (since 1972) MOV R0,-(SP) ;Preserve it on the stack .IF DF EIS MOV @SP,R1 ;Copy years value from stack MUL #365.,R1 ;Convert years to days (since 1972) .IFF MOV @SP,R0 ;Copy years value from stack CLR R1 ;Convert years to days (since 1972) 1$: ADD #365.,R1 ;+ simple NHD multiply DEC R0 ;+ years * 365. days/year BNE 1$ ;+ .ENDC ;DF EIS MOV @SP,R0 ;Remove years value from stack ASR R0 ;+Divide by four to get the ASR R0 ;+ number of extra days in leap years ADD R0,R1 ;Sum with days (since 1972) MOV (SP)+,R0 ;Is this year 1972? BEQ 2$ ;Yes, (it's a leap year) BIT #3,R0 ;No, but is this a leap year? BNE 2$ ;Jump if not CMP @SP,#2 ;Is month later than February? BGT 2$ ;Jump if so DEC R1 ;Subtract one from accumulated sum 2$: MOV #NDPM,R3 ;Get pointer to Days/Month table MOV (SP)+,R2 ;Get months value from stack 3$: DEC R2 ;Count it down BEQ 4$ ;Skip from loop when zero MOVB (R3)+,R0 ;Obtain # of days in a month ADD R0,R1 ;Add to accumulated sum BR 3$ ;Loop back for another month 4$: ADD (SP)+,R1 ;Include days value in sum .IF DF EIS CLR R0 ;Zero high register for divide DIV #7,R0 ;Determine the # of weeks since 1972 .IFF MOV #7,R0 ;Determine the # of weeks since 1972 5$: SUB R0,R1 ;+ simple NHD divide BPL 5$ ;+ total # days / 7 days per week ADD R0,R1 ;+ we only want the remainder .ENDC ;DF EIS SUB #2,R1 ;Adjust to make Monday=day#1 BGE 6$ ;Catch negative table pointers ADD #7,R1 ; and perform fix-up 6$: MOV R1,DAYP ;Store as a pointer to day_of_week RETURN ;to caller 7$: MOV #7.,DAYP ;Indicate no valid date in monitor RETURN ;to caller .IF DF YMD ; Subroutine ENCDTE -Encode date ; (Canadian Government format) ENCDTE: TST (R5)+ ;Skip over the FORTRAN argument count MOV @R5,R3 ;Save address of output text buffer .DATE ;Get the current date from the monitor MOV R0,-(SP) ;Preserve it BEQ 3$ ;Flag no-date situation MOV #^C37,R4 ;Construct a useful field mask BIC R4,R0 ;Isolate year value (since 1972) ADD #72.,R0 ;Convert to years since 1900 CALL CVT10 ;Encode the years value MOVB #'/,(R3)+ ;Insert field delimiter MOV @SP,R0 ;Take a copy of date for months calc. SWAB R0 ;Get month value in low byte ASR R0 ;+Right justify it ASR R0 ;+ BIC R4,R0 ;Isolate months value CMP R0,#10. ;Two digit number? BGE 1$ ;Yup, no fix up necessary MOVB #'0,(R3)+ ;Insert an ASCII zero character 1$: CALL CVT10 ;Encode the months value MOVB #'/,(R3)+ ;Insert field delimiter MOV (SP)+,R0 ;Take a copy for days calculation ASL R0 ;+Shift days value into high byte ASL R0 ;+ ASL R0 ;+ SWAB R0 ;Get days value into low byte BIC R4,R0 ;Isolate days value CMP R0,#10. ;Two digit number? BGE 2$ ;Yup, no fix up necessary MOVB #'0,(R3)+ ;Insert an ASCII zero character 2$: CALL CVT10 ;Encode the day value RETURN ;to user 3$: MOV #NODATE,R0 ;Point to Error condition string 4$: MOVB (R0)+,(R3)+ ;Copy a character to user's buffer BNE 4$ ;Loop till null located TST (SP)+ ;Clear off the stack RETURN ;to user ; Subroutine CVT10 ; Inputs: - R0 contains the number to be encoded ; R3 points to user's ASCII buffer for output CVT10: MOV #10.,R2 ;Do base 10 encode CVT: MOV R0,R1 ;Copy number to convert .IF DF EIS CLR R0 DIV R2,R0 ;Divide by ten .IFF MOV #-1,R0 ;+NHD algorithm to divide DIV: INC R0 ;+ the value in registers R0 & R1 SUB R2,R1 ;+ by the value (10) in R2 BPL DIV ;+The quotient will be left in R0 ADD R2,R1 ;+ the remainder will be left in R1 .ENDC ;DF EIS MOV R1,-(SP) ;Save remainder TST R0 ;Anything left to convert? BEQ 1$ ;If EQ no CALL CVT ;Else recur 1$: MOVB (SP)+,@R3 ;Move binary byte to output area BISB #'0,(R3)+ ;And make ASCII RETURN .ENDC ;DF YMD .SBTTL Workspace & Data Storage ISYNCH: .BLKW 1 ;+Initialization .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values TSYNCH: .BLKW 1 ;+Time .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values DSYNCH: .BLKW 1 ;+Date .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values .IF DF MSGDSP MSYNCH: .BLKW 1 ;+Message .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values .ENDC ;DF MSGDSP SBNME: .BLKW 1 ;Pointer to a .SYNCH block TARGS: .WORD 2 ;TIMASC argument block .BLKW 1 .WORD TSTRNG+10. DARGS: .WORD 1 ;DATE argument block .WORD DSTRNG+9. EMT: .BLKW 5 ;Monitor work space INTVAL: .WORD 0,60. ;Sleep time interval (ticks) .IF DF JBWTCH JOBBLK: ;-.GTJB work area (12. words) BJBNME: .BLKW 1 ;-Pointer to I.NAME in BG impure area .ENDC ;DF JBWTCH NTP: .BLKW 1 ;-New time pointer RTP: .BLKW 1 ;-Reference time pointer TBUF: .BLKW 4 ;-Time data buffers (two words each) DAYP: .BLKW 1 ;-Day pointer ETP: .BLKW 1 ;-Event table pointer .IF DF MSGDSP MSGPTR: .BLKW 1 ;-Point to current message string MSGCUR: .BLKB 1 ;-Indicates when there is an message active MFORCE: .BLKB 1 ;-MESSAGE force display flag .IFF .BLKW 2 ;- .ENDC ;DF MSGDSP DFORCE: .BLKB 1 ;-DATE force display flag STATE: .BLKB 1 ;-Program state [0=Active, >0=Dormant] .IF DF JBWTCH JBMTCH: .BLKB 1 ;FLAG: matched a job from JOBTBL .ENDC ;DF JBWTCH .EVEN .NLIST BEX NDPM: .BYTE 31.,28.,31.,30.,31.,30.,31.,31.,30.,31.,30.,31 DAYNT: .WORD MON,TUE,WED,THUR,FRI,SAT,SUN,NODATE MON: .ASCIZ / Monday / TUE: .ASCIZ / Tuesday / WED: .ASCIZ /Wednesday/ THUR: .ASCIZ /Thursday / FRI: .ASCIZ / Friday / SAT: .ASCIZ /Saturday / SUN: .ASCIZ / Sunday / NODATE: .ASCIZ /No date / .IF DF SINGLL BGNSCL = '2 ;First line of scrolling region .IFF BGNSCL = '3 ;First line of scrolling region .ENDC .IF DF MSGDSP BGNSCL = BGNSCL+1 ;First line of scrolling region .ENDC ;DF MSGDSP INISTR: .ASCII <23><33>/7/<33>/[//;80H/<33>/[1J/ .ASCII <33>/[//;24r/<33>/[1;1H/ .IF DF SINGLL .ASCII <33>/#6/ .IFF .ASCII <33>/#3/<33>/D/<33>/#4/ .ENDC .ASCII <33>/8/<21><200> TSTRNG: .ASCII <23><33>/7/<33>/[1;30H / .IF NDF SINGLL .ASCII <33>/[2;30H / .ENDC .ASCII <33>/8/<21><200> DSTRNG: .ASCII <23><33>/7/<33>/[1;1H / <33>/[06C / .IF NDF SINGLL .ASCII <33>/[2;1H / <33>/[06C / .ENDC .ASCII <33>/8/<21><200> NORUN: .ASCIZ /This program is not designed to execute under the SJ Monitor./ .EVEN .IIF DF JBWTCH ! MSGDSP, .IF DF JBWTCH JOBTBL: .RAD50 /KED/ ;+List of files where MJCLOK must be dormant .RAD50 / / ;+ .RAD50 /SAV/ ;+ .WORD 0 ;+End of JOBTBL .ENDC ;DF JBWTCH .IF DF MSGDSP EVNTBL: .WORD -3,32,122120,66,15620,MGDAY ; 8:05 - 16:25 Good day .WORD -2,32,122120,33,30360,MGM ; 8:05 - 8:15 Good morning .WORD 2,33,30360,33,73500,MGWND ; 8:15 - 8:20 Good weekend? .WORD -1,40,127460,42,7300,MCOF ; 9:55 - 10:20 Coffee time .WORD -1,47,140,52,2720,MLUN ;11:50 - 12:45 Lunch time .WORD -1,61,24760,62,104600,MCOF ;14:55 - 15:20 Coffee time .WORD 6,63,13040,64,136000,MBKUP ;15:30 - 16:00 Backup system .WORD -2,66,15620,110,101200,MGE ;16:25 - 22:00 Good evening .WORD 0 ;End-of-list MGDAY: .ASCII <23><33>/7/<33>/[//;29H/ .ASCII <33>/[7mHave a good day, eh!/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MGM: .ASCII <23><33>/7/<33>/[//;33H/<33>/[7mGood morning/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MGWND: .ASCII <23><33>/7/<33>/[//;29H/ .ASCII <33>/[7mHad a good weekend?/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MCOF: .ASCII <23><33>/7/<33>/[//;33H/<33>/[7mCoffee time/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MLUN: .ASCII <23><33>/7/<33>/[//;34H/<33>/[7mLunch time/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MBKUP: .ASCII <23><33>/7/<33>/[//;26H/ .ASCII <33>/[7mTime to backup the system/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MGE: .ASCII <23><33>/7/<33>/[//;33H/<33>/[7mGood evening/ .ASCII <33>/[0m/<7><7><33>/8/<21><200> MKILL: .ASCII <23><33>/7/<33>/[//;1H/ .ASCII <33>/[0K/<7><33>/8/<21><200> .EVEN .ENDC ;DF MSGDSP .END START  Tq 5"0 Ae 5@e w7777(7$7 U@$ z Vw  n/TT+ tw  |F < eHww ^  w T (  N 73T -7e %/%*$9$6, ,7 ,, 7~}e rs 7mf WESGR7; #t  $ 1$1$e `77w2AB@R~ 1 w6 & Ε,e  l,} 鈇 ~xs 4 @f @f@&Wpm `5# < `e rew C &%AeH Hӕ/ A ӕ0 ,ӕ/ A ӕ0    rf  0<Xblv Monday Tuesday WednesdayThursday Friday Saturday Sunday No date 7#3D#487  87    8This program is not designed to execute under the SJ Monitor.EvP6P0 0@w. 0"Y'`*|1)2Y3 46H7Have a good day, eh!87Good morning87Had a good weekend?87Coffee time87Lunch time87Time to backup the system87Good evening878 A@A 0 B <CEՕ:eËe:/ՐՐ2& 05 <  @ C   @&% 5"6(=JR Z[^`kpqt||H  ( tJVXcg< $X%b&l'v()*+ .Y|Y .TITLE MJCLOK .IDENT /V02 / ;April 25,1983 .NLIST CND,TOC .ENABLE LC ; ; Author: Stephen C. Cribbs ; Technical Services Branch ; Whiteshell Nuclear Research Establishment ; Atomic Energy of Canada Limited ; Pinawa, Manitoba ; Canada R0E1L0 ; ; The user must **** SET TT NOCRLF **** ; ---- ; CONDITIONAL ASSEMBLY SYMBOLS ; Remove the leading semi-colon to request inclusion of the feature EIS = 1 ;Use EIS hardware MUL & DIV YMD = 1 ;Year/month/day date format ; MSGDSP = 1 ;Display message lines JBWTCH = 1 ;Watch background job SINGLL = 1 ;Single line display .IF NDF YMD .GLOBL DATE ; EXTERNAL .ENDC ;NDF YMD .GLOBL TIMASC ; EXTERNAL .MCALL .DATE,.EXIT,.GTIM,.GTJB,.GVAL,.INTEN .MCALL .MTPS,.PRINT,.SYNCH,.TTINR,.TWAIT JSW = 44 ;Job Status Word CONFIG = 300 ;Offset to Monitor CONFIGURATION word .IF DF JBWTCH SYSGEN = 372 ;Offset to Monitor's SYSGEN word SYSJOB = 40000 ;System Job flag in SYSGEN word .ENDC ;DF JBWTCH START: .GVAL #EMT,#CONFIG ;Get Monitor's Configration word ROR R0 ;Rotate bit zero into carry BCS 1$ ;Jump if FB or XM monitor .PRINT #NORUN ;Tell user - we don't run as SJ .EXIT ;Abort 1$: .IF DF JBWTCH .GTJB #EMT,#JOBBLK,#0 ;Get BG job configuration info. MOV JOBBLK+10,R1 ;Locate pointer to impure area MOV 22(R1),R1 ;Create pointer to I.JID ADD #12,R1 ;Offset to I.NAME+2 (ignore device) .GVAL #EMT,#SYSGEN ;Get monitor's System Generation word BIT #SYSJOB,R0 ;Is this a system job monitor? BEQ 2$ ;Jump if not ADD #12,R1 ;If so, we require additional offset 2$: MOV R1,BJBNME ;Save as pointer to BG job file name CLRB JBMTCH ;-Init. flag .ENDC ;DF JBWTCH CLRB DFORCE ;-Init. flag .IF DF MSGDSP CLRB MSGCUR ;-Init. flag .ENDC ;DF MSGDSP CLRB STATE ;-Init. flag MOV #TBUF,R0 ;Point to time data buffer MOV R0,RTP ;Save pointer to reference time value CMP (R0)+,(R0)+ ;Point to next two word slot MOV R0,NTP ;Save as pointer to new time reading .GTIM #EMT,RTP ;Load reference (ensures proper date) CALL INISCN ;Set up display screen BIS #10100,@#JSW ;Enable real-time terminal input UPDATE: .GTIM #EMT,NTP ;Obtain current time of day MOV #TARGS,R5 ;Build arg. block pointer MOV NTP,2(R5) ;Load time of day value CALL TIMASC ;Call encode routine .IF NDF SINGLL JSR R5,COPYF ;Duplicate the ASCII string .WORD TSTRNG+10. .WORD TSTRNG+25. .WORD 8. .ENDC MOV #TSTRNG,R0 ;Point to string to be output MOV #TSYNCH,R1 ; and to the .SYNCH block to be used CALL DSPLAY ;Ask the BG job to display it for us TSTB DFORCE ;Look at Date force flag BNE 1$ ;Display Date & Day if not zero CMP @NTP,@RTP ;Compare H.O. time values BPL EVNTST ;Jump if no day roll over 1$: MOV #DARGS,R5 ;Build a pointer to argument block .IF DF YMD CALL ENCDTE ;Return date in Canadian format .IFF CALL DATE ;Return date in American format BISB #40,DSTRNG+13. ;Convert month name letters two BISB #40,DSTRNG+14. ; and three to lowercase .ENDC ;DF YMD .IF NDF SINGLL JSR R5,COPYF ;Duplicate the field .WORD DSTRNG+9. .WORD DSTRNG+38. .WORD 9. .ENDC .IF DF MSGDSP MOV #EVNTBL,ETP ;Initialize event table pointer .ENDC ;DF MSGDSP CALL DOW ;Determine the Day-of-week MOV DAYP,R1 ;Get day-of-week pointer ASL R1 ;Convert to byte offset ADD #DAYNT,R1 ;Create table pointer MOV @R1,2$ ;Load pointer to day-of-week string JSR R5,COPYF ;Store day-of-week in output string 2$: .BLKW 1 .WORD DSTRNG+23. .WORD 9. .IF NDF SINGLL JSR R5,COPYF ;Duplicate the field .WORD DSTRNG+23. .WORD DSTRNG+52. .WORD 9. .ENDC MOV #DSTRNG,R0 ;Point to string to be displayed MOV #DSYNCH,R1 ; and to the .SYNCH block to be used CALL DSPLAY ;Ask BG job to do our I/O INCB DFORCE ;Assume failure TST R0 ; but check anyway BNE EVNTST ;If it did fail, we'll try again CLRB DFORCE ; else report the success EVNTST: .IF DF MSGDSP MOV ETP,R0 ;Get pointer to event table TSTB MSGCUR ;Is there a message current? BNE 7$ ;Skip turn_on check if so MOV (R0)+,R1 ;Test first word of table entry BEQ LOKCMD ;If zero, reached end-of-table BMI 2$ ;Negative means a Day_type message SUB #2,R1 ;Convert day_of_week to program range BPL 1$ ;Jump if positive or zero MOV #6,R1 ;Perform a Sunday wrap-around 1$: CMP DAYP,R1 ;Is this a message for today? BEQ 4$ ;Yes, queue it up BR 9$ ;No, ignore it 2$: ADD #2,R1 ;Adjust code for testing ease BEQ 4$ ;Jump if it's an always message BPL 3$ ;Jump if a weekday message CMP #4,DAYP ;Is today part of a weekend? BHIS 9$ ;Look at next table entry if not BR 4$ ;Yes, prepare to display it 3$: CMP #4,DAYP ;Is today a weekday (mon.-fri.)? BLO 9$ ;Look at next table entry if not 4$: MOV NTP,R1 ;Point to new time value CMP (R0)+,(R1)+ ; H.O. table element - H.O. time BHI LOKCMD ;Jump if no high order match BLO 5$ ;Look at next table entry if time past CMP (R0)+,(R1)+ ;L.O. table element - L.O. time BHI LOKCMD ;Jump if haven't reached event yet 5$: MOV ETP,R0 ;Get another copy of table pointer MOV NTP,R1 ;Reset pointer to new time value CMP 6(R0),(R1)+ ;Test against H.O. turn_off time BHI 6$ ;Do nothing if still within interval BLO 7$ ;Else, Update pointer to next element CMP 10(R0),(R1)+ ;Test against L.O. turn-off time BLOS 9$ ;If time is past, look at next message 6$: MOV 12(R0),MSGPTR ;Preserve a pointer to message text INCB MSGCUR ;Set flag: Message current INCB MFORCE ;Cause message to be displayed BR 10$ ;Display it 7$: MOV NTP,R1 ;Reset pointer to new time value CMP 6(R0),(R1)+ ;Test against H.O. turn_off time BHI 10$ ;Do nothing if still within interval BLO 8$ ;Kill current message if time past CMP 10(R0),(R1)+ ;Test against L.O. turn-off time BHI 10$ ;Do nothing if still within interval 8$: CLRB MSGCUR ;Indicate message display period over MOV #MKILL,MSGPTR ;Queue the clean_up sequence INCB MFORCE ;Cause it to be written to terminal 9$: ADD #12.,ETP ;Update table pointer to next message 10$: TSTB MFORCE ;Request to display a message? BEQ LOKCMD ;Jump if not CLRB MFORCE ;Assume successful display attempt MOV MSGPTR,R0 ;Point to test string BEQ LOKCMD ;Preserve us from programming errors MOV #MSYNCH,R1 ; and to message .SYNCH block CALL DSPLAY ;Output to screen TST R0 ;Assume success, but check to be sure BEQ LOKCMD ;Jump if message actually displayed INCB MFORCE ;Set flag to call for new attempt .ENDC ;DF MSGDSP LOKCMD: .TTINR ;Look for a user command BCS 2$ ;Jump if no request received BIC #^C177,R0 ;Keep just the ASCII code CMPB #'S,R0 ;SUSPEND request? BNE 1$ ;Jump if not INCB STATE ;Flag the state change BR 2$ ;Process it 1$: CMPB #'R,R0 ;RESUME request? BNE 2$ ;Ignore invalid commands CLRB STATE ;Reset the state flag CALL INISCN ;Re-initialize the display 2$: .TWAIT #EMT,#INTVAL ;Sleep for a while TSTB STATE ;Are we supposed to be dormant? BNE LOKCMD ;Yup, go back to sleep .IF DF JBWTCH MOV #JOBTBL,R1 ;Point to first job in table 3$: TST @R1 ;Is the table empty? BEQ 5$ ;If so, skip the test MOV BJBNME,R0 ;Form pointer to current BG job name CMP (R0)+,@R1 ;H.O. file names match? BNE 4$ ;No, go check next table entry CMP (R0)+,2(R1) ;Yes, do L.O. file names match? BNE 4$ ;No, go check next table entry CMP (R0)+,4(R1) ;Do the file types match BNE 4$ ;No, go check next table entry INCB JBMTCH ;Yes, set flag: Job match found BR 2$ ; and now put ourself back to sleep 4$: ADD #6,R1 ;Update to next Job table entry BR 3$ ;Repeat the test procedure 5$: TSTB JBMTCH ;Was a match found last pass? BEQ 6$ ;Jump if not CALL INISCN ;Re-initialize the display CLRB JBMTCH ;Indicate we are back in operation .ENDC ;DF JBWTCH 6$: MOV NTP,R0 ;Prepare to swap time pointers MOV RTP,NTP ;Swap them MOV R0,RTP ;properly JMP UPDATE ;Update the display .SBTTL Utility Routines ; Subroutine COPYF -Copy a byte field COPYF: MOV (R5)+,R1 ;Load address of source field MOV (R5)+,R2 ; and destination field address MOV (R5)+,R0 ; and the number of bytes to copy 1$: MOVB (R1)+,(R2)+ ;Copy a byte .IF DF EIS SOB R0,1$ ;Count down # bytes left to move .IFF DEC R0 ;+Count down # bytes left to move BNE 1$ ;+NHD equivalent of SOB instruction .ENDC ;DF EIS RTS R5 ;Return to caller ; Subroutine DSPLAY -Text string ouput rouitne DSPLAY: TST 14(R1) ;Be sure that .SYNCH block is free BNE 1$ ;Quick exit if not MOV R0,10(R1) ;Preserve address of display string CLR R0 ;Now indicate queue attempt success MOV R1,SBNME ;Load pointer to the .SYNCH block MOV @SP,-(SP) ;-Make room on stack CLR 2(SP) ;-Fake interrupt .MTPS #340 ;-Priority = 7 .INTEN 0 ;;;-Enter System state .SYNCH SBNME ;;Become BG job completion routine RTI ;Ignore failures (Doesn't everyone??) .PRINT ;Output the text string 1$: RETURN ;to caller ; Subroutine INISCN -Initialize display screen INISCN: MOV #INISTR,R0 ;Point to initialization string MOV #ISYNCH,R1 ; and to .SYNCH block CALL DSPLAY ;Get BG job to talk to terminal for us INCB DFORCE ;Insist Date-Day string be displayed .IF DF MSGDSP TSTB MSGCUR ;Is there a message to be displayed BEQ 1$ ;Jump if not INCB MFORCE ; and the current message 1$: .ENDC ;DF MSGDSP .TWAIT #EMT,#INTVAL ;Sleep for a while RETURN ;to caller ; Subroutine DOW -Determine day_of_week DOW: .DATE ;Get current date from monitor MOV R0,R1 ;Take a copy for days calculation BEQ 7$ ;Flag no-date situation MOV #^C37,R2 ;Construct a useful field mask ASL R1 ;+Shift days value into high byte ASL R1 ;+ ASL R1 ;+ SWAB R1 ;Get days value into low byte BIC R2,R1 ;Isolate days value MOV R1,-(SP) ;Preserve it on the stack MOV R0,R1 ;Take a copy of date for month calc. SWAB R1 ;Get month value in low byte ASR R1 ;+Right justify it ASR R1 ;+ BIC R2,R1 ;Isolate months value MOV R1,-(SP) ;Preserve it on the stack BIC R2,R0 ;Isolate year value (since 1972) MOV R0,-(SP) ;Preserve it on the stack .IF DF EIS MOV @SP,R1 ;Copy years value from stack MUL #365.,R1 ;Convert years to days (since 1972) .IFF MOV @SP,R0 ;Copy years value from stack CLR R1 ;Convert years to days (since 1972) 1$: ADD #365.,R1 ;+ simple NHD multiply DEC R0 ;+ years * 365. days/year BNE 1$ ;+ .ENDC ;DF EIS MOV @SP,R0 ;Remove years value from stack ASR R0 ;+Divide by four to get the ASR R0 ;+ number of extra days in leap years ADD R0,R1 ;Sum with days (since 1972) MOV (SP)+,R0 ;Is this year 1972? BEQ 2$ ;Yes, (it's a leap year) BIT #3,R0 ;No, but is this a leap year? BNE 2$ ;Jump if not CMP @SP,#2 ;Is month later than February? BGT 2$ ;Jump if so DEC R1 ;Subtract one from accumulated sum 2$: MOV #NDPM,R3 ;Get pointer to Days/Month table MOV (SP)+,R2 ;Get months value from stack 3$: DEC R2 ;Count it down BEQ 4$ ;Skip from loop when zero MOVB (R3)+,R0 ;Obtain # of days in a month ADD R0,R1 ;Add to accumulated sum BR 3$ ;Loop back for another month 4$: ADD (SP)+,R1 ;Include days value in sum .IF DF EIS CLR R0 ;Zero high register for divide DIV #7,R0 ;Determine the # of weeks since 1972 .IFF MOV #7,R0 ;Determine the # of weeks since 1972 5$: SUB R0,R1 ;+ simple NHD divide BPL 5$ ;+ total # days / 7 days per week ADD R0,R1 ;+ we only want the remainder .ENDC ;DF EIS SUB #2,R1 ;Adjust to make Monday=day#1 BGE 6$ ;Catch negative table pointers ADD #7,R1 ; and perform fix-up 6$: MOV R1,DAYP ;Store as a pointer to day_of_week RETURN ;to caller 7$: MOV #7.,DAYP ;Indicate no valid date in monitor RETURN ;to caller .IF DF YMD ; Subroutine ENCDTE -Encode date ; (Canadian Government format) ENCDTE: TST (R5)+ ;Skip over the FORTRAN argument count MOV @R5,R3 ;Save address of output text buffer .DATE ;Get the current date from the monitor MOV R0,-(SP) ;Preserve it BEQ 3$ ;Flag no-date situation MOV #^C37,R4 ;Construct a useful field mask BIC R4,R0 ;Isolate year value (since 1972) ADD #72.,R0 ;Convert to years since 1900 CALL CVT10 ;Encode the years value MOVB #'/,(R3)+ ;Insert field delimiter MOV @SP,R0 ;Take a copy of date for months calc. SWAB R0 ;Get month value in low byte ASR R0 ;+Right justify it ASR R0 ;+ BIC R4,R0 ;Isolate months value CMP R0,#10. ;Two digit number? BGE 1$ ;Yup, no fix up necessary MOVB #'0,(R3)+ ;Insert an ASCII zero character 1$: CALL CVT10 ;Encode the months value MOVB #'/,(R3)+ ;Insert field delimiter MOV (SP)+,R0 ;Take a copy for days calculation ASL R0 ;+Shift days value into high byte ASL R0 ;+ ASL R0 ;+ SWAB R0 ;Get days value into low byte BIC R4,R0 ;Isolate days value CMP R0,#10. ;Two digit number? BGE 2$ ;Yup, no fix up necessary MOVB #'0,(R3)+ ;Insert an ASCII zero character 2$: CALL CVT10 ;Encode the day value RETURN ;to user 3$: MOV #NODATE,R0 ;Point to Error condition string 4$: MOVB (R0)+,(R3)+ ;Copy a character to user's buffer BNE 4$ ;Loop till null located TST (SP)+ ;Clear off the stack RETURN ;to user ; Subroutine CVT10 ; Inputs: - R0 contains the number to be encoded ; R3 points to user's ASCII buffer for output CVT10: MOV #10.,R2 ;Do base 10 encode CVT: MOV R0,R1 ;Copy number to convert .IF DF EIS CLR R0 DIV R2,R0 ;Divide by ten .IFF MOV #-1,R0 ;+NHD algorithm to divide DIV: INC R0 ;+ the value in registers R0 & R1 SUB R2,R1 ;+ by the value (10) in R2 BPL DIV ;+The quotient will be left in R0 ADD R2,R1 ;+ the remainder will be left in R1 .ENDC ;DF EIS MOV R1,-(SP) ;Save remainder TST R0 ;Anything left to convert? BEQ 1$ ;If EQ no CALL CVT ;Else recur 1$: MOVB (SP)+,@R3 ;Move binary byte to output area BISB #'0,(R3)+ ;And make ASCII RETURN .ENDC ;DF YMD .SBTTL Workspace & Data Storage ISYNCH: .BLKW 1 ;+Initialization .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values TSYNCH: .BLKW 1 ;+Time .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values DSYNCH: .BLKW 1 ;+Date .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values .IF DF MSGDSP MSYNCH: .BLKW 1 ;+Message .SYNCH block .WORD 0 ;+Execute as a background routine .BLKW 3 ;+ .WORD -1,0 ;+Monitor must be values .ENDC ;DF MSGDSP SBNME: .BLKW 1 ;Pointer to a .SYNCH block TARGS: .WORD 2 ;TIMASC argument block .BLKW 1 .WORD TSTRNG+10. DARGS: .WORD 1 ;DATE argument block .WORD DSTRNG+9. EMT: .BLKW 5 ;Monitor work space INTVAL: .WORD 0,60. ;Sleep time interval (ticks) .IF DF JBWTCH JOBBLK: ;-.GTJB work area (12. words) BJBNME: .BLKW 1 ;-Pointer to I.NAME in BG impure area .ENDC ;DF JBWTCH NTP: .BLKW 1 ;-New time pointe0E   EUf>Be @ &f@  & &f ^   쇗 N      & d & R J B x& ,BC (&  & && = e E e E U$6E   EUf>Be @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$*^D www8w.1w0w1v sBa&feBJ%@& fEA  w A`DA!A"-A#QA$bA&A'A(A*A+_ HA_ H A_ HA_ HA_ HA_ HB_ HB_ H`C_ HC_ HC_ HA_ HA_ HA_ HA_ H|B_ HB_ HB_ H$A_ H$B_ H$.B_ H$B_ H$C_ H$VC_ H$pC_ H*A_ H*B_ H*B_ H*B_ H*ZC_ H*lC_ H*zC_ H0A_ H0B_ H0B_ H02B_ H0B_ H04C_ H0BC_ H6A_ H6B_ H6DB_ H6pB_ H6C_ H6@C_ H6C B/ 5N 8  Enter TEMPLATE file name: 8 7X5 wBackut RDM110582<9 U p8 x Name for BACKUP file is: 8< ^ 28 : Number entries in file: 8 & E v@`7\247(2e"27p2r  7R2e 9~>2  ( $2 u   v hCREATE-fatal-backup file creation error! @!&f ѕ0 ` B8.$w Lw 'Nw Pw vcRw l Tw b'd w Nw Dw :w 0w &?w w @ Eѕ*C&D &E r   " •0 • ?0123456789ABCDEFf&ff; v .b |_U; 5 b > u VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  VwDBSLDR-fatal-illegal TEMPLATE wDBSLDR-fatal-cannot read TEMPLATEwDBSLDR-fatal-missing FIELD definitionswTDBSLDR-fatal-missing KEY defibtions(5  "E"te " $0 `  H J  2  4   &f&f0 nE5 5 Emn0Q~ &f&f:0 !E5 Em0U~ 0E   &&f/ D *E5 5  Dm&~ &&f/ E5 5 fDm&T~ ( ~與8/E  d5 @ fA  `B~7 df&A   D  B~ M " B`~2@ E?tEu@5 @5 7 )W   &f@e  w|  w7Hf,& T3A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7$7 w|? Bw@BBaEBaEf j  ? ?-   ?5*>A E@~='>@E  @l|=%>@)>5f&fP& *    U `ߋ*&   >7w 7w 7w &@ f V&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ g((& wMEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((& wnMEMMNT-fatal-memory not availableea&fT ~7 7 7  j&f& >x&@ ,~& f&f& . 7( &  d &   ~žì7  - 7 m n7P `H V  1Q$ & m mm ppVx  V r      & <  2 J 2>J  5 v & 0 0 0 ^f  hmW- & |&f j00-00-70 39-19-99 00-00-72 4fjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7 f A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- T& 0@E5v J z   :5X&5P 5D0:- &a "  & ȋ  &  Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?N@U@[@a@lh@2m@6s@6z@:@B@@N  wF w\  wP v7 7 p  e ~wLFEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ R&  f  p "&  & xwWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwFEDMNG-fatal-illegal template, no fields  w, e ~wFEDMNG-fatal-illegal template, blank pagew7&f5t&` & \ZwTR& @  4 &    e w,  w, & r& \5& >Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!&  x z&f&& `7 E  ԋ e ~& &f   7, 8 e ~&f  e ~&f  e ~&f& 7, /! -    & @` & n&f&f7wEA`   $ (Ba" N Ba B" Ba $"E ѕ-tE ѕ-tEeH t &f&fEA`  "Ca " Ba " Eы Et`ы HEt `Ba X&f&fEA` d!&f&fEA` d!n!n!n!!!Baҕ C~Ba Ba &f&fEA` !!!!!!" 2 "   ы  ы&&fEf"TTTT7L7H7D" LB~fEEB`&"fA   H~ 7 f&fȋ j hA   | &z% Ut@e & ~&% & DlE )7 B7 @ D#7( & ~-  D#  wfwpz BAbl7 7 D tD#f 擤C~7 ~- :D#f j擤 C~  ww&f&f 0   % % &z% b&% ` 0& w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Record@@@&f&f& B~n& @ @E` &e e~&&&&&@@c 3&f&@@cB W `E D`D ~ Wa@t apF'h W/ lxH'4(V(()D)^)x))n+:+)++++,*,<,L5,,,,,,,-R-@---.*33(../w no opcodew illegal opcodew argument mismatchw no TEMPLATE selected  w RECORD read fail  , w RECORD write failw p RECORD-keys write fail .B    w ( RECORD write fail w  RECORD-keys write fail l= Д~ Z=!  ~w incorrect FIELD attributes  &A~&AP~  TeA BWt }@w N invalid KEY Field =  @  7 @ T w missing TEMPLATEw INDEX already assigned  z @@ - 7&ffAv} rf} bV} R @  0w L missing TEMPLATEw 6 INDEX already assignedw \w X  * Bw/6.@w TEMPLATE to big for memory array p w" w@ "w Unassigned INDEX@Ze P~ = E v@`@ Ht@ot@o=A@E=@tE=WtEeH} }/=  @ ȋ vwwwDw .&f&f   W/ W/ w bIllegal mode ^wv z b= H@wT `@w\ 0@w@ $@A@P 4w @A@Pw fjhjZT-Pw Core common overflow@(w &f&fDD= v @ѕ~ww|w TInvalid file name'f=A b@= == = ==w inv field nameA 9q p, p @E UA B pCCppw ^inv field name B@W `E D`D ~= 6P7 wx 7t7t .` 6   F p݇7  Z/ <  CCaerncncdedddstAC w nno spare slots8 EE      E  w out of slots w file io err j w Console not initialized -B  >0w@ 1 w Invalid RECORD Number` A @DECoD B!w Rinvalid FIELDAWtW eD<w ,invalid INDEXf&f; dv |c i< 5 4i (7 r  YBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`Es`e Bs`e  ۀw 6invalid Namew $missing TEMPLATEw error reading TEMPLATEw not enough memoryw no Fieldsw no Key426282(5  "E"t "f&f,2  mA&f 2;& A1 A1 A1 ؁&f&f;@e~;f ~w out of CHANNELs&f;<Hee ~&f;<Hee ~-&3F3<DBSMNG-l&3D3<DBSMNG4@4 DBSFOR-fatal-!U$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h hׯ (*~zfW E W  y45 5$5wCON.LI-fatal-illegal CC code! fH h(*_( hW@~h H s, Hs '` 'by<'dH8 h-^_   6 77777r88& r87 `_b Hdbb 8  e0P~8鈱-Ϳsa-͌s(Yfr8 &r8@I@S@Z@M r8jr8Ir8Sr8Z'b;; r8MUP$5$'fקH(($* Hׯ ɇ @8@v8@;;8@8@8@y7@;;8@v8@v8@r88& r8 d d*":2Bv ;;JRZbzrjy "F`DCRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: N9V9f9 XXXXXX Hx;; ;; V=^= j h =========>>>=?_?l???????>FIL.SEg>Q>]>*>>>>>FIL.NMg>>>r>>>>>FIL.NWg>>>r>>>>>FIL.LK>(?>>?>>FIL.RD>(?>>?>>FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? AB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORTVT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20   @ B  D B pe  !B ADEA % b %e ee e  (@&&f E9E EXB5   Z  ѕ* B   0ÜBѐ C C C EÜBѐ 0`BnB|BB@'d @ 00123456789ABCDEF?    & e` B዇E0% B዇E0% ዴf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋE    fA  U@EABCDPQRS7D &,& [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    B e   C0C:C:C.C & e   &   h& [ 2 ~K v& h[ `2 XJ P& D[ K 6& (H J && Y e E e E U$$U$E    EfBɋ @fBɋ @ABI &f f  N & B  e  BBBB & xe    & F > 6&f@  &  & &e OOe &E & & & ~*E    EUfAe @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$0E   EUfAe @ &f@  & &f ^   쇗 N      & d & R J B x& ,B (&  & && = e E e E U$6E   EUfAe @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$5$w2CMDDSP-fatal-not invoked in a CUSP Chain!%fw2RCMDDSP-fatal-core-common not initialized!ׯ w(CMDDSP-fatal-core-common error!hJ,EV w,CMDDSP-fatal-core-common corrupted!! J_HU$ Vw*4CMDDSP-fatal-RSTS DOCCL failure!Display DBSMNG database build initiated for database ^1 run lb:tplmac ^1 ^2 10 macro ^1+lb:dbslib.sml/lib link ^1 del ^1.obj Display The ^1 database records are structured as follows ^>run lb:dbssts ^1 tt: Pause Press [RETURN] to allow database to be initialized run lb:dbsmak ^1 .wwwwwwv2:JBZRbsBa&feBJ%@& fEA  w ".""))b)))) )!,#,$,%,&_ H"_ H"_ H#_ Hl#_ H#_ HT$_ H$_ H:%_ H%_ H "_ H)_ H)_ H>*_ H*_ H*_ H+_ H+_ H,_ H)_ H*_ H&*_ H**_ H*_ H*_ H+_ H$)_ H$^*_ H$p*_ H$.+_ H$^+_ H$+_ H$+_ H*)_ H*F*_ H**_ H*+_ H*+_ H*+_ H*+_ H0)_ H0B*_ H0H*_ H0t*_ H0+_ H0v+_ H0+_ H6)_ H6B*_ H6*_ H6*_ H6F+_ H6+_ H6+_ H<,_ H<,_ H<,_ HB,_ HH,_ HHD-_ HH-_ HN,_ HN-_ HN-_ HN-_ HN<._ HN|. 4 "  " f7 \8 "   & X %, wNew database smallerE@$ wNew database not initialized~w8    ~X  wR7 X |B v |   p w"Am E d " B@Ao E e ~llv P~0 F] * 8E= ѕ-tE ѕ-tEeH BE@EP ѕ W 8   ~B f  EP EtP |HEt P&f7 *  J zfw" w `&f2 e~&f2 z Ȓpee ~&f2 z Ȓpee ~ @. DBSCPY-fatal-! DBSCPY-info-RDM130385 Name of old database TEMPLATE: Name of new database TEMPLATE:    ~    h   &f&f nE5 5 ^EmtQ~ 8&f&f@ !E5 EmU~E   &&f D *E5 5  Dm\"~ &&f E5 5 NfDm\"T~ : 0與>E  5 @ fA  `B~7 df&A   D  B~ Mj | B`~2@ E?tEu& p ` j>7w 7w 7w &@ 8 (&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ &f ~7 7 7  j&f& x&@ ~& f&f& . 7( &  l & \ PP ~Xj"08@H7  - 7 m n7P `H V  1Q$ & m mm ~d  V r  @LX    &   2 Jl  5 v & 0 0 0 f(  hmW- & &f4 j00-00-70 39-19-99 00-00-72 fjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7  A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- & @E5v J z   :5X&5P 5D0:- j&   Z& ȋ > & Z Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?"|"z"z""""""":"  wF w\  wP 7 7 p  e ~w$FEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ &  j l < & V &  DwWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwFEDMNG-fatal-illegal template, no fields  w, e ~wlFEDMNG-fatal-illegal template, blank pagew7&f5t& & \ZwTR& @  4 &9    e w,  w, & >& (5& Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!&  D F&f&& v`7 E X @ԋ e ~& "&f   7, 8 e ~&f  e ~&f  e ~&f& 7, /! - ^ J  H& .@` && &f&f7wEA` D NNNh (Ba N Ba B Ba $E ѕ-tE ѕ-tEeH &f&fEA`     6Ca  Ba  jEы ^Et`ы NHEt `Ba X&f&fEA` &f&fEA` Baҕ C~Ba Ba &f&fEA` ,666:R f2  P   ы B  ы&&fETTTT7L7H7D LB~fEEB`&fA   H~ 7 f&fȋ fA   t & Ut>e ^" ~&U! ^" DlE )7 B7 @ D#7( & ~-  D#  wfwpx BAbl7 7 D lD#f 들C~7 ~- 2D#f b들 C~  ww&f&f (   O! B! & .&! ,P ! w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Record"""&f&f\" B~l^" @ |@E` "e e~$"$"$"""@@c 3&f&@@cB W `E D`D ~  AB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORT@5 @5 7 )W   &f@e  w|  w7Hf#& ,A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7%7 w|r)& Bw@BBaEBaEf  ? ?-   ?5*'A E@''@E  @l ''@'5f&fP& *    U `ߋ*$'8'@'N'V'd'l'z'''''((()$)7)F)V)f)5(FIL.SE'''''5(5(FIL.NM''(($(5(G(FIL.NW''((e(5(5(FIL.LKt(((((5(5(FIL.RDt(((((5(5(FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? H sF, 0.Hs '` 'by<'dH8 h-_   x#  %%%$%D%%%& % % `_b Hdb~b~%  e0P~ &鈱-Lsa-Ds(Y% &%@I@S@Z@M %j%I%S%Z'b;; %MUP$5$'fקH(($* Hׯn f܇ p&|%v&v|%}&;;|%&|%&|%&y\%&;;|%&v|%&v|%&%e&& % 6d djrzv2:JBZRb;; *":2ByJRbZrjzF.CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20f&f+ v b _U+ 5 b > u VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  &ڀwHDBSLDR-fatal-illegal TEMPLATE 2w"DBSLDR-fatal-cannot read TEMPLATEwDBSLDR-fatal-missing FIELD definitionswDBSLDR-fatal-missing KEY defibtions(5  "E"te " f++ E    f,*  U@EABCDPQRS7 && [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    :+ e   N+r+|+|+p+ & e   &   h& [ 2 ~K v&r h[ `2 XJ P&N D[ K 6& (H J && Y e E e E U$$U$E    EfJ*ɋ @fR*ɋ @ABI &f f  N & *  e  **+,+ & xe    & F > 6&f@  &  & &e OOe &E & & & ~*E    EUf**e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$0E   EUf**e @ &f@  & &f ^   쇗 N      & d & R J B x& ,.+ (&  & && = e E e E U$6E   EUf**e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$<&f ѕ0 `, -,,,,,w -w '-w -w vc-w l -w b'd w N^-w D`-w :b-w 0d-w &?f-w h-w @ Eѕ*C&D &E r   "- •0 • ?0123456789ABCDEFB&&f E9E E^-5   Z  ѕ* B   0Ü-ѐ C C C EÜ-ѐ 0f-t---@'d @ 00123456789ABCDEF?Hf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋ   & e` B዇E0% B዇E0% ዴ ADE- % b %e ee e  (@NU$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*F&fhP_h ׯ( (*~zfW E W  y|----wCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& wMEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&. wtMEMMNT-fatal-memory not availableea@!(.wwwwwwvhpxsBa&feBJ%@& fEA  w #.###**b*** *"*#,%,&,',(_ H#_ H#_ H(#_ H#_ H#_ H|$_ H$_ Hb%_ H%_ H #_ H#_ H#_ H#_ H,$_ Hh$_ H$_ H*_ H*_ Hf*_ H*_ H&+_ H+_ H+_ H6,_ H$*_ H$:*_ H$N*_ H$R*_ H$*_ H$+_ H$.+_ H**_ H**_ H**_ H*V+_ H*+_ H*+_ H*+_ H0*_ H0n*_ H0+_ H00+_ H0+_ H0+_ H0+_ H6*_ H6j*_ H6p*_ H6*_ H60+_ H6+_ H6+_ H<*_ H<j*_ H<*_ H<*_ H<n+_ H<+_ H<+_ HB,_ HB-_ HB-_ HH,_ HN,_ HNl-_ HN-_ HT,_ HT-_ HT._ HT$._ HTd._ HT._ HT. 0   7  w& e 0 f= D& H& Fj & <ȋd &C " wNCommands: =BYE CReate Edit Inspect New DELETE PageDBSEDT-RDM030283- Database=XXXXXX, Page .....SORRY - Command not recognized?b",g"l"t" |" " " 67876  "  N |I7D 7:7>NW6(7    7 EU !AC  R  :   &x ~? ERROR ? no more SLOTS left! & L h ? ERROR ? Specified record cannot be found!  & 7  -AC&  ) | 7: (&   EE5 |? ERROR ? Specified record cannot be found!? ERROR ? Specified record is nolonger active!  & 7  $ ( -AC& & &? &  XY'DE 7 4 * f| tEE  5 L? ERROR ? Specified record cannot be found!? ERROR ? Specified record is nolonger active!Really DELETE RECORD - Yes or No?"DBSEDT" - Record Deletion Mode! Ef v@`&f   B~&f&B CCae&f&B VCCaԔԔe" " " "" "$ "& DBSEDT RDM300482. Template file:  ~   h    R v x ~&f&fj nE5 5 HEmBQ~ "&f&f !E5 EmU~E   &&f D *E5 5 z DmB"~ j&&fX E5 5 8fDmB"T~ $ 與 E  5 @ fA  `B~7 df&A   D  B~ MB`~2@ E?tEu& T D N>7w 7w 7w &@  &f> ~7 7 7  j&f& Tx&@ B~& 4f&f& . 7( &  N &   ~ˆÖĪи7  - 7 m n7P `H V  1Q$ & m mm ZZ@bt  V r      & R  2 J(4  5 v & 0 0 0 Hf  hmW- & &f j00-00-70 39-19-99 00-00-72 Jfjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7 | A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- x& @E5v :5X&5P 5D0:y- &K   B & ȋ  &  Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?""""V"" " "$",""8  wF (w  w 7 7 p  e ~wFEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ d& r P $  4&  & wWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwBFEDMNG-fatal-illegal template, no fields  w, e ~wFEDMNG-fatal-illegal template, blank pagew7&f5t&J \& Z\ZwTR& H@ F 4 *& ,   e w,  w, & & 5& Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!&f&f7wEA` * 444Nl (Ba N Ba B P Ba $E *ѕ-tE ѕ-tEeH  &f&fEA` Ca  Ba  Eы Et`ы HEt `Ba X&f&fEA` &f&fEA` Baҕ C~Ba Ba &f&fEA`  8 2    ы  ы&&fEPTTTT7L7H7D B~fEEB`&fA   H~ 7 &f&fȋ 8 jA   & UBe . D" ~&;! D" DlE )7 B7 @ D#7( & ~-  D#  wfwp| 寇BAbl7 7 D D#f 퓤C~7 ~- hD#f 퓤 C~  ww&f&f ^ 5! ^(! P& d& b 2f! @w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Record"""&f&fB" B~pD" @ d@E` !e e~ " " "!!@@c 3&f&@@cB W `E D`D ~ BYE-N-EWCR-EATEDELETE-E-DITI-NSPECTP-AGEcncdrnddstedAB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORT P@5 @5 7 )W   &f@e  w|  w7Hf#& :A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7%7 w|)<& Bw@BBaEBaEf  ? ?-   ?5*'A E@6''@E  @l4''@'5f&fP& *    U `ߋ*L'`'h'v'~''''''''()$)8)L)_)n)~))](FIL.SE( ((''](](FIL.NM('*(=(L(](o(FIL.NW('*(=((](](FIL.LK(((((](](FIL.RD(((((](](FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? H s, Hs '` 'by<'dH8 h-_   # 4%<%D%L%l%&&&& &4% `_b HdbVb%  e0P~1&鈱-$sa-s(Y& &&@I@S@Z@M &j&I&S&Z'b;; &MUP$5$'fקH(($* HׯF >܇ &%&v%&;;%&%&%&y%&;;%&v%&v%&&&& & Dd dvhpx;;( 80@HP`XphxyF.CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ & z 4 6&f&& J`7 E , ԋ e ~& ߀&f   7,  e ~&f  e ~&f  e ~&f& 7, /! - 2   & ߀@` & ހf&f+ v b _U+ 5 b > u VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  ڀw2DBSLDR-fatal-illegal TEMPLATE w DBSLDR-fatal-cannot read TEMPLATEwDBSLDR-fatal-missing FIELD definitionswDBSLDR-fatal-missing KEY defibtions(5  "E"te " >++ E    fT*  U@EABCDPQRS7 && [ 0 ; 1 m &r [ 0 m x&f@  \& P H&f    b+ e   v+++++ & e   &   h&p [ 2 ~K v&J h[ `2 XJ P&& D[ K 6& (H J && Y e E e E U$*U$E    Efr*ɋ @fz*ɋ @ABI &f f  N & *  e  *"+.+T+ & xe    & F > 6&f@  &  & &e OOe &E & & & ~0E    EUfR*e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$6E   EUfR*e @ &f@  & &f ^   쇗 N      & d & R J B x& ,V+ (&  & && = e E e E U$<E   EUfR*e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$B&f ѕ0 `, ,-"----,w 6-w '8-w :-w vc<-w l >-w b'd w N-w D-w :-w 0-w &?-w -w @ Eѕ*C&D &E r   "- •0 • ?0123456789ABCDEFH&&f E9E E-5   Z  ѕ* B   0Ü-ѐ C C C EÜ-ѐ 0----@'d @ 00123456789ABCDEF?Nf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋ   & e` B዇E0% B዇E0% ዴ ADE. % b %e ee e  (@TU$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h ׯ (*~zfW E W  y----wrCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& wMEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&. w^MEMMNT-fatal-memory not availableea@!"@n#7fhs; ZzP@&PB&PA&P>&P?&PC&P'P'P'P'P'P'P'P%0)0&'S<'&cK Js!e^ B&: ?& ?& ?&ʰ ?&ϰ ?& ?& ?&&&1&=&G&&Ա& &8}8}C9f9 39Z 39[ C9.~19~79`"~J9"~@9`~:V:گ:v:x:: :";;<;;<;;ԯ<;;ۯ<;;<;;<;;ٲ<[Md'RuSRSRSr'Sw a wa wt! ws: w: w: wg ws w:d wY w"& y&$y'$\}H'y'y'yԯ'yۯ'y'y'yٲ'ٲ)i\)i)iv)i)i )i:+%.%/](0`]( 0`](W0`](ί0`](0`&hL1&XM1&y1&#122ԯ2ۯ222ٲ2<4u~4d'5d'v5d'm5d'5d' 5 d7 z7 d7 %7 &7 }&7 g'7 '7 7 z(7 7 7s::st!:s a:sY:sg':E<hE<hEG<hEl<h??ԯ?ۯ???ٲ?'&A''A&D&D&D&D&D](sE](TE](s:E](:E](sE](#E](YEvٲHvHvHvԯHvۯHvHvHJJԯJۯJJJٲJ&iK&oK&K&YKSKRwSK&ԯK&K&K&ۯK&K;"aK|&K&K&TK&K&K9K&[K&ٲK& KL&wSQL&˯QL& QL&GQL&\Q/d#Qc&Wdc'Wd`Wdc#Tc$TcpTcB2cicGKcIKcccÌcmcczczcScYcvLcfcfccKc9c4c@cjcza cz e|fe|u~e|e|9e|@e|<e.sL(@(9she@V@!Q.; ZnL(@(X_; Zh@V.   & e` B.&E0% B዇E0+L% ዴ.n?L(@(@k.h@&hLB&h8A&hB>&h`.?&hVC&h.'ht'h'h*.'h'h'h'h~@V.&f ѕ0 `" `V"&`(V.&LB8.w jw 'lw n("LB8 .jl(n$.Lw vcpw l rw b'd  pr.rw Nw Dw :w 0"j.w &?w w @p.@ Eѕ*C&D .&E r   . "0 •0 • ? 000123456789ABCDEF.%.L(@(&%hs()hF@V.&&f E9E Ens&e.&5   Z  .Lѕ* B   0Ü &.rѐ +.C C C EÜѐ 0&(.@'d .?@ 00123456789AB   CDEFse ?.&'.L(@(*&'h"q "@V!W wno arguments -Du!, willegal function @.@ tw\incorrect number of  .farguments w4function no longer. F supported Q.tnvvvv*tt nvv"v&v.@@鈇@B~#.DE  wmissing argument. s ~ zh@ @P.0_h@鈇E   xNVVZ^ N"V$V&Z(^q.V f hf& & 切 &hWt.| @~h5$'>.f @ CONFOR+-fatal-!.<'&7L8}@(@(<'&h@V.W/@ EW @EU.&=W/@e EW 2.LEe=W/D  $8}.r/@= = 7 .c](fL(.cKLRwS@&@j.&@&1@&=@&G@&@_.&Ա@s@& @&@(&@(cKh<@(j@V.f&f v b _U  <@&&=$&밮.&* 5 b >  <@*&ԱP.Lu VBr`r`r`r`r`r`7  &ԱB.rr`s`s`s`s`s`s`.s`s`s`>s`e $.Js`e  w &.DBSLDR-fatal-illegal TEMPLATE wxs&& '. DBSLDR-fatal-cannot read TEMPLATEw s/.0DBSLDR-fatal-missing FIELD definitio' s/ Vns9 Z.ZwDBSLDR-fatal-missing KEY defibtion s-.s(5  "E"t7 e " xRwS<@.  & .s!e^L%@(e@(js!e^h@V.&f&f D?.& ? A ɕ@ + %'&L e .& .CLE@`@|.&@&@&1@&=@&G@d.&@&Ա@& @&@(R.@(l&:h&hN&h&ʰh.&ϰhb&h&hy:~(y:~  @@.   *`&&&Ա$&(&.&     $&Ա&&&Ա(& ,.L&f&f nE5 5 `(&Աc.rEmQ~ `2. &f&f !E&  `0.5 EmU~ &Ա`s.E  B` &.  &&f D *E?& `J.05 5  Dm~&ԱE.V &&f Ek5 5 & `>.| fDmT~ &ԱE$&. 與E  \& ` &.5 @ fA  `B~U & .7 df&A   D  B~ M/.0BB`~20 Bg.:@ E?t^`Eu.&TyLv; @%@.(@(,&h&ht&1hc.&=h &Gh&h&Աh& h &&hZt:*}(Rv(@V.@5 @5 7l.& )W    .L&f@e  .rw|  w7Hf (.& A *ѕ:Q v; . W:ѕ. ѕw פ7. ќ~7@/@ . * &Hpp5W.0  ŀ5 w.V  w7`.|`,@' #H.p5  ŀ5 .w ( =.wb7ŀ$ .Hppp 0 5.:w Հ w7z.`$  Hp.pp 0 5wL Xp.Հ w77 *  .w|N4 Bw@BBa` RvN4f.EBaEf  ?+ %+. ?- .D  ?5*A  Rve.j E@@E r t:*} Rv. @l@ t:*} Rv "RvQ.5f.&fP& .*    U `ߋ (*Rv#"2BFIL.SE.  "2B@t:*}  Rv RvRv FIL.NM*  t:*}g * Rv Rv*Rv22#FIL.NW*  #t:*} 2@v Rv2 Rv@RvHHAFIL.LK*  At:*} j  HVFn RvH RvVRv^@^P_kFIL.RD *P_ k t:*} ^l Rv^ RvlRvttP_kFIL.WT*P_ k t:*} t Rvt RvRv.FILSPT- -CSI:invalid commandCSI:I.nvalid deviceNull stringNull fileFDZ.B in useHandler not loadedChannel in. useNo room for fileUNKOWN ERROR COD#.!ECannot replace protected fileFile nP.Got foundFDB not activeEnd of FileHa.mrd error on channelCHANNEL not active.Word count too largeUSR called from E.completion routineNeed handlerDirecto.ry I/O errorHandler fetch errorOverl.ay read errorDirectory fullIllegal a$.+ddressIllegal channelIllegal EMT Chu.Qannel ??. Size ?. Requested ?. Error.w ? Flags ? Block ?. Tran$sfered ?. Buffer-addrs ?? .8}7L(@(8}fh@V.WWW0 Ef v@`.&@Ht@ot@oA@Ev.L=@tE=WtEeH}&r@-qv b.8}7L(@(w8}h@V.WWW0 Ef v@`.&@Ht@ot@oA@Ev.L=@tE=WtEeH}&r@-qv _b.39ZV?L(@(W&C9f9h^39Zh39[hX@V.+XBA`  d`$.&P-(- ~B W.L.W0W9` ~ ` B  `s.r` 0ȕ ~B `.`$`. ~W .B`@$`p.].>^._.]^_j.0a׭u  0` ׭b 4a`$4. Bc@׭D .`0ac `&ak.00b4P~ 0 b 4@V $."IFCNV" - illegal string size?"IFCNV"}. - too many decimal points in string?."IFCNV" - too many cents in string?"I)6FCNV" - output string too small?.=9h ?LC9f9@39Z@.(@(C9.h19h79`"htJ9"h@9`h&`n@V.2Е ~00.0+  ..&2BЕ ~wnwj7h 2.Lf J (+> 39ZC9f9&.r2B @Е ~  ".`@B@2P~ ID(I. wT2BdЕ . ~ww7f  39Z&C9f9.  Q-7  ! .0  \w \X2 ,.VPѐ~7 < ! .|2($ f et $39Z. נ $ {.D ĕ000`m7   _. e0  Õ0- $. D נ #D ĕ0.:00mf7 b  Xe e0Ȑ.`  >Õ0 0D  2.  0.00ɋ T6    ."IFPUT" - string too large for accum.Aulator?"IFGET" - string not large enN.gough to hold accumulator?"IFADD" - sL.tring too large for accumulator - aborE.ting?"IFADD" - illegal string for ad!.dition - aborting?"IFADD" - overflow#ed accumulator - aborting?L.:X6@L&ԯ@&@."&@(@(:VhP:گh0h.:vh:xhN:h&: h:"h@V.&   >7w  &ԯ&&.&7w 7w &@  9&ԯ&& L 58.;;:6AL(@(.;;h;;hf;;ԯh;;ۯh;;h(?&;;h;;ٲhy:~(Ty:~U$@V.E    .&EUfJe @ J.L & 8.r;= &  . &   &.   & . ~`E &f@ \!.  & N F&fu.0       /.V 쇗 N    .|  &  & .   & .& && ~E# rE f.[Md'6L(@([Md'h@V.&fW  ɋ:E p.&T͋̋(e ~E .L&f@ `EW `E ͋*re ~ M.RwSLs@(:.@(RuSh@RShRSh*;@V.g((& wMEMMNR-fatal-mem s.&ory not availablee&g(et.LE wMEMMNE-fatal-.GETCORw s.r failedwg((& }  .wMEMMNT-fatal-memory not availabl  s+eea.r'?LA&@@&@.B&@C&@(@(r'h@V.W#"RMNFOR" -FATAL-NOT ENO &OUGH ARGUMENTS6 6.6@7 8J"RMNFOR" -FATAL-ILz J.\LEGAL FUNCTION CODE xxhx "$&h(.W#"RMNFOR" -FATAL-'ZERW L.O' NEED 3 ARGUMENTS@AЕ C~W#."RMNFOR" -FATAL-'ASCCOP'K  . NEED 5 ARGUMENTS@@oAB P~(.W#,"RMNFOR" -FATAL-'NUM ,.@2' NEED 4 ARGUMENTSAAoB  (a@&X.fW#x"RMNFOR" -FATAL-'NUM xg.3' NEED 4 ARGUMENTSAAoB v (A&W.W#"RMNFOR" -FATAL-'NUMn .4' NEED 4 ARGUMENTSAAoB ) (B&V l.y&L&@&@.&1@&=@&G@&@&Ա@u.& @&@(@(@w ah6.wahwt!h&ws:hw:hw:h2.wghwsh"&(2w:dh2wYh2Mw"&h@V. U2< * '( "& & "&2&="&.& 2  2 "&2&Ա ("&2b.L  .0*,,&Ա"&."&0"&*$"&,.r| SFLINT-fatal-cannot access f2| & ile! X G*f , 02 ,"&, "&"&0 "&2& . 2 .0$1 "& "&2&Ա$"&.<.0*, SFLRST-f("&0 "&*"&,& atal-file error! T &*&f , 02 ,"&, "&"&0 "&2& .H2  v. "& "&2& "& &(v.n SFLEND-fatal-cannot close out  & .file! &f $D~&f. rD~&f* .&"&*$"&. ("&..2  2@ 7*Y,"&. "&2&Ա "&2("&*. SFLINC-fatal-read er & ,ror!  6.6&f,42 !02 . "&, "&2 "&"&0 $"&2&.\ 0 7,~ SFLO&& "&0"&,~"& #UC-fatal-output error!  I.&ff7 4 7p2r*w* 7.. "&4"&2"&*""%&*("&..52    "& "&2&Ա$.SFLPSN-fatal-invalid entry number!7 &   < ." SFLPSN-fatal-input error! " &  < "&. 2 2j&  22DK:SORTER.DAT.y'fPLwa@wt!@.w:@w:@w:d@wY@]9x}@).&@wg@ws@&@&1@.&=@&G@&@&Ա@& @.&@(@(y&hy'hk<@(@V.W+@t 0+p,2 W/ , <@.&6x.,. ws $(a.L(8pHw xno opcodew jille( 8pHrgal opcode) ~k.~w Vargument mismatchw @SFL file notI initialized  7.= $ E P3w:d w:d$w:d*.P  @Aw@Awdw:(wa.@ PK*y}v@~   &wt!.$@E=@Ep@w:d$w:d -J7 ww ~invalid entry numberw:dwgp.pAPw  7{"wY<@]9x}"w:d.ww 8already initializedw out <@w:=.of RT-11 channelsw@鈇<@wt!"(# SRTFOR-fatal-!<@D .yx.L(.\}HQL(@(\}Hh@V.f&f  B  $e.& & "-  s.L ȋ 6E.r-`EE#`E%ʋ5-.y:6AL'(@(6.yhyhbyԯhfyۯhyh&yhyٲhy:~(y:~U$@V.E   .&EUfJe @ J.L O.r ) $.(&f@  & M. &f  .  쇗 N.  T 9 J    l.0& & &  .V  z& &.| T fd& G~.& & y .fd & G~&&N. p= he E Xe E* Hfd& 4G~.:L&@&@.&ٲ@(@(ٲh\h;.hvhlh" h(@V.&f ~7 7   #.&7  j&f& xV &\.L&@ ~& f &&.r&f& . 7( &  &j.  &&&.  ZZ ~bt  &ZZ b$t(*. ,:BJR7 @"  ,:BJR.  - .07 m q.V n7P `H V.|  1Q$ & m 5.mm  &ٲ!.:L&@\@.@(@(:h|@V H$0<*  H  $0<.  V r x.:v Px   Px"P.` &   &f. 2 J  F A. v & 0 k&.0 0 :RR"$:&R(Rt.fT`  h mW-  T`\  \.& &fl\&&l..D j00-00-70 39-19-99 o\ Gj 00-00-72 vr&v fm - .& \\ \\\*f ~7 q*\\ \;.  (fm .\\\$\(\ .! m !f"\\ &.m B  ~" \\ \\).(fBm  ☣" \\ $\u.NB~ 7 . A Z@ ..taz 0 9,mm  ȋ \ \>%>L(@(%h@V&&fE0E 5  V  5 ѕ*  @   $m]ђ  dh|  5@]ѐ@ d'(@    ABCDEFGHIJK."$&(l n p r^*LMNOPQRSTUVWXYZ$%*0123456789ABCDEF>%>L(@(%h^@V&f E C-נaנz ͠Ce  נ    & 4 ` ~  0hn|!  @  & e @AF7890070 AZ@$$ %% ** 09&&(*,PRTV~](:D:@: @:"@/d#@d'm@d'@d' @&ԯ@&@&ۯ@&@&ٲ@PF @ ](h]( h](Wh](ίh](h@V&   &f&& `7 E  ԋ e ~&3>&ۯ :": :":0&N/d#^&ٲf&&| &f   7,  e ~&f  e ~& 6&f@  &  ]vt& &e OOe &E & & & ~fF<D%@ @ p<h@Vx&tE- ѕ-tE  V ѕ-EeH= >J&zQQAA wL^Y%2V:%R%MFu~H"D%@ @ u~h@V&&f 2- ѕ:= ѕ:= &<e5  2s :%(%6%|s r<!~d':SD; Z@:@@@ @ @ Zd'hd'vhd'mhd'hfd' h@V&f&f7wEA` 2 <<<Vt (Ba N Ba B V2"2&6<8<:<tPjrV|Ba $E ѕ-tE ѕ-tEeH &f&fEA` 0.Dhxz|~$Ca  Ba  Eы Et`ы HEt `Ba X&f&f.$ "; Z48; ZD; ZT; ZtEA` &f&fEA` Baҕ C~Ba Ba &f"4DFHJL&fEA` $$$(@ 2    ы  ы&&T8.$0$2$4(6@@D; ZVZ; Zh; Z~lfETTTT7L7H7D B~fEEB`&: *. p~ TyfDs@ @  dhd zhr dhN %h &h0 }&h g'hF 'hz hT& z(h hj hz2@V@Awnzr@ 0@ . @w4@ @  . =wwA >wwA &zrV\lr|f&fD  Ћ @+5@5ȕ 5  B `~ȕ$5 A@  Ct #AE@ 5BAa@a`~ 50 @ӕ ~  n n ?.01w  Zn'tjw&f&f -D,! !.`HD0a 9 Ȑ~M26tx~Е0~.7 " !.`HDe0 0e Ȑ~p ! &*ptl.`HDe0!0e ~&f&fE5 *נ.  ѐ~wBCDSPT:accumulator o jsveflow Ou ѐ ѐ ѐѕ.ѕ0ѕ0@e`E  0&fЕ+ -W0 ~wBCDSPT:aN vsPlcc coruptedW.Е0P~נ-נ( נ0נ9 ~s&~D&@&@&1@&=@&G@&@&Ա@& @&@ @ Ls:hf6st!h|s ah"& .sYh.sg'h*@V U. N  5  7 *.,J RPTINT-fatal-cannot initialize report stream! J "& & "&.&=(&G8"&* <"&.>"&,DJJ& Mq| df,. u   RPTEND-fatal-cannot close report stream! @"&, "&. "&"& *"&.&6<& n5*?, ,-,. f  .,& RPTOUC-fatal-output stream error! ^"&*"&,"&,"&, "&. "&$& 0"&.2"&,:&@& "&E . .LST:REPORT.LST.0. ~EwSD:V@:گ@; Z@:v@L& @:@L&G@: @[Md'@`@&@&ʰ@Tv&ϰ@](W@](ί@](@B&@\}H@ @ EhEhBEGhElh0Rv @VfA   H~ 7 f&fȋ A   &p |:V `&ʰ6`B&ϰX; Z``l&ʰxp|: |Ue  ~&  DlE )7 B7 @0L&  `L&G<@:گXd` D#7( & ~-  D#  wfwp BAbl7 7 D D#*`&ʰ2&ʰV`Z[Md'|&ʰ tf C~7 ~- D#f C~  ww&f&f&:&ʰH&    &p &   w  b& `](ί](W]("B&&0B&6p:: BF:L:VP:vTX\}Hl"KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)x3? HELP ? - Cannot Locate Specified RecordRvN-EXT@? RvRv#A-CEPTM@7 RvRv  AB-ORT;@$/$ &f&f B~ @ @E` e e~& Rv *6`DX[Md'fX@@c 3&f&@@cB W `E D`D ~   )v:/ǓD @ hhbԯh(ۯhhhhٲhy:~ y:~U$@VE   EUfJe @ &f@  & :Jl| &f ^   쇗 N      &x d & R J B x& ,N (&  m FN[tt & && = e E e E k~''Dws:@w:@w:@w:d@wY@w"&@]9x}@&@wg@ws@&@&1@^&=@&G@&@&Ա@& @&@ @ '&h''h@VAW"FNDFOR"-fatal-FNDFIN too many argumentsm::@  7b"FNDRFOR"-fatal-FNDFIN CANNOT GET A CHANNEL! -"FNDFOR"-fatal-FND. wY]9x}w"&&bZw:^w:dhBFIN illegal record size-"FNDFOR"-fatal-FNDFIN illegal number of records *"FNDFOR"w:(r*'2-fatal-NOT INITIALIZED - CALL 'FNDFIN' FIRST!W#p"FNDFOR"-fatal-NOT ENOUGH ARGUMENTS@7 8"FNDFO%&Fh^`bd hs(hC code! fH h_hW@~hN&"&(&.&4&8*&i& <.&o& -~](&D&@&@&1@&=@&G@&@&Ա@& @&@ @ (](shF](Th](s:h](:h"& H](sh](#h](YhHM@V UH   7 <7 H@@ 7>7B\ FRMINT-fatal-format stream initip "&  & "&H"&&="&.&Ա8"&<<"& @"&HB"&@L"&>P"&BV\\& M|alization error! l   _  $  ^  J DU 8E     7$&Z"&`"& f"&z"&  <) > @ @Ef e   7>H@U< j FRMINP-fatfn "&"&<"&>"&@"&@ ."& 8&ԱB"&J"&> N"&HP"&@b"&<ljr& ctal-format file read failure! &B &B 7 <7 >@f7>7@7" 7 7 <t ("&B 6"&B@"&<D"&J"&>N"&@R"&Z"&>^"&@b"&h"& l"& p&Աz"&<@ RESTOR-fatal-format stream rewind error!  & "&^]($,H HHDK:FORMAT.FRM$,HDHHHvv:D;"a@ @ vٲh.vhvh^vԯhvۯhvhvh@VE    fL  U@EABCDPQRS7 &V4Ld;"a|;"a|& [ 0 ; 1 m & [ 0 m x&f@W;"aP;"a  \& P H&f    Z e   n &FRZhnlptx-t e   &   h& [ 2 ~K v&i Z;"a h[ `2n XJ P& D[ Kr 6& (H J && Y e E e E ~&:vDF&iH6&oH8vٲ@&H0&@; Z@&YH>@@ԯ@ۯ@&@~&@@@ԯ@ۯ@@@SH@y@y@@@yGۯ@RuS@RwSH~yԯ@RS@RS@ٲ@y@y@ٲ@@&ԯH @&H&Hԯ@ۯ@;;@~;;@&ۯH&H,;;ԯ@;;ۯ@yٲ@@@v@v@;"aHD&H(&H;;@;;@~vԯ@vۯ@v@&TH<v@&H2&H49HB&[H:ٲ@\}H@;;ٲ@&ٲH$ y:~ :&@ & hRv B"q " Nwwwwwwvs\ RuSRSRS&.&2&6v8v:vvۯ@vԯBvٲy:~Z  @@ R s@  @DHs@D '` 'by<'dH8 h-@9"@ 8@>DN@TD~@M|_    2:BJj $&  2 `_b HdbBb  S< &2(:*B,J6]j: B$J N2R\}HpBxe0P~/鈱-@sa-@s(Y  & @I@d/$@,@>H \ tS@Z@M  j I S Z'b;;  MUP$5$'O, 4 @ L ` EJfקH(($* Hׯh h 2h:hRvVT5-2@2"2m R;vRvrVT1-00@::v RvRv e I-NTECOLOR@BB ;; Rv RvSA-DM3Ab@J J RvRvAVC-404p@RR1 RvRv&3&T-VI912 @ZZ&y Rv&Rv.D .I-SC@bb.;;@ Rv.Rv33VT2-00Q@jj3vm Rv3Rv: :VT2-20H@rr:v Rv:RvA A@zXzA &   d dv;; RvA  "; Z02468ۯ:ԯ<ٲ@vBvDvFvHvۯJvԯLvٲP;;R;;<8yh;;;;;;ۯ ;;ԯ ;;ٲۯԯٲ "$&(ۯ*ԯ,ٲ0y2y$yyyۯ yԯ yٲ   $z$CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: ~L&wSD](@:V@:گ@; Z@:v@d'@d'v@:@: @d'm@[Md'@](W@,~](ί@](@%@s@@@&@v@\}H@ @ 0L&wSh&L&˯h.L& h L&GhL&\hV/d#hPRv Ji@VUwE Uw&f&fwwBq- & @E5 :y6DqL%V:گ^n](r](ίv](Wz](|5&5 50~k- &=   & ȋ < &u `J(k0%6=:: >B:H:VL:vV:گ`d\}Hxu|:گ Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)(tSORRY-Command not recognized?RvAB-ORTH@` RvRv QU-ITw@S RvRv  EX-ITz@ E Rv Rv F-IRST%@H RvHRv T-OP@  RvRvE-DIT|@ RvRv%%EN-TER@% Rv%Rv,,CLEAR--@, Rv,Rv33R-EFRESH|@3 Rv3Rv<<LO-CATE@y< Rv<RvDDP-AGE`@qD*  wF w w 7 7 p  e ~_6 RvD*8](<](@](ίD](WH](N; Z"`wFEDMNG-fatal-illegal templatewWt7wA w vwp nw^h & d B T,s`[Md'l:گpdt: xB|:O 8 &~  & wWt7wA w w wEnter NAME of field tot,:V :v[Md'~ :گ.2:گeX be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!MT 0K&fbwFEDMNG-fatal-illegal template, no fieldss  w, e ~wFEDMNG-fatal-illegal template, blank pagew7&f5& J$sx|: v& w& @ &  nf&f?, N7 H< :(:گ0d'm4v8d'@D:گ`d'vn    e w,  w, & & 5&6d'vf:گr:n Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/bad  : D9ckup a fieldERROR-illegal data, please retype! ~c'DE@&:@&@L&wS@L&˯@L& @&@&@: @/d#@S@EG@~[Md'@El@]9x}@&@&@&@'U@&ԯ@&ʰ@&ϰ@&@&@&ۯ@&@&1@E~&=@&G@&@&@&Ա@&@&@]9@& @&@& @&ٲ@ @  c&h p&c'h<@ `h@VWc@t cp,j W/ nx.2T B\vl8* :h, <@..226T:> BBF\JvNRlV8Z^bfjn*r v: z&~y|P>  w " no opcodew  illegal opcodejZ "P&>*.26: > BFJNR7w argument mismatchw no TEMPLATE selected; = 7 w  w RECORD read fail L&˯L&˯&TKT   w RECORD write failw r RECORD-keys write failQ &Eli B     w * RECORD write fail w  RECORD-keys write failW <@&"El^O ^= Д~ L=!  ~w incorrect FIELD attributes BB  A~AP~  eA Wt }@w P invalid KEY Field =W< &ʰE E4&ϰ:<@F[Md'L<@x<@W   @  7 @ V w missing TEMPLATE&<@:<@#w INDEX already assigned **  l @@ - 7&ffA} } }  @  w N mih@"<@0<@<&1@<@L&1P<@\&1v<@2ssing TEMPLATE 0#w 8 INDEX already assigned iw \w X   Bw/6.@w TEMPLATE to big for memory array4?4 b w" w@ $w Unassigned INDEX1<@<@ll@e P~ = E v@`@ Ht@ot@o=A@E=@tE=WtEeH} <@: }/=  @ ȋ wwwDw &f&f W/FD6: w R@w "@w @A@P w @A@Pwfjhj8 &ۯ&$&0&<&P&ԯh&ٲz<@--w Core common overflow<@<@>>@w&f&fDt v @ѕ~ww|w VInvalid file name'f!: <@<@ (<@t,&4&=<<@L<@[h=A @= == = ==w inv field nameRh<@[Md'DA 9q p, p @E UA B pCCpp <@[Md'w `inv field name @ B@W `E D`D ~= P7wx 7t7t .`   Fr0.<@2EG<<@^&bElf<@{ 76X4  CCaerncncdedddstAC w pno spare slots_B& <@6<@X<@ <@4$[Md'\<@OEE       w &out of slots(<@&Ա <@2<@ w par file err}&   w Console not initialized - . w@1 w Invalid RECORD NumberA @(<<@.<@6&<. D&L<@r<@z[Md'l DECoB!w binvalid FIELDAWtW etw <invalid INDEXf&f v c i0<@ F<@t j<@ n&v&=|& 4 5 i (7 r  YBr`r`r`r`r`r`r`s`s`s`s`s`s`s` <@4&Ա4&Աq]d s`s`Es`e Bs`e  w Finvalid Name8&  w 4missing TEMPLATEo  # w error reading TEMPLATE?  7 w not enough memoryw noC Fieldsw no Key   $ & ( (5  "E"t "f&f   m&fAW.$$ &  ( L p]9x<@ ~Y 2A1A1A1 &f&f@e~f < <@<@ <@,<@8&: P<@ t<@~ ~w out of CHANNELs&f4Hee ~&f4<]9x}<@<@ <<@ F<@4 r<@ |<@4( Hee ~-& F 4DBSMNG-& D 4DBSMNG @ DBSFO:$S. 8 :<@4FSP Z \<@4h r p R-fatal-!<@K<$ >'U$ttB@l j ~za TD%@H#TH$THpTHB2HiHGKHIKHHH ÌH~mH za Rhzhzh.ShYhvLh6fhfhhKh 9h 4h.@hjh>@ Pza hza V , , 4 4@V> f7 >U7>7 >7>7>f za >za  za *za >Pza Tza >dza  hza >xza  |za >U|7>7_7H7 >77  J&f.>0^za F za >$za 0za Rza Xza fza xza . |za >`W > .&fLы W 1g_6% za >(% ,za .8L >za  Zza ~z ͔D%@za @<@f@S@@9@@@u~@ @ z h9Fza #|fh|u~h|h|9h|@h|<hQ@V׭IO -H&f  d@ e - - 7tza za S (za ,< Hza Nu~Vza Z@ ^za f%j9 nza v%zf ~za 4|   V8 %f za %&za za +I1 1 000000XX:XX:XXXX-XXX-XX@k34us %%|*} \%s!e^ "" N&Ty '@Qd 'x |.MACRO CNAF FIELD,RADIX,NUMBER,STRING,REGSAV=NO .GLOBL CNAF .IF DIF,REGSAV,NO MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) .ENDC .IIF NB,NUMBER,MOV NUMBER,R2 .IIF NB,STRING,MOV STRING,R1 .IF NB,FIELD ZZZZZZ = 0 ZZZZZB = 0 ZZZZZR = 0 .IRPC X, ZZZZZA = -1 .IIF IDN,X,H,ZZZZZA = 3 .IIF IDN,X,D,ZZZZZA = 3 .IIF IDN,X,O,ZZZZZA = 3 .IF NE,ZZZZZA+1 .IF EQ,ZZZZZR .IIF IDN,X,H,ZZZZZR=2 .IIF IDN,X,D,ZZZZZR=1 .ENDC .ENDC .IIF IDN,X,S,ZZZZZA = 2 .IIF IDN,X,F,ZZZZZA = 1 .IF EQ,ZZZZZA+1 .ERROR FIELD ; ILLEGAL F I E L D SPECIFIER .MEXIT .ENDC ZZZZZZ = + ZZZZZA ZZZZZB = ZZZZZB + 1 .ENDR .IF GT,ZZZZZB-7 .ERROR FIELD ; F I E L D SIZE TO LARGE .MEXIT .ENDC ZZZZZZ = ZZZZZZ*4 .IF NB,RADIX ZZZZZR = -1 .IIF IDN,RADIX,OCTAL, ZZZZZR = 0 .IIF IDN,RADIX,DECIMAL, ZZZZZR = 1 .IIF IDN,RADIX,HEX, ZZZZZR = 2 .IF EQ,ZZZZZR+1 .ERROR RADIX ; ILLEGAL R A D I X SPECIFIER .MEXIT .ENDC .ENDC MOV #ZZZZZZ!ZZZZZR,R0 .ENDC CALL CNAF .IF DIF,REGSAV,NO MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 .ENDC .ENDM CNAF .MACRO CABF FIELD,RADIX,NUMBER=R0,STRING=R1,REGSAV=NO .GLOBL CABF .IF DIF,REGSAV,NO MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) .ENDC .IIF DIF,STRING,R1, MOV STRING,R1 .IF NB,FIELD ZZZZZB = 0 ZZZZZI = -1 ZZZZZR = -1 .IRPC X, ZZZZZA = -1 .IIF IDN,X,O, ZZZZZA = 1 .IIF IDN,X,D, ZZZZZA = 1 .IIF IDN,X,H, ZZZZZA = 1 .IIF IDN,X,R, ZZZZZA = 1 .IF NZ,ZZZZZA+1 .IF Z,ZZZZZR+1 .IIF IDN,X,O, ZZZZZR = 0 .IIF IDN,X,D, ZZZZZR = 1 .IIF IDN,X,H, ZZZZZR = 2 .IIF IDN,X,R, ZZZZZR = 3 .ENDC .ENDC .IIF IDN,X,F, ZZZZZA = 0 .IF Z,ZZZZZA+1 .ERROR FIELD ; ILLEGAL F I E L D SPECIFIER .MEXIT .ENDC .IIF Z,ZZZZZI+1, ZZZZZI = ZZZZZA ZZZZZB = ZZZZZB + ZZZZZI .ENDR .IF NB,RADIX .IF Z,ZZZZZR+1 .IIF IDN,RADIX,OCTAL, ZZZZZR = 0 .IIF IDN,RADIX,DECIMAL, ZZZZZR = 1 .IIF IDN,RADIX,HEX, ZZZZZR = 2 .IIF IDN,RADIX,RAD50, ZZZZZR = 3 .ENDC .ENDC .IF Z,ZZZZZR+1 .ERROR RADIX ; ILLEGAL R A D I X SPECIFIER .MEXIT .ENDC MOV #<!ZZZZZR>,R2 .ENDC CALL CABF .IIF DIF,NUMBER,R0, MOV R0,NUMBER .IF DIF,REGSAV,NO MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 .ENDC .ENDM CABF .MACRO CBAF FIELD,RADIX,NUMBER=R0,STRING=R1,REGSAV=NO .GLOBL CBAF .IF DIF,REGSAV,NO MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) .ENDC .IIF DIF,NUMBER,R0, MOV NUMBER,R0 .IIF DIF,STRING,R1, MOV STRING,R1 .IF NB,FIELD ZZZZZZ = 0 ZZZZZB = 0 ZZZZZR = -1 .IRPC X, ZZZZZA = -1 .IIF IDN,X,O, ZZZZZA = ^B11 .IIF IDN,X,D, ZZZZZA = ^B11 .IIF IDN,X,H, ZZZZZA = ^B11 .IIF IDN,X,R, ZZZZZA = ^B11 .IF NZ,ZZZZZA+1 .IF Z,ZZZZZR+1 .IIF IDN,X,O, ZZZZZR = 0 .IIF IDN,X,D, ZZZZZR = 1 .IIF IDN,X,H, ZZZZZR = 2 .IIF IDN,X,R, ZZZZZR = 3 .ENDC .ENDC .IIF IDN,X,F, ZZZZZA = ^B01 .IIF IDN,X,S, ZZZZZA = ^B10 .IF Z,ZZZZZA+1 .ERROR FIELD ; ILLEGAL F I E L D SPECIFIER .MEXIT .ENDC ZZZZZZ = + ZZZZZA ZZZZZB = ZZZZZB + 1 .ENDR .IF GT,ZZZZZB-7 .ERROR FIELD ; F I E L D SIZE TO LARGE .MEXIT .ENDC .IF NB,RADIX .IF Z,ZZZZZR+1 .IIF IDN,RADIX,OCTAL, ZZZZZR = 0 .IIF IDN,RADIX,DECIMAL, ZZZZZR = 1 .IIF IDN,RADIX,HEX, ZZZZZR = 2 .IIF IDN,RADIX,RAD50, ZZZZZR = 3 .ENDC .ENDC .IF Z,ZZZZZR+1 .ERROR RADIX ; ILLEGAL R A D I X SPECIFIER .MEXIT .ENDC ZZZZZZ = ZZZZZZ*4 MOV #,R2 .ENDC CALL CBAF .IF DIF,REGSAV,NO MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 .ENDC .ENDM CBAF .MACRO ENCODE FIELD,ADDRESS ZZZZZZ = 0 ZZZZZB = 0 ZZZZZR = 0 .IRPC X, ZZZZZA = -1 .IIF IDN,X,H,ZZZZZA = 3 .IIF IDN,X,D,ZZZZZA = 3 .IIF IDN,X,O,ZZZZZA = 3 .IF NE,ZZZZZA+1 .IF EQ,ZZZZZR .IIF IDN,X,H,ZZZZZR=2 .IIF IDN,X,D,ZZZZZR=1 .ENDC .ENDC .IIF IDN,X,S,ZZZZZA = 2 .IIF IDN,X,F,ZZZZZA = 1 .IF EQ,ZZZZZA+1 .ERROR FIELD ; ILLEGAL F I E L D SPECIFIER .MEXIT .ENDC ZZZZZZ = + ZZZZZA ZZZZZB = ZZZZZB + 1 .ENDR .IF GT,ZZZZZB-7 .ERROR FIELD ; F I E L D SIZE TO LARGE .MEXIT .ENDC ZZZZZZ = ZZZZZZ*4 .WORD ZZZZZZ!ZZZZZR,ADDRESS .ENDM ENCODE .MACRO CMDTAB TABLE TABLE: .MACRO CMDENT NAME,VAL1,VAL2=0,VAL3=0 .SAVE .PSECT MESSAGE ZZZZZ1 = . .ASCIZ /NAME/ .RESTORE .WORD ZZZZZ1,VAL1,VAL2,VAL3 .ENDM CMDENT ; .MACRO CMDEND .WORD 0,0,0,0 .MACRO CMDTAB .ENDM CMDTAB .MACRO CMDENT .ENDM CMDENT .ENDM CMDEND ; .ENDM CMDTAB .MACRO ABORT MES,CND,?LA,?LB .GLOBL ABORT .IF NB,CND .IFT B'CND LA BR LB LA': JSR R1,ABORT .ASCII /MES/<200> .EVEN LB': .IFF JSR R1,ABORT .ASCII /MES/<200> .EVEN .ENDC .ENDM ABORT .MACRO .PUSH ARG .IF IDN,,ALL .IFT .IRP X, MOV X,-(SP) .ENDR .IFF .IRP X, MOV X,-(SP) .ENDR .ENDC .ENDM .PUSH .MACRO .POP ARG .IF IDN,,ALL .IFT .IRP X, MOV (SP)+,X .ENDR .IFF .IRP X, MOV (SP)+,X .ENDR .ENDC .ENDM .POP .MACRO FILSPT FDB.NR = 0 FDB.NA = 2 FDB.CH = 4 FDB.FL = 6 F.BUSY = 1 F.NERR = 2 F.EOF = 200 FDB.ER = 7 FDB.BL = 10 FDB.RQ = 12 FDB.NB = 14 FDB.CP = 16 FDB.BF = 20 .GLOBL FIL.NM,FIL.NW,FIL.LK,FIL.NA,FIL.RD,FIL.WT,FIL.CL,FIL.PG,FIL.ST ; .MACRO STATUS FDB=R5 .IIF DIF,FDB,R5 MOV R5,-(SP) CALL FIL.ST .ENDM STATUS ; .MACRO FDB NAME,CHANNEL,BUFFER=0,SIZE=0,GLOBL .IIF NB,GLOBL, .GLOBL NAME NAME: .WORD 10$ ; RAD50 FILE NAME .WORD 20$ ; ASCII FILE NAME .WORD CHANNEL ; CHANNEL NUMBER .WORD 0 ; STATUS .WORD 0 ; START BLOCK .WORD SIZE ; REQUEST SIZE .WORD 0 ; FILE SIZE .WORD 0 ; COPIED .WORD BUFFER ; BUFFER ADDRESS 10$: .WORD 0,0,0,0 20$: .ASCII / /<200><0> .ENDM FDB ; .MACRO NAME FDB=R5,STRING=R4,ERROR,EXTENSION=R0 .IIF DIF,FDB,R5 MOV FDB,R5 .IIF DIF,STRING,R4 MOV STRING,R4 .IIF DIF,EXTENS,R0 MOV EXTENS,R0 CALL FIL.NM .IIF NB,ERROR, BCS ERROR .ENDM NAME ; .MACRO LOOKUP FDB=R5,ERROR .IIF DIF,FDB,R5 MOV FDB,R5 CALL FIL.LK .IIF NB,ERROR, BCS ERROR .ENDM LOOKUP ; .MACRO ENTER FDB=R5,SIZE=#-1,ERROR .IIF DIF,FDB,R5 MOV FDB,R5 MOV SIZE,FDB.BL(R5) CALL FIL.NW .IIF NB,ERROR, BCS ERROR .ENDM ENTER ; .MACRO CLOSE FDB=R5 .IIF DIF,FDB,R5 MOV FDB,R5 CALL FIL.CL .ENDM CLOSE ; .MACRO PURGE FDB=R5 .IIF DIF,FDB,R5 MOV FDB,R5 CALL FIL.PG .ENDM PURGE ; .MACRO READ FDB=R5,BLOCK,SIZE,BUFFER,ERROR,EOF,?LA,?LB .IIF DIF,FDB,R5 MOV FDB,R5 .IIF NB,BLOCK, MOV BLOCK,FDB.BL(R5) .IIF NB,SIZE, MOV SIZE,FDB.RQ(R5) .IIF NB,BUFFER, MOV BUFFER,FDB.BF(R5) CALL FIL.RD BCC LB .IIF NB,EOF, BEQ EOF .IIF NB,ERROR, BCS ERROR LB: .ENDM READ ; .MACRO WRITE FDB=R5,BLOCK,SIZE,BUFFER,ERROR,EOF,?LA,?LB .IIF DIF,FDB,R5 MOV FDB,R5 .IIF NB,BLOCK, MOV BLOCK,FDB.BL(R5) .IIF NB,SIZE, MOV SIZE,FDB.RQ(R5) .IIF NB,BUFFER, MOV BUFFER,FDB.BF(R5) CALL FIL.WT BCC LB .IIF NB,EOF, BEQ EOF .IIF NB,ERROR, BCS ERROR LB: .ENDM WRITE ; .MACRO FILSPT .ENDM FILSPT .ENDM FILSPT .MACRO ERRLST RTN,ERRORS .PSECT MESSAGE .EVEN ZZZZZZ = . .IRP X, .WORD X .ENDR ZZZZZN = . .ASCII /FIL.'RTN'/<200> .PSECT INDTAB COD.'RTN' = <.-INDTAB>*10 .WORD ZZZZZZ,ZZZZZN .ENDM ERRLST .MACRO FORM NAME,BLOCK,ENTRIES=100.,DEVICE=DBS .enabl lc .nchr zzzzzz,NAME .iif ne,zzzzzz-6,.error zzzzzz ; NAME not 6 letters long! .iif ndf,BASE.X BASE.X = 0 .iif ndf,BASE.Y BASE.Y = 5. .iif ndf,.PROT. .PROT. = ^O100000 .ASC. = 1 .ALP. = 2 .NUM. = 3 .DAT. = 4 NUMFDB = 0 NUMKDB = 0 RECOFS = 0 KEYOFS = 0 NUMPAG = 0 SPCFLG = 0 CASFLG = 0 .psect frmhdr FORM$$: .psect frmfdt FDT: .psect frmkdt KDT: .psect frmrcd RECADD: .psect frmkey KEYADD: .psect frmlbf LABELF: .psect frmlbk LABELK: .psect frmfil .psect frmmes .MACRO $$NAME NAME .nchr zzzzzz, .if eq,zzzzzz-2 .iif eq,"NAME-^O067162 spcflg = spcflg!1 .iif eq,"NAME-^O067143 spcflg = spcflg!2 .iif eq,"NAME-^O072163 spcflg = spcflg!4 .iif eq,"NAME-^O062143 spcflg = spcflg!8. .iif eq,"NAME-^O062145 spcflg = spcflg!16. .iif eq,"NAME-^O062144 spcflg = spcflg!32. .endc .psect frmmes $$$SON = . .irpc X, .byte ''X!casflg .endr .byte ^O200 .ENDM $$NAME .MACRO $$DATA DATA,TYPE,PROTEC,PSECT .psect psect $$$SOD = . $$$SIZ = 0 .if le,TYPE-2 .ascii /DATA/ $$$SIZ = .-$$$SOD .endc .if eq,TYPE-3 .even $$$SOD = . .byte 0,0 .nchr $$$SIZ, .endc .if eq,TYPE-4 .even $$$SOD = . .byte 8.,0 $$$SIZ = 8. .endc .iif eq,$$$SIZ .error TYPE ; illegal field t y p e .iif ne,PROTEC $$$TYP=TYPE+.PROT. .iif eq,PROTEC $$$TYP=TYPE .ENDM $$DATA .MACRO FIELD X,Y,TYPE,DATA,XN=0,NAME,LD='[,RD='],CHECK=-1,PROTEC=0,PAGE=0,KEY $$name $$data ,TYPE,PROTEC,frmrcd RECOFS = $$$SOD-RECADD .psect frmfdt .word $$$TYP,$$$SIZ,RECOFS,X+BASE.X,Y+BASE.Y,CHECK,PAGE,0 .byte XN+BASE.X,Y+BASE.Y .word $$$SON .byte X+BASE.X-1,Y+BASE.Y,LD,X+BASE.X+$$$SIZ,Y+BASE.Y,RD .if eq,NUMFDB .ift .word 0,0,LABELF-FDT .iff .word 0,0,0 .endc NUMFDB = NUMFDB+1 .iif lt,NUMPAG-PAGE, NUMPAG = PAGE .if nb,key $$name $$data ,TYPE,0,frmkey KEYOFS = $$$SOD-KEYADD .psect frmkdt .word $$$TYP,$$$SIZ,KEYOFS .word 31.,5.+NUMKDB .word CHECK,0000,0 .byte 10.,5.+NUMKDB .word $$$SON .byte 30.,5.+NUMKDB,'[ .byte 31.+$$$SIZ,5.+NUMKDB,'] .if eq,NUMKDB .ift .word 0,0,LABELK-KDT .iff .word 0,0,0 .endc NUMKDB = NUMKDB+1 .endc .ENDM FIELD .MACRO LABEL X,Y,NAME,PAGE=0 .if dif,page,key .ift .psect frmlbf .byte PAGE,base.y+Y,base.x+X .ascii /'NAME'/<^O200> .iff .psect frmlbk .byte 0,base.y+Y,base.x+X .ascii /'NAME'/<^O200> .endc .ENDM LABEL .MACRO SPARE X,Y,TYPE,DATA,XN=0,NAME,LD='[,RD='],CHECK=-1,PROTEC=0,PAGE=0 $$data ,TYPE,PROTEC,frmrcd RECOFS = $$$SOD-RECADD .psect frmfdt .ENDM SPARE .MACRO FORMEND .ENDM FORMEND .MACRO KEY X,Y,TYPE,DATA,XN=0,NAME,LD='[,RD='],CHECK=-1,PROTEC=0 $$name $$data ,TYPE,0,frmkey KEYOFS = $$$SOD-KEYADD .psect frmkdt .word $$$TYP,$$$SIZ,KEYOFS,X+BASE.X,Y+BASE.Y,CHECK,0000,0 .byte XN+BASE.X,Y+BASE.Y .word $$$SON .byte X+BASE.X-1,Y+BASE.Y,LD,X+BASE.X+$$$SIZ,Y+BASE.Y,RD .if eq,NUMKDB .ift .word 0,0,LABELK-KDT .iff .word 0,0,0 .endc NUMKDB = NUMKDB+1 .ENDM KEY .MACRO KEYEND .if eq,spcflg casflg = ^O40 field 03.-base.x,23.-base.y .NUM.,<.....> 00.-base.x,rn,PROTEC=1,KEY=Y field 14.-base.x,23.-base.y .NUM.,<.....> 11.-base.x,cn,PROTEC=1,KEY=Y field 25.-base.x,23.-base.y .ASC.,<..> 22.-base.x,st,PROTEC=1,KEY=Y field 42.-base.x,23.-base.y .DAT.,<........> 39.-base.x,cd,PROTEC=1 field 56.-base.x,23.-base.y .DAT.,<........> 53.-base.x,ed,PROTEC=1 field 70.-base.x,23.-base.y .DAT.,<........> 67.-base.x,dd,PROTEC=1 casflg = 00 .endc ; .psect frmrcd RECEND: .psect frmkey KEYEND: .psect frmlbf .byte ^O200 .psect frmlbk .byte ^O200 ; zzzzzz = RECEND-RECADD .if ge,zzzzzz-512. .ift BLK = <<&^O177777>/^O1000> .iff BLK = -1. .iif le,zzzzzz-256., BLK=-2 .iif le,zzzzzz-128., BLK=-3 .iif le,zzzzzz-064., BLK=-4 .iif le,zzzzzz-032., BLK=-5 .iif le,zzzzzz-016., BLK=-6 .iif le,zzzzzz-008., BLK=-7 .iif le,zzzzzz-004., BLK=-8. .iif le,zzzzzz-002., BLK=-9. .endc .if nb,BLOCK .iif lt,BLOCK-BLK .error ; require blocking factor of BLK .iif gt,BLOCK-BLK .print BLK ; can reduce blocking factor BLK = BLOCK .endc BUFBLK = BLK ; .iif lt,BUFBLK, BUFBLK=1 .iif eq,NUMPAG, NUMPAG=1 .iif eq,NUMFDB .error ; no fields defined .iif eq,NUMKDB .error ; no keys defined ; .psect frmfil FDBPAR: .word 10$,20$,^O10,0,0,^O400,0,0,BUFPAR 10$: .rad50 /DEVICE'NAME'PAR/ 20$: .ascii /DEVICE':'NAME'.PAR/<^O200>> <0> FDBDAT: .word 10$,20$,^O11,0,0,,0,0,BUFDAT 10$: .rad50 /DEVICE'NAME'DAT/ 20$: .ascii /DEVICE':'NAME'.DAT/<^O200>> <0> FDBKEY: .word 10$,20$,^O12,0,0,^O2000,0,0,BUFKEY 10$: .rad50 /DEVICE'NAME'KEY/ 20$: .ascii /DEVICE':'NAME'.KEY/<^O200>> <0> BUFPAR: .blkw ^O400 BUFDAT: .blkw BUFKEY: .blkw ^O2000 .psect frmhdr NAME:: .word RECADD,FDT,NUMFDB,RECEND-RECADD .word NUMPAG,BLK,ENTRIES,FDBPAR .word FDBDAT,FDBKEY,0,0 .word KEYADD,KDT,NUMKDB,KEYEND-KEYADD .asciz /'NAME'/<0> .ENDM KEYEND ; .ENDM FORM END ,wwwwwwv@HXPh`psBa&feBJ%@& fEA  w  ,   K''b'''' '!\*#\*$\*%\*&_ H _ H _ H _ H&!_ H!_ H"_ H"_ H"_ H\#_ H _ H _ H'_ H'_ H'_ H(_ H(_ H\)_ H)_ H)_ H$'_ H$'_ H$'_ H$'_ H$x(_ H$(_ H$(_ H*'_ H*(_ H**(_ H*(_ H*)_ H*R)_ H*l)_ H0'_ H0(_ H0(_ H0(_ H0V)_ H0h)_ H0v)_ H6'_ H6'_ H6(_ H6.(_ H6(_ H60)_ H6>)_ H<'_ H<'_ H<@(_ H<l(_ H<)_ H<<)_ H<~)_ HB^*_ HB*_ HB*_ HH^*_ HN^*_ HN*_ HNV+_ HTr*_ HT+_ HT+_ HT+_ HT+_ HT6,_ HT, $ `     7A B  @p @t eteE E Eu E  rt B~ ^ J B~@ ~  "$  ~  w U f  @ 5   5 5   d   N r t  8 \ ^ d&f&fT nE5 5 .Em,Q~ &f&f !E5 EmU~E   &&f D *E5 5 ` Dm~ P&&fB E5 5 fDmT~  與E  5 @ fA  `B~7 df&A   D  B~ M  B`~2@ E?tEu& : * 4>7w 7w 7w &@  &fX  ~7 7 7  j&f& :x&@ (~& f&f& . 7( &  h &   ~  ¢ ð 7  - 7 m n7P `H V  1Q$ & m mm t t Z|   V r      & 8  2 J6BN  5 v & 0 0 0 bf  hmW- & x&f j00-00-70 39-19-99 00-00-72 0fjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7 b A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- 6& @E5v J z   :5X&5P 5D0:- &e & B & ȋ  &  Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?: A G M pT 6Y :_ :f >m Fv ~ R  wF w\  wP `7 7 p  e ~wlFEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ J&  j $  &  & wWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwFEDMNG-fatal-illegal template, no fields  w, e ~wFEDMNG-fatal-illegal template, blank pagew7&f5t&d \& Z\ZwTR& H@  4 & ,   e w,  w, & & 5& Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!& t n &f&& `7 E  ԋ e ~& &f   7, 8 e ~&f  e ~&f  e ~&f& 7, /! -    & @` & j&f&f7wEA`   ( (Ba N Ba B l Ba $E Fѕ-tE 4ѕ-tEeH  &f&fEA` Ca  Ba  Eы Et`ы HEt `Ba X&f&fEA` h&f&fEA` hrrrBaҕ C~Ba Ba &f&fEA`  2    ы  ы&&fEj TTTT7L7H7D LB~fEEB`&fA  \  H~ 7 f&fȋ T A    &~ pUte  ~& D 2DlE )7 B7 @ nD#7( & ~-  JD#  wfwp 诇BAbl7 7 D D#f 0쓤C~7 ~- D#f 들 C~  ww&f&f     z l&~ &  " \w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Record  &f&f B~ @ @E` e e~@@c 3&f&@@cB W `E D`D ~ DBSMAK RDM300482 Enter name of TEMPLATE: creating database files initializing PAR file.. initializing KEY file.. initializing DAT file.. Database now setup!DBSMAK-fatal-file creation failure! 6AB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORT@5 @5 7 )W   &f@e  w|  w7Hfz!& A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7r#7 w|,'# Bw@BBaEBaEf   ? ?-   ?5*g%A E@$q%@E  @l$o%@s%5f&fP& *    U `ߋ*$$$%%%&%4%<%J%R%`%&&&&&&'' '%FIL.SE%%%t%%%%FIL.NM%%%%%%&FIL.NW%%%%&%%FIL.LK.&r&=&I&_&%%FIL.RD.&r&=&I&_&%%FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? H s, vtHs`^ '` 'by<'dH8 h-0_   2! """""##& #" P `_b Hdbb8#  e0P~#鈱-sa-s(Y8# &#@I@S@Z@M #j#I#S#Z'b;; #MUP$5$'fקH(($* Hׯ އ *$6#0$v6#7$;;6#B$6#I$6#P$y#X$;;6#]$v6#d$v6#k$#$& # d dxv@HXPh`p;; (80H@PyX`phxF,CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ f&fX) 2v :b L_U) 5 :b > u "VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  r܀wxDBSLDR-fatal-illegal TEMPLATE ~wRDBSLDR-fatal-cannot read TEMPLATEw,DBSLDR-fatal-missing FIELD definitionswDBSLDR-fatal-missing KEY defibtions(5  "E"te " j)r) E    f'  U@EABCDPQRS7H &0& [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    ( e   ),)6)6)*) & e   &   h& [ 2 ~K v& h[ `2 XJ P& D[ K 6& (H J && Y e E e E U$*U$E    Ef(ɋ @f (ɋ @ABI &f f  N & |(  e  (((( & xe    & F > 6&f@  &  & &e OOe &E & & & ~0E    EUf'e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$6E   EUf'e @ &f@  & &f ^   쇗 N      & d & R J B x& ,( (&  & && = e E e E U$<E   EUf'e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$B&f ѕ0 `* ******w *w '*w *w vc*w l *w b'd w N+w D+w :+w 0+w &? +w "+w @ Eѕ*C&D &E r   "+ •0 • ?0123456789ABCDEFH&&f E9E E+5   Z  ѕ* B   0Ü\+ѐ C C C EÜX+ѐ 0 +.+<+J+@'d @ 00123456789ABCDEF?Nf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋ   & e` B዇E0% B዇E0% ዴ ADE+ % b %e ee e  (@TU$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h "ׯn (*~zfJW E W  y6+^+f+j+wCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& w,MEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&~, wMEMMNT-fatal-memory not availableea@! 12-Jun-86 DBSFOR - if open database with device=NL0 skip file open. This is useful when want to load a template that is to be used purely for TTY i/o and don't want or need database files. FEDMNG - modify external checker support code slightly to correct little bugs. 2-Jun-86 Modified MENU to support extra operators in outer most command decoder (ie before $@ operator). These are $C clear screen $P check password $[ enter option keyword and execute $P format is "$Pxxxxx" where XXXXX is series of characters that must match those entered from keyboard. $[ operator inputs a string from terminal. Searchs and resumes execution of menu file from after "$]xxxxx" where is series of characters entered from keyboard. 3-Feb-86 Added function 39 to DBSFOR to allow an external FIELD check routine to be linked to the forms entry module FEDMNG. (Both DBSFOR and FEDMNG were modified). The calling sequence is as follows EXTERNAL CHECKR ... CALL DBSFOR (39,1,CHECKR) ! enables checker CALL DBSFOR (16,?,?,?,?) ! edit template CALL DBSFOR (39,0,0) ! disable checker The effect if this is that the forms entry manager (FEDMNG) issues the following instruction after each field is editted CALL CHECKR (NAME,ICHR) where NAME is the field name ICHR is the terminating character The CHECKR routine can use NAME and DBSFOR(2) to examine the field contents. If they are exceptable simply return. If they are not, issue an error message and set ICHR to zero. Setting ICHR to zero causes FEDMNG to request input of the field data. 5-Apr-86 Change MENU to support alpha to numeric conversion for ISC terminal only and allow "." key to activate menu option - use for "EXTRA" options 27-Nov-85 Correct logic error in FNDFOR that caused crash when using small number of records. 15-Oct-85 Change CONIO so that user not requested to input terminal type if running under TSX-Plus and terminal type set to VT52, VT100, ADM3A or HAZELINE. Makes it easier to use CUSPs in stand alone mode. (Some command files will have to be changed to remove the nolonger required response.) Change V10IO, V52IO and ADMIO modules so that they now eat up the LF that follows each CR. Previously trailing LF would cause program run after DBSMNG to muck up. 23-Sep-85 Add in CALL DBSFOR(38). Operates identically to (37), but performs operation with LOCK enabled. Should be used to create a new record when have multiple (write) access possible. Note With (37) and (38) operations the user can get the "rn", "cn" etc for the newly created record by using (2) function. 5-Sep-85 Changes to DBSFOR and KEYGEN. Minor change to KEYGEN now causes DBSMNG to generate the same key value for upper and lower case characters in a ascii type key field. This means that if DBSEDT is used to locate a record with NAME=Jones both NAME=JONES and NAME=jones are valid matches. New DBSFOR functions added. These are CALL DBSFOR (33) performs DBSMNG unlock CALL DBSFOR (34) performs DBSMNG lock CALL DBSFOR (35,IREC) performs locked record write CALL DBSFOR (36,STR,LEN,IKEY) generates 16 bit key for ascii string CALL DBSFOR (37) creates a new record The DBSMNG locking mechanism is only supported under TSX-Plus. Under all other operating systems locking acts as a NOP. Locking under TSX-Plus uses the message channel facility. A token (ie a 1 byte message - contents irrelavent) must be sent to the DBSMNG message channel when the system is booted. This can be done by writing a small program as follows CALL DBSFOR (17) ! initialize interface CALL DBSFOR (33) ! create initial token END and envoking it in the bootup command file. The LOCK/UNLOCK operates by performing a read-wait and a write on the DBSMNG channel respectively. The CALL DBSFOR (35,IREC) instruction performs a read-wait on the DBSMNG channel. Once the program has the token it updates the database and then releases the token by sending a 1 byte message to the DBSMNG message channel. This ensures that only one program can do a DBSFOR (35,IREC) operation at any time. The CALL DBSFOR (36,STR,LEN,IKEY) instruction returns a 16 bit value in IKEY equivalent to the DBSMNG key value for the LEN character string passed in STR. The CALL DBSFOR (37) instruction locates the next free record in the database and outputs the current buffer contents to it. The 'rn', 'cn' etc special fields are setup by DBSFOR (37) for the user. 3-Jul-85 Trap IGTMEM error returned by FORTRAN ots in DBSFOR. Now abort if not enough memory to load template. 16-MAY-85 Change RPTFIO so that TSX-Plus doesn't crash if no output produced. This was really a TSX-Plus bug! Had to rebuild REPORT, DBSSTS and BUCKUT. Fix sizing bug in BACKUT. BACKUT previously failed to calculate the size of the backup file correctly. 29-May-85 Change FNDFOR so that can be called to reinitialize another input file. This is a KP special. 7-May-85 Correct bug in BCDSPT that causes REPORT to crash when BCD operation performed. 17-Apr-85 Added SELECT and BUCKUP commands to INSKEY program. The BACKUP command is the opposite of the NEXT command. It displays the previous match. The SELECT command is only enabled when the file INS:INSKEY.INX exists. Pressing S causes the [rn] of the record currently on the screen to be written to the file INS:INSKEY.INX in the same format as would be written by SELECT. This command can be used in place of SELECT to determine those records to be processed in a cusp chain. 13-Mar-85 DBSCPY Correct coding error so that date fields properly copied. FLDIO Correct coding error to increase Year date range from 15 to 31 years. 12-Feb-85 SELECT Add $= operator into $L command. Operator syntax is $=12 (where 1 and 2 represent characters), and results in all occurances of character 1 will be replaced by character 2. 4-FEB-85 ******** REPORT Added in SYSTEM variables, 0 argument for $BF operator and $= terminator for $< and $F operators. 1) A number of new variables are now supported. These variables hold system specific information and are represented by a ~ followed by a single uppercase character. The system variables are ~D date ~T time ~N user name ~P project number ~Q programmer number ~J job number ~L line number 2) The inclusion of a 0 argument in a $BF command (eg $BFA0^H) will result in any leading spaces being converted to zeros. 3) A $=12 terminator is now supported for the $F and $< operators. All occurances of character 1 will be replaced by character 2. wwwww|wv8@PH`XhsBa&feBJ%@& fEA  w     Kb_ H _ H0 _ H@ _ H _ H_ H_ H_ Hz_ H_ H $ _ H _ H _ H~_ H _ H>_ H_ H _ HN_ H$ _ H$R_ H$f_ H$j_ H$_ H$ _ H$F_ H*&_ H*_ H*_ H*n_ H*_ H*_ H*_ H0 _ H0_ H0_ H0H_ H0_ H0_ H0_ H6 _ H6_ H6_ H6_ H6H_ H6_ H6_ H< _ H<_ H<_ H<_ H<_ H<_ H<_ HH_ HN_ HN_ HN_ HT_ HT_ HT_ HT<_ HT|_ HT_ HT D ~ &h .h .7`      wDBSSTS RDM120582: Database Template Disassembler! wx------ wj wbDatabase name: e ZwB Record size: h  h (w wFields w Type Size Offset Check Name P Rw wKeys w Type Size Offset Check Name  e  .w  BEPh * ѐB B B ѕ ѕh 4@ , * "e 8@ eE@   U  N  5  7  d RPTINT-fatal-cannot initialize report stream! dfz  u b & PRPTEND-fatal-cannot close report stream! 5? - f   @ RPTOUC-fatal-output stream error! DBSSTS RDM300482 Enter name of TEMPLATE: Enter output file name:    LST:REPORT.LST@5 @5 7 )W   &f@e  w|  w7Hf& A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w77 w|T Bw@BBaEBaEf \  ? ?-   ?5*A E@N@E  @lL@5f&fP& *    U `ߋ*dx /<PdwuFIL.SE7!-uuFIL.NM7BUduFIL.NW7BUuuFIL.LKuuFIL.RDuuFIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? H s, Hs '` 'by<'dH8 h-_    LT\d&>& &L `_b Hdb>b  e0P~I鈱- sa-s(Y& &&@I@S@Z@M &j&I&S&Z'b;; &MUP$5$'fקH(($* Hׯ. & v;;y;;vv&& & d dpxv8@PH`Xh;; 0(@8HyPXh`xpFCRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ f&f v b _U 5 b > u VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  wDBSLDR-fatal-illegal TEMPLATE wDBSLDR-fatal-cannot read TEMPLATEwDBSLDR-fatal-missing FIELD definitionswZDBSLDR-fatal-missing KEY defibtions(5  "E"te " & E    fl  U@EABCDPQRS7 && [ 0 ; 1 m &Z [ 0 m x&f@  \& P H&f    z e    & e   &   h&X [ 2 ~K v&2 h[ `2 XJ P& D[ K 6& (H J && Y e E e E U$*U$E    Efɋ @fɋ @ABI &f f  N &   e  :Fl & xe    & F > 6&f@  &  & &e OOe &E & & & ~0E    EUfje @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$6E   EUfje @ &f@  & &f ^   쇗 N      & d & R J B x& ,n (&  & && = e E e E U$<E   EUfje @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$B&f ѕ0 ` D:0&w Nw 'Pw Rw vcTw l Vw b'd w Nw Dw :w 0w &?w w @ Eѕ*C&D &E r   " •0 • ?0123456789ABCDEFH&&f E9E E5   Z  ѕ* B   0Üѐ C C C EÜѐ 0@'d @ 00123456789ABCDEF?Nf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋ   & e` B዇E0% B዇E0% ዴ ADE, % b %e ee e  (@TU$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h ׯ (*~zfW E W  ywCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& wMEMMNR-fatal-memory not availablee&g(etE w>MEMMNE-fatal-.GETCOR failedwg((& wMEMMNT-fatal-memory not availableea@! F I L I N G COMPUTERIZED FILE SYSTEM 15 October, 1984 Ray Di Marco The FILING package allows information to be stored on "cards". Each card can can be assigned upto eight "keywords" which can be used to quickly retrieve information. Facilities are provided to * create, edit and delete cards * Retrieve cards that match given keywords * Produce a multikey hardcopy index * Produce hardcopy reports The DBSMNG (database management package) is required to run FILING. Users must be capable of operating the DBSMNG editor (DBSEDT) and the DBSMNG inspection by keyword utility (INSKEY). DBSEDT and INSKEY are described in the DBSMNG documentation. -1- 1 INSTALLING THE FILING PACKAGE FILING is distributed on a RX02 diskette (or equivalent). The FILING installation procedure is * Make a backup copy of the distribution kit * Determine the number of "FILING" cards required * Allocate a FILING database area * Intialize the FILING database The installation procedure is outlined in more detail in the rest of this chapter. It is assumed that the user has access to the DBSMNG distribution kit (and to either the RT-11 PATCH or SIPP utilities if more that 200 filing cards are wanted). 1.1 ALLOCATION OF AREAS The following logical names will have to be assigned before the FILING system can be initialized. AREA USAGE F: volume on which the FILING distribution kit resides LB: volume on which the DBSMNG distribution kit resides DBS: FILING database area LP: hardcopy device for reports The FILING database and index files will be created on the F: area. 260 blocks are required on F: to support 200 filing cards. -2- 1.2 DETERMINING THE DATABASE SIZE The size of the FILING database (ie the number of cards/records available to file data) is determined by the database TEMPLATE. The file F:FILING.SAV holds (is) the FILING database template. The distributed TEMPLATE is configured for 200 cards. The TEMPLATE can be altered to provide a larger number of cards if adequate room is available on the DBS: area. (Each card requires 1.3 blocks.) The rest of this section may be skipped if 200 cards/records are acceptable. The rest of this section explains how the number of FILING cards can be varied. The number of database records in a database is stored in the seventh word of the second block of the TEMPLATE (ie at offset 1014 octal from the start of the file). The easiest way of varying the database size is to patch the TEMPLATE. This can be done using either SIPP or PATCH, the RT-11 utilities that allow the contents of a file to be patched. (Alternately TPLMAC could be used to translate the card image F:FILING.TPL to a set of macro definitions which could then be assembled and linked. This alternate procedure is detailed in the DBSMNG documentation.) 1.2.1 MODIFYING DATABASE SIZE WITH PATCH - the easiest way of varying the database size is to use the RT-11 PATCH.SAV utility. Location 1014 (octal) is opened and the new database size (in records) is entered. Remember that PATCH operates in OCTAL. The terminal dialog for changing the database size to 400 records using PATCH is as follows. .r patch ?PATCH-I-[+2K CORE] FILE NAME-- *f:filing *1014/ 310 620 *e 1.2.2 MODIFYING DATABASE SIZE WITH SIPP - the database size may by varied using the RT-11 SIPP.SAV utility. Location 1014 (octal) is opened and the new database size (in records) is entered. Remember that SIPP operates in OCTAL and requires 12 free blocks (on the F: area) to make a copy of the file. The terminal dialog for changing the database size to 400 cards using SIPP is as follows. .r sipp *f:filing.sav/a Base? 0 Offset? 1014 Base Offset Old New? 000000 001014 000310 610 000000 001016 004466 ^y *^c -3- 1.3 INITIALIZING DATABASE FILES FILING uses a DBSMNG database and an index file. The database is used to hold the "filing" cards. The index file is used to generate reports and allow multi-key access of cards. The database is created using the DBSMAK utility. The index file is created using the monitor CREATE command. 1.3.1 DATABASE INITIALIZATION - The FILING database is initialized with the DBSMAK utility. The database initialization dialog is as follows. .run lb:dbsmak CRT type: vt100 DBSMAK RDM300482 Enter name of TEMPLATE: F:FILING creating database files initializing PAR file.. initializing KEY file.. initializing DAT file.. Database now setup! 1.3.2 INDEX FILE INITIALIZATION - The index file is initialized using the RT-11 CREATE command. The initialization dialog is .creat dbs:filing.inx[38] where "38" is the size of the index file. The actual size of the index size must be 0.14 blocks per database record (ie 76 for 400 records). -4- 2 RUNNING FILING The following logical names will have to be assigned before the FILING system can be envoked. AREA USAGE F: volume on which the FILING distribution kit resides LB: volume on which the DBSMNG distribution kit resides DBS: FILING database area LP: hardcopy device for reports Once the logical areas have been assigned, FILING can be started by running the DBSMNG MENU program. MENU will request that the name of the file that contains the application menu be entered. In response type F:FILING.MNU MENU will then request that the user identify the type of terminal being used. (A list of valid terminal types can be obtained by simply pressing the [RETURN] key.) If you are using a VT100 simply type VT100 The easiest manner of starting up FILING is to store the commands in an indirect command file. An possible startup file could be ASS LD4 F ASS LD4 LB ASS LS LP ASS LD2 DBS RUN LB:MENU F:FILING.MNU VT100 As FILING uses standard DBSMNG utilities the reader is directed to the DBSMNG manual for operating instructions. -5- 3 USING FILING The FILING system allows a user to store and retrieve data on a computer. The system can be used to file memos and references or as a computerized index for books or files. The system is easy to use and can be quickly mastered. This chapter provides a number of hints on how to obtain the best performance from FILING. 3.1 ALLOCATING KEYWORDS FILING allows the user to store information on cards. To obtain maximum benefit from the system the user must fill out the "Keywords" fields correctly. The user may allocate upto eight keywords to each card. The keywords will be used to retrieve cards and should adequately reflect the information stored on each card. 3.2 INDEXING CARDS The DBSMNG editor (DBSEDT) is used to create, edit and delete FILING cards. The DBSMNG online multi-key utility (INSKEY) is used to retrieve information from the FILING system. INSKEY uses a special index file (DBS:FILING.INX) to allow information to be retrieved quickly. The index file effectively cross references each card so that INSKEY can quickly locate any cards that match a particular keyword. The index file must be regenerated prior to envoking INSKEY * when a new card has been added * when a card has been deleted * when a card's keywords have been modified * when reports have been generated -6- 3.3 USING HARDCOPY REPORTS Two special reports are provided to simplify maintenance of the FILING system and provide a hardcopy "backup". The KEYWORD report lists every keyword used. This report should be used to ensure that the number of different keywords is minimized. The hardcopy INDEX report lists are the possible keyword combinations. This report can be used to quickly find a cards which match specified keywords with having to use the computer. (The hardcopy INDEX report is normally used when FILING is used to hold the abstracts for documents stored in a conventional filing system.) 3.4 INSKEY ONLINE HELP A user can obtain a simple "help" message while using the INSKEY (multi-key) inspection utility by pressing the [H] key when being prompted for a command. -7- .SKIP 5 .CENTER .DIABLO 6 \HISHF I L I N G\HINO .DIABLO 8 \HIBOCOMPUTERIZED FILE SYSTEM\HINO .DIABLO 12 \INZD Ray Di Marco .UNFORMAT .SKIP 5 .FORMAT .JUSTIFY The FILING package allows information to be stored on "cards". Each card can can be assigned upto eight "keywords" which can be used to quickly retrieve information. Facilities are provided to *\FScreate, edit and delete cards .PARA *\FSRetrieve cards that match given keywords .PARA *\FSProduce a multikey hardcopy index .PARA *\FSProduce hardcopy reports The DBSMNG (database management package) is required to run FILING. Users must be capable of operating the DBSMNG editor (DBSEDT) and the DBSMNG inspection by keyword utility (INSKEY). DBSEDT and INSKEY are described in the DBSMNG documentation. .page .skip 6 .scenter \CH INSTALLING THE FILING PACKAGE FILING is distributed on a RX02 diskette (or equivalent). The FILING installation procedure is *\FSMake a backup copy of the distribution kit .PARA *\FSDetermine the number of "FILING" cards required .PARA *\FSAllocate a FILING database area .PARA *\FSIntialize the FILING database The installation procedure is outlined in more detail in the rest of this chapter. It is assumed that the user has access to the DBSMNG distribution kit (and to either the RT-11 PATCH or SIPP utilities if more that 200 filing cards are wanted). .SKIP 4 .SCENTER \SE ALLOCATION OF AREAS The following logical names will have to be assigned before the FILING system can be initialized. .TABLE C....... L.......................................................... AREA USAGE F: volume on which the FILING distribution kit resides LB: volume on which the DBSMNG distribution kit resides DBS: FILING database area LP: hardcopy device for reports .TEND The FILING database and index files will be created on the F: area. 260 blocks are required on F: to support 200 filing cards. .SKIP 4 .SCENTER \SE DETERMINING THE DATABASE SIZE The size of the FILING database (ie the number of cards/records available to file data) is determined by the database TEMPLATE. The file F:FILING.SAV holds (is) the FILING database template. The distributed TEMPLATE is configured for 200 cards. The TEMPLATE can be altered to provide a larger number of cards if adequate room is available on the DBS: area. (Each card requires 1.3 blocks.) \HIBOThe rest of this section may be skipped if 200 cards/records are acceptable.\HINO The rest of this section explains how the number of FILING cards can be varied. The number of database records in a database is stored in the seventh word of the second block of the TEMPLATE (ie at offset 1014 octal from the start of the file). The easiest way of varying the database size is to patch the TEMPLATE. This can be done using either SIPP or PATCH, the RT-11 utilities that allow the contents of a file to be patched. (Alternately TPLMAC could be used to translate the card image F:FILING.TPL to a set of macro definitions which could then be assembled and linked. This alternate procedure is detailed in the DBSMNG documentation.) .skip 2 \S>'MODIFYING DATABASE SIZE WITH PATCH' - the easiest way of varying the database size is to use the RT-11 PATCH.SAV utility. Location 1014 (octal) is opened and the new database size (in records) is entered. Remember that PATCH operates in OCTAL. The terminal dialog for changing the database size to 400 records using PATCH is as follows. .UNFORMAT .\ULr patch ?PATCH-I-[+2K CORE] FILE NAME-- *\ULf:filing *1014/ 310 \UL620 *\ULe .FORMAT .skip 2 \S+'MODIFYING DATABASE SIZE WITH SIPP' - the database size may by varied using the RT-11 SIPP.SAV utility. Location 1014 (octal) is opened and the new database size (in records) is entered. Remember that SIPP operates in OCTAL and requires 12 free blocks (on the F: area) to make a copy of the file. The terminal dialog for changing the database size to 400 cards using SIPP is as follows. .UNFORMAT .\ULr sipp *\ULf:filing.sav/a Base? \UL0 Offset? \UL1014 Base Offset Old New? 000000 001014 000310 \UL610 000000 001016 004466 \UL^y *\UL^c .FORMAT .skip 4 .SCENTER \SE INITIALIZING DATABASE FILES FILING uses a DBSMNG database and an index file. The database is used to hold the "filing" cards. The index file is used to generate reports and allow multi-key access of cards. The database is created using the DBSMAK utility. The index file is created using the monitor CREATE command. .SKIP 2 \S>'DATABASE INITIALIZATION' - The FILING database is initialized with the DBSMAK utility. The database initialization dialog is as follows. .unformat .\ULrun lb:dbsmak CRT type: \ULvt100 DBSMAK RDM300482 Enter name of TEMPLATE: \ULF:FILING creating database files initializing PAR file.. initializing KEY file.. initializing DAT file.. Database now setup! .FORMAT .SKIP 2 \S+'INDEX FILE INITIALIZATION' - The index file is initialized using the RT-11 CREATE command. The initialization dialog is .SCENTER .\ULcreat dbs:filing.inx[38] where "38" is the size of the index file. The actual size of the index size must be 0.14 blocks per database record (ie 76 for 400 records). .page .skip 6 .scenter \CH RUNNING FILING The following logical names will have to be assigned before the FILING system can be envoked. .TABLE L....... L.......................................................... AREA USAGE F: volume on which the FILING distribution kit resides LB: volume on which the DBSMNG distribution kit resides DBS: FILING database area LP: hardcopy device for reports .TEND Once the logical areas have been assigned, FILING can be started by running the DBSMNG MENU program. MENU will request that the name of the file that contains the application menu be entered. In response type .SCENTER F:FILING.MNU MENU will then request that the user identify the type of terminal being used. (A list of valid terminal types can be obtained by simply pressing the [RETURN] key.) If you are using a VT100 simply type .SCENTER VT100 The easiest manner of starting up FILING is to store the commands in an indirect command file. An possible startup file could be .UNFORMAT .INDENT 10 ASS LD4 F ASS LD4 LB ASS LS LP ASS LD2 DBS RUN LB:MENU F:FILING.MNU VT100 .INDENT 0 .FORMAT As FILING uses standard DBSMNG utilities the reader is directed to the DBSMNG manual for operating instructions. .page .skip 6 .scenter \CH USING FILING The FILING system allows a user to store and retrieve data on a computer. The system can be used to file memos and references or as a computerized index for books or files. The system is easy to use and can be quickly mastered. This chapter provides a number of hints on how to obtain the best performance from FILING. .skip 4 .scenter \SE ALLOCATING KEYWORDS FILING allows the user to store information on cards. To obtain maximum benefit from the system the user must fill out the "Keywords" fields correctly. The user may allocate upto eight keywords to each card. The keywords will be used to retrieve cards and should adequately reflect the information stored on each card. .skip 4 .scenter \SE INDEXING CARDS The DBSMNG editor (DBSEDT) is used to create, edit and delete FILING cards. The DBSMNG online multi-key utility (INSKEY) is used to retrieve information from the FILING system. INSKEY uses a special index file (DBS:FILING.INX) to allow information to be retrieved quickly. The index file effectively cross references each card so that INSKEY can quickly locate any cards that match a particular keyword. \HIBOThe index file must be regenerated prior to envoking INSKEY .parag *\fswhen a new card has been added .parag *\fswhen a card has been deleted .parag *\fswhen a card's keywords have been modified .parag *\fswhen reports have been generated\hino .skip 4 .scenter \SE USING HARDCOPY REPORTS Two special reports are provided to simplify maintenance of the FILING system and provide a hardcopy "backup". The KEYWORD report lists every keyword used. This report should be used to ensure that the number of different keywords is minimized. The hardcopy INDEX report lists are the possible keyword combinations. This report can be used to quickly find a cards which match specified keywords with having to use the computer. (The hardcopy INDEX report is normally used when FILING is used to hold the abstracts for documents stored in a conventional filing system.) .skip 4 .scenter \SE INSKEY ONLINE HELP A user can obtain a simple "help" message while using the INSKEY (multi-key) inspection utility by pressing the [H] key when being prompted for a command. .end INSKEY allows a user to retrieve cards that match one or more keywords. The following commands are supported Help displays this help text Exit exits program Keywords allows user to specify new set of keywords Add-keywords add additional keywords to current set Next display next possible match Print print current card on local printer Flip-page display next page of current card Refresh refresh screen Only the first letter of a command need be entered. Pressing the [RETURN] key will terminate the program. Both the KEYWORDS and ADDKEYWORDS commands place INSKEY into "keyword entry mode". The KEYWORDS command clears the keyword list and allows the user the enter a new set of keywords. The ADDKEYWORDS command redisplays the current set of keywords and then allows the user to add additional ones or edit the existing keywords. Note: The commands above can only be entered when INSKEY is in command word. They cannot be used while in keyword entry mode. Keyword entry mode is terminated by pressing the [RETURN] key. Pressing the [RETURN] key causes INSKEY to setup a list of those cards which match the current keyword set. INSKEY then displays the number of possible matches on the top-right of the screen and prompts the user for a command. (If only one card matches the set of keywords it is displayed automatically.) Keywords are entered separated by either by a comma (,) or a semicolon (;) depending upon whether an approximate or exact match is required. A keyword terminated by a comma (,) will match any card that has a keyword for which it is a valid abbreviation. A keyword terminated by a semicolon (;) will match any card that has a keyword for which it is an exact match. Once a set of keywords has been entered the [RETURN] key is pressed to initiate a search. If the number of possible matches is too high the ADDKEYWORDS command should be used to allow additional keywords to be added to the set thereby reducing the number of possible matches. If the number of possible matches is small the NEXT command should be used to browse though the cards to locate the desired card. The following keys can be used while in keyword entry mode Cursor UP move cursor to first character of line Cursor DOWN move cursor to last character of line Cursor LEFT move cursor left one character position Cursor RIGHT move cursor right one character position DELETE delete character to left of cursor Control-U delete all keywords TAB delete all keywords $=V10^[#3 Computerized Filing System ^[#4 Computerized Filing System $%$#V10 Computerized Filing System ************************** $% $=V10^[#6$%REPORT Menu Options 1 ... print all cards in ascending order of [TITLE] 2 ... print all cards in ascending order of [AUTHOR] 3 ... print all cards in ascending order of [Document Type] 4 ... print all cards in ascending order of [Filing Refrence] 5 ... list TITLE for each card 6 ... list AUTHOR for each card 7 ... list keywords 8 ... produce hardcopy index 9 ... return to main menu Please press the [DIGIT] key that corresponds to the desired option. $* $1 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $ITitle$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE1$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $2 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $IAuthor$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE1$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $3 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $IDocument$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE1$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $4 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $IFILING$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE1$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $5 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $ITitle$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE5$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $6 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE1$$ $IDBS:FILING.INX$$ $I$$ $IAuthor$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE5$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $7 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE4$$ $IDBS:FILING.INX$$ $I12$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE7$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $8 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE4$$ $IDBS:FILING.INX$$ $I12$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:REPORT$$ $IF:FILING$$ $IF:FILING.RE8$$ $IDBS:FILING.INX$$ $ILP:F.LST$$ $CLB:MENU$$ $IF:FILING.MNR$$ $! $9 $@LB:MENU$$ $IF:FILING.MNU$$ $! $*$=V10^[#3 Computerized Filing System ^[#4 Computerized Filing System $%$#V10 Computerized Filing System ************************** $% $=V10^[#6$%Main Menu Options 1 ... CREATE create a new card 2 ... EDIT edit filing cards 4 ... INDEX update keyword index 5 ... INSPECT inspect cards that match keywords 7 ... REPORTS envoke report menu 9 ... EXIT terminate session Please press the [DIGIT] key that corresponds to the desired option. There is no need to press the [RETURN] key. Note: The keyword index file must be regenerated before attempting to perform an inspect operation if the database has been modified. $* $1 $@LB:DBSEDT$$ $IF:FILING$$ $INEW$$ $CLB:MENU$$ $IF:FILING.MNU$$ $! $2 $@LB:DBSEDT$$ $IF:FILING$$ $CLB:MENU$$ $IF:FILING.MNU$$ $! $4 $@LB:SELECT$$ $IF:FILING$$ $IF:FILING.SE4$$ $IDBS:FILING.INX$$ $I12$$ $CLB:SORTER$$ $IDBS:FILING.INX$$ $CLB:MENU$$ $IF:FILING.MNU$$ $! $5 $@LB:INSKEY$$ $IF:FILING$$ $IDBS:FILING.INX$$ $IF:FILING.HLP$$ $CLB:MENU$$ $IF:FILING.MNU$$ $! $7 $@LB:MENU$$ $IF:FILING.MNR$$ $! $9 $@LB:CMDDSP$$ $IDEASS F$$ $! $*zb>wbwVwbw6ww*vsBa&feBJ%@& fEA  w +d>+K++_l2l2#l2%l9'l9)bl9+l9,l9-l9/l900<20<30<40<5_ H+_ H&,_ H +_ H 1_ H+_ H+_ H+_ H,_ H(,_ H,_ Hn2_ H~2_ H2_ H2_ H^3_ H3_ H`4_ H4_ H05_ Hr2_ H$n2_ H$3_ H$3_ H$3_ H$3_ H*n9_ H0n9_ H09_ H0Z:_ H0:_ H00;_ H0Z;_ H0;_ H6n9_ H69_ H69_ H69_ H6L:_ H6n:_ H6:_ H<t9_ H<9_ H<9_ H<:_ H<:_ H<&;_ H<@;_ HBn9_ HB9_ HBj:_ HB:_ HB*;_ HB<;_ HBJ;_ HHn9_ HH9_ HH9_ HH:_ HH:_ HH;_ HH;_ HNn9_ HN9_ HN:_ HN@:_ HN:_ HN;_ HNR;_ HT2<_ HTj<_ HT~<_ HZ2<_ H`2<_ H`<_ H`*=_ HfF<_ Hfd=_ Hff=_ Hf=_ Hf=_ Hf >  %INSKEY RDM170485. Database TEMPLATE: Index file: Help file:   8z @z 7 @ 7 7  % -jwSFL file records too small- wrnot enought SFL records '  U'](  t >  w*z  . .wEnter KEYWORDs seperate by "," or ";"w Press [RETURN] to initiate search0 wd 7 ׭ + wSearching for possible matches - Please Wait!  ` 7!   7  -   & &wCommands: wExit Help Add-Keys Back Next Print Flip RefreshwjExit Help Add-Keys Back Next Print Select Flip Refresh r 0 w --- NO MATCH FOUND ---F  h0 ZwMatches:  8 8 8wEnter Command: E* . e  S  Av B E F Kr N| P R H | | r v  wn-|0 w&No more matchs Z  & w F $  w z w, --(  @ w  ^w   wz  w` b!  I E H RM E % j ^E H RE INSKEY RDM170883 - help mode! Press [E] to exit, [M] for more, [R] to restart!Press [E] to exit, [R] to restart!  L  H wJINSKEY RDM170883, Database=`e  |! w, Page <] jѕ/B `ɕ B-^$ V  D %vb 鈇  7 z7  W W;W, w"w w &  pfW` ~    x a     R6mɋՀ   fŀ~! E 7 ~7 n@~ ~|    ~wVTX 7B< Ĝw(&* 7V Ē  Ĩ   7, \  wKeywords:z-- \ b  h 8 5F<z 7 * w&Keywords:z 2 F @ T E@ INSKEY-fatal-! L N `7 INS:INSKEY.INX ?e?e -&f  7 r&f `%X  HFD   DDDDD\! 0U%< .* @' ! 0 #  $     SFLINT-fatal-cannot access file! f \! % \! #      rSFLRST-fatal-file error! f R \!L % .\!! \!  SFLEND-fatal-cannot close out file! &f $D~&f rD~&f  \! # x %@ 7v " bSFLINC-fatal-read error! &f@ 4% !\!0 %    7  SFLOUC-fatal-output error! &ff7  7p r w 7 \!5#  SFLPSN-fatal-invalid entry number! , XSFLPSN-fatal-input error! &f  ~7 7 7  j&f& x&@ v~& hf&f& J. 7( & 0  &   ~LTbvЄьҔӜ7  - 7 m n7P `H V  1Q$ & m mm *&&d .@LX  V r  l    &   2 J  5 v & 20 0 0 Vnnfp|  hmW- & &f j00-00-70 39-19-99 00-00-72 ~fjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7  A Zaz 0 9mJmF  ȋ&f&f7wEA`  n0N (Ba N Ba B Ba $E ѕ-tE ѕ-tEeH z &f&fEA` Ca  HBa  2Eы &Et`ы HEt `Ba X&f&fEA` &f&fEA` Baҕ C~Ba Ba &f&fEA`  .2     ы  ы&&fETTTT7L7H7D B~fEEB`&' U'D   7 `7 "'Z@ 7N7N FRMINT-fatal-format stream initialization error! l   _  $  ^  J DU 8E  '   7h'  )   Ef'e  : 7X'TU>  FRMINP-fatal-format file read failure! &' &' 7 7 f777" 7' \7 0! TRESTOR-fatal-format stream rewind error! n!v! ! DK:SORTER.DAT](''' ''DK:FORMAT.FRM ^   H l n  2 V X ^&f&f nE5 5 (EmQ~ &f&f` !E5 Em>U~0E   &&f D *E5 5 Z Dm42~ J&&f E5 5 fDm42T~  與^E  5 @ fA  `B~7 df&A   D  B~ M..B`~2@ E?tEufA   H~v 7 f&fȋ LA   : &0 \րUD$e 0 62 ~&-1 ,ր62 DlE )7 B7 @ D#7( & ~-  |D#  wfwp^ կBAbl7 7 D 2D#f 6ՓC~7 ~- D#f ԓ C~  ww&f&f  X \ ` '1 1 &0 Ԁ&0 Ԁ X1 w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified RecordX2^2e2&f&f42 B~R62 @ @E` 1e e~11111@@c 3&f&@@cB W `E D`D ~  N-EXTA-CEPTAB-ORT UwEUw&f&fwwBI-- & ؀@E5v n R V Z :5X&5P 5D0:C-- &- , ؀ t& ؀ȋl- | &M- \؀ Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?1-1-1-1 .1-1-1-1-1-1.2.  wF w wׁ 27 7 p  e ~wFEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ & + .؀ 8؇>7w 7w 7w &@ ؀ ׅ@5 @5 7 )W   &f@e  w|  w7HfN3& .ԄA *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7F57 w|95 Bw@BBaEBaEf  ? ?-   ?5*;7A E@6E7@E  @l6C7@G75f&fP& *    U `ߋ*6666666777&747[8}888888887FIL.SE7o7{7H7\777FIL.NM7\777777FIL.NW7\777777FIL.LK8F8883877FIL.RD8F8883877FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ??  H s, Hs '` 'by<'dH8 h-\_   3 44444t55& t54 `_b Hdbb 5  e0P~5鈱-пsa-Ќs(Ydt5 &t5@I@S@Z@M t5jt5It5St5Z'b;; t5MUP$5$'fקH(($* Hׯ ̇ 5 56v 5 6;; 56 56 5$6y4,6;; 516v 586v 5?6t55& t5 8d d "*v;;jrz2:BJbZRy Fd>CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20$&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ & . & Ҁ&f&& Ѐ`7 E  ԋ e ~& Ѐ&f   7, 8 e ~&f  Te ~&f  Ne ~&f& 7, /! -    & π@` & zπ*f&f,; v b _UV; 5 b > u VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  ˀwvDBSLDR-fatal-illegal TEMPLATE wPDBSLDR-fatal-cannot read TEMPLATEw*DBSLDR-fatal-missing FIELD definitionswDBSLDR-fatal-missing KEY defibtions(5  "E"te " >;F; 0E    f9  U@EABCDPQRS7t &\&H [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    : e   :; ; ;: & e   &   h& [ 2 ~K v& h[ `2 XJ P& D[ K 6& (H J && Y e E e E U$<U$E    Ef9ɋ @f9ɋ @ABI &f f  N & P:  e  `:::: & xe    & F > 6&f@  &  & &e OOe &E & & & ~BE    EUf9e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$HE   EUf9e @ &f@  & &f ^   쇗 N      & d & R J B x& ,: (&  & && = e E e E U$NE   EUf9e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$T&f ѕ0 `T< <<~=wCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& w*MEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&R> wMEMMNT-fatal-memory not availableea@! 7wwwwwwv`hxpsBa&feBJ%@& fEA  w +7+++22 b2"2#2$2&2'P5)P5*P5+P5,_ H+_ H+_ H+_ H,_ H~,_ H-_ H-_ H-_ HP._ H +_ H+_ H",_ H<,_ H,_ H,_ H2_ H2_ H2_ Hz3_ H3_ HP4_ Hz4_ H4_ H$2_ H$2_ H$2_ H$2_ H$l3_ H$3_ H$3_ H*2_ H* 3_ H*3_ H*3_ H* 4_ H*F4_ H*`4_ H02_ H02_ H03_ H03_ H0J4_ H0\4_ H0j4_ H62_ H62_ H62_ H6"3_ H63_ H6$4_ H624_ H<2_ H<2_ H<43_ H<`3_ H<3_ H<04_ H<r4_ HBR5_ HB5_ HB5_ HHR5_ HNR5_ HN5_ HNJ6_ HTf5_ HT6_ HT6_ HT6_ HT6_ HT*7_ HTv7   & & 7  .) r- -h 6 wINSPECT-fatal-too few index file records!INSPECT-fatal-too few bytes in index records!Inspect RDM101282. DB Template: Index file:  w 0 wPlease enter target string  wTarget : & & ȋw` I~ Е C~0 vwPlease wait, SEARCHING z30 DwXTarget Found! w0 w&Multiple Matchs! w^0 wSorry, this is closest match!w w  wTarget : l ~0 wCommands- Back Next Targ Show XwlCommand: 2 e   < E< P R@ @ @ B N T6 6 S ww  0 wINSPECT RDM040582 File:e  %vb 鈇   8^ | 7 X7 Hj m<p v f ` 7 VT 7L R j Fm2 8@  E    a   7   ^ -p  Xj mL -v! E&&   @~t ( L N  6 8   " (&f&f nE5 5 EmQ~ &f&f !E5 EmU~E ~  f&&f^ D *E5 5 $ Dm$~ &&f E5 5 fDm$T~  與E  5 @ fA  `B~7 df&A   D  B~ MB`~2@ E?tEu& 2  >7w 7w 7w &@  $ U.)< * ' .%  .'  P SFLINT-fatal-cannot access file! f  $.) $ .' `pl`\ FSFLRST-fatal-file error! f ( $".) $.% $ J SFLEND-fatal-cannot close out file! &f $D~&f rD~&f| z$r.' L .)@ 7L 6SFLINC-fatal-read error! &f4.) !$.)   7R SFLOUC-fatal-output error! &ff7  7prw 7$5.' f `SFLPSN-fatal-invalid entry number!  ,SFLPSN-fatal-input error! &f ~7 7 7  j&f& x&@ ~& f&f& . 7( & f N & > nn ~v,@NV^f7  - 7 m n7P `H V  1Q$ & m mm `. "  V r  6^jv    &   2 J  5 v & h0 0 0  88f:F  hmW- & &fR j00-00-70 39-19-99 00-00-72 fjmr `-\b TJ>fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7  A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- & P@E5v @ $ ( , :5X&5P 5D0:- z&   & ȋ8 N &  Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?.+5+;+A+H+M+S+Z+a+j+Xr+  wF w r vwz 7 7 p  e ~wFEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ &     &"  &> wWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwFEDMNG-fatal-illegal template, no fields  w, e ~wXFEDMNG-fatal-illegal template, blank pagew7&f5t& & \ZwTR& @ F 4 *&W    e w,  w, & & |5& ^Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!&f&f7wEA`   (Bap N Ba Bp  Ba $p E ѕ-tE zѕ-tEeH d &f&fEA` ~p Ca p 2Ba p Eы Et`ы HEt `Ba X&f&fEA` B&f&fEA` BLLL^lBaҕ C~Ba Ba &f&fEA` p 2 p    ы  ы&&fEh TTTT7L7H7D^ B~fEEB`&p f4A   H~ 7 f&fȋ A   j &X# Ue . $ ~&# $ ^DlE )7 B7 @@ D#7( & ~-  D#  wfwp ⯇BAbl7 7 D bD#f ꓤC~7 ~- (D#f Xꓤ C~  ww&f&f D R V Z # # &X# $&# "F # w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Recordx+~++&f&f$ B~$ @ @E` $e e~$$$$$@@c 3&f&@@cB W `E D`D ~  %% .% DK:SORTER.DATAB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORT@5 @5 7 )W   &f@e  w|  w7Hfn,& ڄA *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w7f.7 w| 2. Bw@BBaEBaEf .  ? ?-   ?5*[0A E@/e0@E  @l/c0@g05f&fP& *    U `ߋ*////000(000>0F0T0{1111111220FIL.SE000h0|000FIL.NM0|000000FIL.NW0|000100FIL.LK"1f111=1S100FIL.RD"1f111=1S100FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? H s, Hslj '` 'by<'dH8 h-<_   &, -----..& .- | `_b Hdbb,.  e0P~.鈱-׿sa-׌s(YD. &.@I@S@Z@M .j.I.S.Z'b;; .MUP$5$'fקH(($* Hׯ Ӈ /*.$/v*.+/;;*.6/*.=/*.D/y .L/;;*.Q/v*.X/v*._/./& . d dv`hxp;; 0(8@HXPh`pyxF7CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20&fW  ɋ:E T͋̋(e ~E &f@ `EW `E ͋e ~ &   &f&& ׀`7  E  ԋ e ~& p׀&f   7,  e ~&f  e ~&f  e ~&f& 7, /! -    & |ր@` t& Zրf&fL4 >v Fb X_Uv4 5 Fb > u .VBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  ~рwDBSLDR-fatal-illegal TEMPLATE w~DBSLDR-fatal-cannot read TEMPLATEwXDBSLDR-fatal-missing FIELD definitionsw,DBSLDR-fatal-missing KEY defibtions(5  "E"te " ^4f4 E    f2  U@EABCDPQRS7T &<&( [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    3 e   3 4*4*44 & e   &   h& [ 2 ~K v& h[ `2 XJ P& D[ K 6& (H J && Y e E e E U$*U$E    Ef2ɋ @f3ɋ @ABI &f f  N & p3  e  3333 & xe    & F > 6&f@  &  & &e OOe &E & & & ~0E    EUf2e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$6E   EUf2e @ &f@  & &f ^   쇗 N      & d & R J B x& ,3 (&  & && = e E e E U$<E   EUf2e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$B&f ѕ0 `t5 555555w 5w '5w 5w vc5w l 5w b'd w N 6w D6w :6w 06w &?6w 6w @ Eѕ*C&D &E r   "6 •0 • ?0123456789ABCDEFH&&f E9E E 65   Z  ѕ* B   0ÜP6ѐ C C C EÜL6ѐ 06"606>6@'d @ 00123456789ABCDEF?Nf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋ   & e` B዇E0% B዇E0% ዴ ADE6 % b %e ee e  (@TU$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h .ׯz (*~zfVW E W  y*6R6Z6^6wCON.LI-fatal-illegal CC code! fH h(*_( hW@~hg((& wXMEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&r7 wMEMMNT-fatal-memory not availableea@!|wHINXLD-RDM1701847 Bb Enter name of INA file:  Ubq:  willegal INA file name   wcannot open INA file b |Enter name of INX file: p V Ub: l  w<illegal INX file name,b Enter ENTSIZ: b  willegal ENTSIZ7l  wminimal ENTSIZ is 3DwPlease wait- calculating ENTSIZ7 7 7    7 7e-wV - ENTSIZ=b]  b   p p P 9wNon-existent INX file - creating it!UZ7pTe@ r5 p  winvalid INX file  > 7 7  ! 7 p D >@ 8~ &~p  \ wcannot write INX block 0 4r  f    b b     " bwl  ]]]? lines processed, ? (? byte) entries loaded!E w&no memory for buffer7` 5  `@m+INXLD-error-!  ~&f E C-נaנz  ͠Ce  נ    & 4 ` ~  !  @  & e @ AF7890070 AZ@$$ %% ** 09&&fE0E t 5  V  5 ѕ*  @   $m ] ђ    5@ ] ѐ @ d'(@ ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF&f&f D? ? A ɕ@ e  &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az   h  *wSEQINP:file write-only   @ E   \# w,SEQINP:read erroruu  wSEQINP:zero read z wSEQOUT:file read-only uu  =  & 8 wSEQOUT:write error 5   |whSEQOUT:eof @A AW   W wSEQPSN:invalid byte numberŀ5 wSEQPSN:invalid blck number Հ5 u5u5$ u`u uum wrSEQPSN:not seq file&5 x wHSEQPSN:read error@ @5uu`  05 E& "@@ Ef 5 ~ wSEQFLS:write error   wSEQFLS:eof .5 5 5 Ř"&@E5` wZSEQFIO:FDB not active  w8SEQFIO:invalid size  wSEQFIO:invalid buffer w&@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. ɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nfz7\w NB@@aE@aEf   ? ?-   ?@ 5 5 @&u @ eE 5 5*/A E@9@E  @l7@;5 5f&fP& 5 Z*    U `ߋ*j d7 jS7j7j7j7j7|j7t_7fH7V j7H7: &&f@Jы W 1gJ&f   @ wR5$;'f7ׯ hhP_h  ׯ7 E W  y f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h舠(\wFIL.SEgT]<HFIL.NMgHrFIL.NWgHrNFIL.LK> FIL.RD/ FIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ??  w INXUNL-RDM1701847   V f Enter name of INX file:  @U: V willegal INX file name d wnon-existent INX file 0 H BP : 4P& qs & Enter name for INA file:  Uq:  willegal INA file name U  wcannot open INA file l@willegal INX file ENTSIZ @ < 8 ~W W B@ ~  - f E w&no memory for buffer7` 5 j@+INXUNL-error-!    h  *w>SEQINP:file write-only   @ E   \# w,SEQINP:read erroruu  wSEQINP:zero read z wSEQOUT:file read-only uu  =  & 8 wSEQOUT:write error 5   |wSEQOUT:eof @A AW   W wSEQPSN:invalid byte numberŀ5 wSEQPSN:invalid blck number Հ5 u5u5$ u`u uum wrSEQPSN:not seq file&5 x wHSEQPSN:read error@ @5uu`  05 E& "@@ Ef 5 ~ wSEQFLS:write error   w`SEQFLS:eof .5 5 5 Ř"&@E5` wZSEQFIO:FDB not active  w8SEQFIO:invalid size  wSEQFIO:invalid buffer w&@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. xɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf 7\wZ\ NB@@aE@aEf   ? ?-   ?@ 5 5 @&u @ eE 5 5*A E@@E  @l@5 5f&fP& 5 Z*    U `ߋ* d7 S777777_7H7p 7b7T @&fы W 1g&f   4@ .wR5$;'f7ׯ~ hlhP_h  ׯH7 6E W  yDLLPT f h7 h&f& && & קH —HJ~H&f@  P 鈁 ы E5$hW @~h&&fE0E 5  V  5 ѕ*  @   $m]ђ    5@]ѐ@ d'(@ ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF0DLZbpx,9BJR-FIL.SE--FIL.NM-?FIL.NW]--FIL.LKly--FIL.RDly--FIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? F4`w\www!wp w!v%>&&&''(s 5$U@$*& ׭t&~ a  * 'fSP t=+ |G*ы  ' Menu RDM110786 Format file: User Input: NЊ~ "   .*PS:)      v |/  l T  -v;; qA . 9e , v hD HewLOOP:illegal character in format file!    ;<H2bhN=+  !* P$* fE E ɋ   "wn* @$ ,* fE E ɋ   L"w=+ .     - ># :#%*  * $*v 8< 9@@~ \< df e~u` p j-"w ..CHAN:core common overfloww..CHAN:cannot chain to CUSP!w..CHAN:illegal character in format file!    ;<H2NB 6! !fjh! 1ɕw!* * *v @!ѕ~ɕw!fjhw...CHN:invalid chain file y  e!7 ! ! ! !E7 !f  wlINPUT:End of File w     w INPUT:End of file during test |  A   4w!F X  :f8+ * hUF z/W/M-0 $FHFݮe @8+w~ W:@w ̇ ȇ 66(te8+w8 ѕ:wjc Mc׭i I5 _ -.&f '+- '+- '+ z'+ j 'V g03A8+J+L+N03P+Q+SJ3T+V+(=+ ?f&fF ~* UF w..TERM:invalid terminal type@'br *C eC` ҐI~* @@ ѕ 6 @D F n~+ MENU-fatal- error in format file before:   & e` B዇E0% B዇E0% ዴ@5 @5 7 )W   &f@e  w|  w7Hf& &A *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w77 w|. Bw@BBaEBaEf H  ? ?-   ?5*?,A E@+I,@E  @l+G,@K,5f&fP& *    U `ߋ*&&fE0E 5  V  5 ѕ*  @   $m]ђ    5@]ѐ@ d'(@ ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF. U.   7 7 v.@ 77` "FRMINT-fatal-format stream initialization error! l   _  $  ^  J DU 8E  .   7.  )   Ef.e ~  7.U n FRMINP-fatal-format file read failure! &. &. 7 87 0.f7 77" 7. 7  RESTOR-fatal-format stream rewind error! R s8 Hs '` 'by<'dH8 h-_    ^fnv8P& 8^  `_b Hdb,b  e0P~[鈱-sa-s(Y8 &8@I@S@Z@M 8j8I8S8Z'b;; 8MUP$5$'fקH(($* Hׯ  p.v.v}.;;...y.;;.v.v.8& 8 d d(((()))v%>&&&''(;; H" #<##>$#L$ >!P!""x">"yb62 t F4CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: Z4D f7 <Z4U7(Z47Z47Z47Z47Z47_7H7 Z477  Jz&fJ3Z4W Z4 J3&f03ы W 1g03&&f JE9E E5   Z  ѕ* B   0Üѐ C C C EÜ ѐ 0@'d @ 00123456789ABCDEFE    EUfje @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fg((& w MEMMNR-fatal-memory not availablee&g(etE w MEMMNE-fatal-.GETCOR failedwg((& wB MEMMNT-fatal-memory not availableeaf&f  B  $e & "-   ȋ 6E-`EE#`E%ʋE   EUfe @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~E    Ef*!ɋ @f2!ɋ @ABI &f f  N & !  e  !!! " & xe    & F > 6&f@  &  & &e OOe &E & & & ~E   EUf"e @ &f@  & &f ^   쇗 N      & d & R J B x& ,# (&  & && = e E e E U$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*b&fhP_h ׯD (*~zf W E W  y`%%%%wCON.LI-fatal-illegal CC code! fH h(*_( hW@~hE    f,&  U@EABCDPQRS7 && [ 0 ; 1 m & [ 0 m x&f@  \& P H&f    :' e   N'r'|'|'p' & e   &   h& [ 2 ~K v&r h[ `2 XJ P&N D[ K 6& (H J && Y e E e E @!fы W Nr P C`C G~z< df e~wN~ <WuE<Ef eE * p00 wj** +???:No user input!I1 1 000000+++++++ ,,",*,8,_---------,FIL.SE,s,,L,`,,,FIL.NM,`,,,,,,FIL.NW,`,,,,,,FIL.LK-J--!-7-,,FIL.RD-J--!-7-,,FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? VT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20](... ..DK:FORMAT.FRM .U$U$U$U$U$? ADE4 % b %e ee e  (@"JPJHU$ BYEHw MSTCHK-RDM300585! (.  Check: . whinvalid check expression. Lw value: &.鈀 wcheck condition violation p@+ MSTCHK-error-!  wunrecognized variablexBKWc n y  W( wmissing ( delimiterP wmissing ) delimiter) &f&f U  wLinvalid file name  &&fE0E R5  V  5 ѕ*  @   $m]ђ    5@]ѐhv@ d'(@ ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az &f %&&< fW.t W.e㇀E#  BW\ 6`6p    r     6 6P6x@ v 6Pv r  \\))>> ,,!!;;++-- **"//$||& & ! %)-159=BfW.  W.ex "x ++ --P 09\ ^^h '' "" (( << \\J J D M    w x@ E & U XW) FW>OODDHHRRCC B @ G M &@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. ɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf<7\w~ NB@@aE@aEf 8  ? ?-   ?@ 5 5 @&u @ eE 5 5*A E@@E  @l@5 5f&fP& 5 Z*    U `ߋ*6 d7 6S76767676767~_7pH7` 67R7D 0&fы W 1g&f   @ wR5$;'f7ׯ2 h hP_h  ׯ7 E W  y f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h舦&f E C-נaנz ͠Ce  נ    & 4  ` ~  !  @  & e @"(AF7890070 AZ@$$ %% ** 09PROJ-ECTPROG-RAMMERPRI-VILEGEDJOB-NUMBERTTY-NUMBERLEA-DINCHARVIR-TUALSYD-EVICEMON-ITORRT1-1TSX-PLUSRST-S/ETER-MINALTYPEVT5-2VT1-00HAZ-ELADM-3ALA3-6LA1-20DIA-BLOQUM-EEXI-STSSIZ-Emod-or-xor-and-eq-ne-lt-gt-le-ge-lo-hi-los-his-true-false-+6BP]fnvQFIL.SEQQFIL.NM&5@QcFIL.NW&5QQFIL.LKQQFIL.RDQQFIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? Thp~ N wbMSTMNS-info-RDM140584, 8 command: d  winvalid command  bT   wlock file read error-Kwllock file not initialized# f  Password:   ~winvalid password r D  wlock file read error \-VVN| ->-: 2.&*"& b  wlock file write error j  `$   (Yes or No): ׭Y w6lock failurew] ] ] MSTLCK-warning-file locked by job ? (ppn=[?,?]) retry lock   wlock file read error-*Kwlock file not initialized-7  < whlock file write error  v K7 7 7  T  password for file:  wlock file write error  $  " wlock file read error-8Kwlock file not initialized  ] ] ] MSTLCK-I-file status is job ?, ppn [?,?], psw 0 K $KwL MSTLCK-I-synch mechanism not initialized7&7$7"dz j]t]v]x MSTLCK-I-synch status is sem ?, job ?, flg ?! l"Kwsynch mechanism not initialized wFsynch mechanism corrupted& @ఊ +P @` MSTLCK-error-!W( wmissing ( delimiterdP wmissing ) delimiter) &f&f dK  wbinvalid file name  wDinvalid lock file f  wcannot assign RTS001n  wcannot map RTS001@ccj sOcO d  &f&f D? ? A ɕ@ e  &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az &@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. xɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf7\w0 NB@@aE@aEf   ? ?-   ?@ 5 5 @&u @ eE 5 5*A E@@E  @l@5 5f&fP& 5 Z*    U `ߋ*L d7 DS707 7777_7H7 77 &f^ы W 1g&f   @ wR5$;'f7ׯ hhP_h  ׯ7 E W  y f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h&&fE0E @5  V  5 ѕ*  @   $m]ђ    5@]ѐVdr@ d'(@ ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEFLOCK-FILEUNLO-CKFILERESET-FILESTATUS-FILESYNCHRESET-SYNCHST-ATUS (FIL.SEFIL.NMFIL.NW3FIL.LKBO[oFIL.RDBO[oFIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? "08FN^fv~ySrNr  wpnot running TSX-Plus " -- 5$ --   N :bHd`  P UAS @j j +V H  r h ^wxno menu defined for userfjhjPЕ@PPPP w MSTMNU-RDM200985j& ׭ 4   rW .r  j& j  Password: ......-(-  JTPKHU$ set kmon system,.fP UD  +@wl MSTMNU-error-!  PPP$L  @`e@  cc sOcSMj<Ov;;vjr YYؙPKR@vMST:000000.MNUMST:MASTER.MNUSY:MASTER.MNU Press [RETURN] key to continue! <#5(B &&fE0E 5  V  5 ѕ*  @   $m]ђ    5@]ѐ@ d'(@    ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az &@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. ɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf 7\w NB@@aE@aEf @  ? ?-   ?@ 5 5 @&u @ eE 5 5*7A E@A@E  @l?@C5 5f&fP& 5 Z*    U `ߋ*r d7 rS7r7r7r7r7|r7t_7fH7V r7H7: &&fHRы W 1gR&f   @ wR5$;'f7ׯ hhP_h  ׯ7 E W  y f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h舨 0dFIL.SEo\eDPFIL.NMoPzFIL.NWoPzVFIL.LK"FFIL.RD"7FIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ??  4wH MSTMNS-info-RDM160584 ( P w no menu currently selected) @PPPS pA w currently selected)     select menu:  ɋ2W/- xS  whinvalid menu name@$S w>extension not .MNU ` 6 f UD 0 Z+d@t MSTMNS-error-!  PPP  @`e@  ccsOcO  YYؙ &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az &@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. xɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf~ 7\w NB@@aE@aEf   ? ?-   ?@ 5 5 @&u @ eE 5 5*MA E@W@E  @lU@Y5 5f&fP& 5 Z*    U `ߋ* d7 S777777_7H7p 7b7T @&fD hы W 1gh&f   @ wR5$;'f7ׯ hhP_h  ׯ7 E W  y  f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h&&fE0E &5  V  5 ѕ*  @   $mp]hђ    5@p]hѐ<JXf@ d'(@x ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF.6FzFIL.SEr{ZfFIL.NMfFIL.NWflFIL.LK8\'FIL.RD8M'FIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? rNr  wpnot running TSX-Plus " -- 5$ --   N :bHd`  P UAS @j j +V H  r h ^wxno menu defined for userfjhjPЕ@PPPP w MSTMNU-RDM200985j& ׭ 4   rW .r  j& j  Password: ......-(-  JTPKHU$ set kmon system,.fP UD  +@wl MSTMNU-error-!  PPP$L  @`e@  cc sOcSMj<Ov;;vjr YYؙPKR@vMST:000000.MNUMST:MASTER.MNUSY:MASTER.MNU Press [RETURN] key to continue! <#5(B &&fE0E 5  V  5 ѕ*  @   $m]ђ    5@]ѐ@ d'(@    ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*0123456789ABCDEF &&f - e `N &f &ff & "  $ ɋW   bN X !዇ ы  f &AZ W0W9 az &@5 &@5 7b )W   &f@e  w* D wj7CAW ѕ:  W:ѕ. ɕw7@/@* &Hpp5  ŀ5 wl  w72`O@J FHp0 55 #@ @ 5H0   ŀ5 w  w7nŀ0 , # vHppp0 5w* DՀ wb7ŀ0 , #  Hppp0 5w Հ w7nf 7\w NB@@aE@aEf @  ? ?-   ?@ 5 5 @&u @ eE 5 5*7A E@A@E  @l?@C5 5f&fP& 5 Z*    U `ߋ*r d7 rS7r7r7r7r7|r7t_7fH7V r7H7: &&fHRы W 1gR&f   @ wR5$;'f7ׯ hhP_h  ׯ7 E W  y f h7 h&f& && & קH —HJ~H&f@   鈁 ы E5$hW @~h舨 0dFIL.SEo\eDPFIL.NMoPzFIL.NWoPzVFIL.LK"FFIL.RD"7FIL.WTFILSPT- -CSI:inv cmdCSI:inv devNull strNull fileFDB in useHnd not loadedChn in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB inactiveEnd of FileHard err on channelCHANNEL inactiveWord count too largeFile read-onlyFile write-only.SPFUN failedUSR called from compltn rtnHnd neededDir I/O errHnd fetch errOvl read errDir fullIll addIll chnIll EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? $#V10 $%$=V10^[#6$% ADDRESS/TELEPHONE Database $~N Options 1 .. Edit create, edit and delete cards 2 .. Search multi-key search 3 .. Inspect single-key search 4 .. Summary print summary report 5 .. Label print address label 6 .. Full print full report 8 .. Index generate index file for NUMBER 9 .. Exit exit menu Press digit key corresponding to desired function! $* $1 $QLB:DBSEDT$$ ; invoke editor $IP:PHONES$$ ; name of TEMPLATE $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $! $2 $QLB:SELECT$$ ; invoke selector $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.SE2$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $I10$$ ; entry size $QLB:SORTER$$ ; invoke sorter $IDBS:PHONES.INX$$ ; name of SRT file $QLB:INSKEY$$ ; invoke inspector $IP:PHONES$$ ; name of TEMPLATE $IDBS:PHONES.INX$$ ; name of SRT file $I$$ ; help file name $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $)Generating index file ... Please wait! $$ $! $3 $QLB:SELECT$$ ; invoke selector $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.SE3$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $I42$$ ; entry size $QLB:SORTER$$ ; invoke sorter $IDBS:PHONES.INX$$ ; name of SRT file $QLB:INSPECT$$ ; invoke inspector $IP:PHONES$$ ; name of TEMPLATE $IDBS:PHONES.INX$$ ; name of SRT file $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $)Generating index file ... Please wait! $$ $! $4 $QLB:SELECT$$ ; invoke selector $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.SE4$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $I$$ ; entry size $QLB:SORTER$$ ; invoke sorter $IDBS:PHONES.INX$$ ; name of SRT file $QLB:REPORT$$ ; invoke reporter $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.RE4$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $ILP:4.LST$$ ; name of RPT file $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $)Producing report ... Please wait! $$ $! $5 $QLB:REPORT$$ ; invoke reporter $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.RE5$$ ; name of FRM file $I$$ ; no SRT file --> TT select $IDK:PHONES.LBL$$ ; name of RPT file $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $! $6 $QLB:SELECT$$ ; invoke selector $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.SE6$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $I$$ ; entry size $QLB:SORTER$$ ; invoke sorter $IDBS:PHONES.INX$$ ; name of SRT file $QLB:REPORT$$ ; invoke reporter $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.RE6$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $ILP:6.LST$$ ; name of RPT file $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $)Producing report ... Please wait! $$ $! $8 $QLB:SELECT$$ ; invoke selector $IP:PHONES$$ ; name of TEMPLATE $IP:PHONES.SE8$$ ; name of FRM file $IDBS:PHONES.INX$$ ; name of SRT file $I72$$ ; entry size $QLB:SORTER$$ ; invoke sorter $IDBS:PHONES.INX$$ ; name of SRT file $QLB:MENU$$ ; invoke self $IP:PHONES.MNU$$ ; name of MENU FRM file $)Generating index file ... Please wait! $$ $! $9 $QLB:CMDDSP$$ $Ideass P$$ $! $* V7 wwhwwww v4<LD\TdsBa&feBJ%@& fEA  w ,X7,,9v.v.v.0b0 0!0"0$0%0'_ H,_ H ,_ H T,_ H -_ H h-_ Hx._ H._ H._ Hx._ Hx._ H._ Hd/_ H$0_ H$d0_ H$0_ H$$1_ H$1_ H$1_ H$42_ H*0_ H*80_ H*L0_ H*P0_ H*0_ H*1_ H*,1_ H0 0_ H00_ H00_ H0T1_ H01_ H01_ H01_ H60_ H6l0_ H61_ H6.1_ H61_ H61_ H61_ H<0_ H<h0_ H<n0_ H<0_ H<.1_ H<1_ H<1_ HB0_ HBh0_ HB0_ HB0_ HBl1_ HB1_ HB1_ HH0_ HH0_ HH&0_ HH0_ HH0_ HHz1_ HH1_ HH`2_ HH2 & @ 7 2$ :$ 7G `) W $ ׭Y)wPurger RDM110582 DB Template: Select File: Really PURGE database?  `7 l-h `$ F7 JN Pw@!& ^ N X>7w 7w 7w &@ & g((& w MEMMNR-fatal-memory not availablee&g(etE wMEMMNE-fatal-.GETCOR failedwg((&<  wMEMMNT-fatal-memory not availableea.% fJB~7 2 (  (fm! m!fmB  ~fBm B~ 7 z A Zaz 0 9mJmF  ȋUwEUw&f&fwwB- & @E5v J z   :5X&5P 5D0:{- Z&M  6 & ȋ > &  Commands: EXit ABort First Top Enter LOcate Page Refresh CLEAREnter a command and then press [RETURN] (Page XX of XX)SORRY-Command not recognized?`+g+m+s+Xz++"+"+&+.++:  wF w\  wP 7 7 p  e ~w6FEDMNG-fatal-illegal templatew\Wt7PwLFA w 2w, nw^$ V& t R   &&  & wWt7wA w w wEnter NAME of field to be locatedFEDMNG-field Locate Mode!ERROR-cannot locate field?ERROR-field is PROTECTED!&fwFEDMNG-fatal-illegal template, no fields  w, e ~w~FEDMNG-fatal-illegal template, blank pagew7&f5t&L P& N\ZwTR& <@  4 &    e w,  w, & & 5& Please enter/edit card. The following keys may be of use[RETURN] edit done [TAB]/[BACKSPACE] advance/backup a fieldERROR-illegal data, please retype!& h b &f&& `7 E  ԋ e ~& &f   7, 8 e ~&f  e ~&f  e ~&f& 7, /! -    & @` & &f&f7wEA`   (Ba~ N Ba B~ Ba $~E ѕ-tE ѕ-tEeH &f&fEA` ~Ca ~ hBa ~ REы FEt`ы 6HEt `Ba X&f&fEA` P&f&fEA` PZZZlzBaҕ C~Ba Ba &f&fEA` ~ N2 ~ 8   ы *  ы&&fERvTTTT7L7H7Dl LB~fEEB`&~fA   H~ 7 f&fȋ A   &f dUtne  ~& 8 DlE )7 B7 @ D#7( & ~-  D#  wfwp 篇BAbl7 7 D D#f n瓤C~7 ~- JD#f 4瓤 C~  ww&f&f      &f &    w  "KEYMNG" - Record Locating Mode (via Keyed Index)COMMANDS ARE - Accept ABort Next (REMAINING MATCHES=XXXX RECORD=XXXX)? HELP ? - Cannot Locate Specified Record+++&f&f B~ @ @E` e e~@@c 3&f&@@cB W `E D`D ~ U$툇E$툇5$'f+קHj&f&& & —HJ~HH f(*&fhP_h zׯ (*~zfW E W  y !!!wCON.LI-fatal-illegal CC code! fH h(*_( hW@~h H s, Hs '` 'by<'dH8 h-p_   ! #####`$x$& `$# `_b Hdbb#  e0P~$鈱-sa-s(Yx`$ &`$@I@S@Z@M `$j`$I`$S`$Z'b;; `$MUP$5$'fקH(($* Hׯ ݇ +#+v#+;;#+#+#+y#+;;#+v#+v#+`$$& `$ .d dlt|v4<LD\Td;; ,$<4DyLTd\tl|FX7CRT type: CON.ST-error-invalid terminal type! support VT52 VT100 VT200 ISC ADM3A VC404 TVI912Delay by: @%H% `% DK:SORTER.DATAB-ORTQU-ITEX-ITF-IRSTT-OPE-DITEN-TERCLEAR-R-EFRESHLO-CATEP-AGEN-EXTA-CEPTAB-ORTVT5-2VT1-00I-NTECOLORA-DM3AVC-404T-VI912I-SCVT2-00VT2-20 Zf&f- jv rb _U- 5 rb > u ZVBr`r`r`r`r`r`r`s`s`s`s`s`s`s`s`s`>s`e Js`e  ـwDBSLDR-fatal-illegal TEMPLATE wDBSLDR-fatal-cannot read TEMPLATEwrDBSLDR-fatal-missing FIELD definitionswFDBSLDR-fatal-missing KEY defibtions(5  "E"te " @--  r   \    F j l r&f&f nE5 5 <EmbQ~ &f&f. !E5 Em U~E   &&f D *E5 5 n Dm~ ^&&fx E5 5 ,fDmT~  與,E  5 @ fA  `B~7 df&A   D  B~ M6.H.B`~2@ E?tEu &f ѕ0 `. ......w .w '.w .w vc.w l .w b'd w N2/w D4/w :6/w 08/w &?:/w K 6& (H J && Y e E e E U$0U$E    Efp0ɋ @fx0ɋ @ABI &f f  N & 0  e  0 1,1R1 & xe    & F > 6&f@  &  & &e OOe &E & & & ~6E    EUfP0e @ & ;= &   &   &   &  ~`E &f@ \ & N F&f       쇗 N      &  &   & & && ~E rE fU$<E   EUfP0e @ &f@  & &f ^   쇗 N      & d & R J B x& ,T1 (&  & && = e E e E U$BE   EUfP0e @  ) (&f@  & &f    쇗 N T  J    & & &    z& & T fd& G~& & y fd & G~&& p= he E Xe E Hfd& 4G~U$H@5 @5 7 )W   &f@e  w|  w7Hf0& XA *ѕ: W:ѕ. ѕw פ ќ~7@/@* &Hpp5  ŀ5 w  w7``,@' #Hp5  ŀ5 w ( wb7ŀ$ Hppp 0 5w Հ w7zŀ$  Hppp 0 5wL XՀ w727 w|6:3 Bw@BBaEBaEf   ? ?-   ?5*4A E@444@E  @l244@45f&fP& *    U `ߋ*J4^4f4t4|4444444456"666J6]6l6|66[5FIL.SE55544[5[5FIL.NM54(5;5J5[5m5FIL.NW54(5;55[5[5FIL.LK55555[5[5FIL.RD55555[5[5FIL.WTFILSPT- -CSI:invalid commandCSI:Invalid deviceNull stringNull fileFDB in useHandler not loadedChannel in useNo room for fileUNKOWN ERROR CODECannot replace protected fileFile not foundFDB not activeEnd of FileHard error on channelCHANNEL not activeWord count too largeUSR called from completion routineNeed handlerDirectory I/O errorHandler fetch errorOverlay read errorDirectory fullIllegal addressIllegal channelIllegal EMT Channel ??. Size ?. Requested ?. Error ? Flags ? Block ?. Transfered ?. Buffer-addrs ?? ADET7 % b %e ee e  (@@n"7lhs%%w*} v%e&#&hL&XM &(x=&y?s!e^ !""" N"&=&TygMHW@Zg,Iq}y[G}d x ".MACRO CBAF FIELD,RADIX,NUMBER=R0,STRING=R1,REGSAV=NO,CALL=YES,RTN=CBAF .GLOBL CBAF .IF DIF,REGSAV,NO MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) .ENDC .IIF DIF,NUMBER,R0, MOV NUMBER,R0 .IIF DIF,STRING,R1, MOV STRING,R1 .IF NB,FIELD ZZZZZZ = 0 ZZZZZB = 0 ZZZZZR = -1 .IRPC X, ZZZZZA = -1 .IIF IDN,X,O, ZZZZZA = ^B11 .IIF IDN,X,D, ZZZZZA = ^B11 .IIF IDN,X,H, ZZZZZA = ^B11 .IIF IDN,X,R, ZZZZZA = ^B11 .IF NE,ZZZZZA+1 .IF EQ,ZZZZZR+1 .IIF IDN,X