LBSOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUNDINVALID KERNEL FILExةw,@  4  J  ȱ⩤i8#) ) 8Le IEEE-488 SOFTWARE DRIVER ROUTINES FOR APPLE II PASCAL/FORTRAN By Jim Trezzo 6/23/82 INTRODUCTION The so?)PRINT.ALL R&,VE !a*SOS.DRIVER 40Z*MENU.MAKER }0>DISKNAME.DAT+EEFLASHNAME.DATGEw -READ.ME.FIRST/%SEG.T jRŸ/ III.PCL.16u' *READ.ME.A2;sB09/*READ.ME.A3CB2B2*HELLO.TEXTIE HELLO KE / *SOS.INTERP M4keE ! *SOS.KERNEL m#im#iЛ#Lȱ  6L憦  Lsmm l y` @8(Je稽 ʈftware to support the IEEE-488 card from Pascal and FORTRAN takes the form of an application note; source listings, informal documentation (no manual) and a diskette. The software consists of two separate parts. One part is written in Pascal as a Pascal   !"#$%&'()*+,-./0123456789:;<=>?@Ar the rest of the array. The valid ranges for the instrument addresses are as follows: Listener Address 32 to 62 decimal SPACE to > ASCII Character Talker Address 64 to 94 decimal byte of the first element) contains the string length, in order to look like a Pascal string type. The first character of the string is contained in the high-order byte of the first element. The remaining characters follow in low-byte/high-byte order foo four parameters. The listener and talker addresses are determined by the parameter "ADDRLST". ADDRLST must be a Pascal string data type. Since FORTRAN does not have this data type, an integer array must be used. The first byte of this array (low-order for the command being used 130 Driver not initialized 131 Count error; invalid numeric value In general, if ERR is not zero, the function was not performed. The functions require anywhere from none tpecific codes. 0 No error; normal I/O completion 2 Bad unit number 3 Illegal operation 128 Command error; invalid command 129 Invalid address list; listener/talker list is not valid ided by the unit GPIB are implemented as Pascal functions. These functions all return an integer value, ERR, which is a completion code. The code values corespond to the values returned by the Pascal IORESULT function, with the addition of several GPIB svided by the driver. All communication with the IEEE-488 card will be through the driver. Page 1 GENERAL NOTES ON THE USE OF THE GPIB FUNCTIONS All of the high level functions prov8) is written in TLA assembler code. The Pascal unit GPIB, which supports the higher level functions, relies on low level functions provided by the attached device driver. Low level functions such as UNITCLEAR, UNITREAD, UNITWRITE and UNITSTATUS are proINTEGER; FUNCTION REN(VAR ADDRLST:STRING): INTEGER; FUNCTION LCL(VAR ADDRLST:STRING): INTEGER; FUNCTION LLO: INTEGER; FUNCTION IFC: INTEGER; The second part of the software takes the form of an attached driver to the Pascal BIOS. This driver (I48TION SRQ(VAR RESULT:INTEGER): INTEGER; FUNCTION PPL(VAR RESULT:INTEGER): INTEGER; FUNCTION PPE(VAR ADDRLST:STRING; ENABLE:INTEGER): INTEGER; FUNCTION PPD(VAR ADDRLST:STRING): INTEGER; FUNCTION PPU: INTEGER; FUNCTION UNT: INTEGER; FUNCTION UNL: NT:INTEGER): INTEGER; FUNCTION XFER(VAR ADDRLST:STRING): INTEGER; FUNCTION GETR(VAR ADDRLST:STRING): INTEGER; FUNCTION DCL: INTEGER; FUNCTION SDCL(VAR ADDRLST:STRING): INTEGER; FUNCTION SPL(VAR ADDRLST:STRING; VAR RESULT:INTEGER): INTEGER; FUNCST:STRING): INTEGER; FUNCTION DEV(DEVICE:INTEGER): INTEGER; FUNCTION SEND(VAR ADDRLST:STRING; VAR DATABUF:BUSBUF; DATALEN:INTEGER): INTEGER; FUNCTION RCV(VAR ADDRLST:STRING; VAR DATABUF:BUSBUF; DATALEN:INTEGER; VAR RCVCunit. This unit (GPIB.CODE) contains the following higher level functions available to the Pascal or FORTRAN application program: INTERFACE TYPE BUSBUF=PACKED ARRAY [0..0] OF CHAR; FUNCTION IBINIT(SLOT:INTEGER): INTEGER; FUNCTION EOS(VAR ADDRL @ to ^ ASCII Character Secondary Address 96 to 126 decimal ` to ~ ASCII Character (All secondary addresses must follow a valid Primary address) A Pascal example of an address list containing talker address one and listener address eleven: ADDRLST := 'A+'; or ADDRLST := ''; ADDRLST := CONCAT(ADDRLST, CHR(TLKOFF+1), CHR(LSNOFF+11));ally append the termination string (one or two characters) onto the end of the data stream, with the EOI message sent on the last character. Detection of the termination string during the receive data function will signal the end of the data stream. Setrror) and the function will not be performed. If ADDRLST is length zero, the mode will be disabled. When the device driver is initialized, message terminator mode is disabled. When message termination mode is enabled, a send data function will automaticharacter of the string will be the first terminating character. If the string contains a second character, it will be the second terminating character. Any character is valid. IF the length of ADDRLST is greater than two, ERR will be set to 131 (count elization, the ATN message will be sent. Set Message Terminator: ERR = EOS (ADDRLST) The EOS function can be used to enable message terminator mode. When ADDRLST contains a one or two character string, message terminator mode will be set. The first cnitialized by this routine. SLOT, an integer, must be the correct slot number which the interface card is installed in. The valid range of values for SLOT is one to seven. ERR will have the value 131 (count error) if SLOT is out of range. After initia Page 3 GPIB FUNCTION DESCRIPTIONS DRIVER COMMAND FUNCTIONS Initialize: ERR = IBINIT (SLOT) Before any of the GPIB functions can be used, the device driver and the Apple II IEEE-488 Interface Card must be inally a bar above the sequence will indicate that the ATN message is being sent. When brackets enclose a sequence, this indicates the sequence may or may not occur, depending on the function's parameter values. orrect and will read or write to the buffer based on the size given by DATALEN. In the descriptions which follow, some of the bus input/output sequences are shown. The DIO mnemonics for messages as defined by the IEEE-488 standard will be used. Additioepresents either the number of bytes to by sent out on the bus, or the maximum number of bytes which can be received. In no case should DATALEN be greater than the the number of bytes which the buffer DATABUF can hold. The driver assumes DATALEN is cer to elements of the five hundred byte data buffer, the variable "DATA.BUF[n]" is used for byte "n". However when a GPIB function is called, the name "DATA.IBUF" is used for the parameter "DATABUF". The parameter "DATALEN" is an integer whose value r TYPE PA500= PACKED ARRAY [0..499] OF CHAR; VAR DATA:RECORD CASE BOOLEAN OF FALSE: (IBUF:BUSBUF); TRUE: (BUF:PA500); END; The data type BUSBUF is defined in the unit GPIB. To refecause of the strong type checking of the Pascal language, a special technique is required to allow the Pascal application program flexibility in allocating the size of the data buffer area. The following example shows how this technique is used: f the area of memory where data is read from or written to by the driver. In Pascal this buffer is a packed array of characters. In FORTRAN it is an array of integers, where each element of the array contains two characters (low-byte/high-byte order). B where TLKOFF = 64 and LSNOFF = 32 the offset for a secondary address is 96 Page 2 The parameter "DATABUF" is used by both the Send Data and Receive Data functions. DATABUF is the address o Controller Device Number: ERR = DEV (DEVICE) The DEV function will set the device number of the Apple controller. The normal or default device number is zero. The device number will be set to zero by the IBINIT function. The device number is used when my talk address (MTA) or my listen address (MLA) is being sent on the bus. The valid range for DEVICE is from zero to thirty decimal. If DEVICE is out Page 4 of range, ERR will be set to 131 (count error)ute trigger). If ADDRLST contains one or more listen addresses, the bus will be cleared of all current listeners (by an unlisten) before the new ones are addressed. If the listener list is empty, the GET message will be sent to currently addressed listenidle CONTROLLER FUNCTIONS Group Execute Trigger: ERR = GETR (ADDRLST) This function simultaneously triggers the functions of all instruments addressed as listeners. The response is instrument specific ( not all instruments can respond to group execo currently addressed listeners. ERR will be set to 129 (invalid address list) if no talker or invalid addresses are in ADDRLST. Bus input/output sequence: ______________________ ____ [UNL] TAD [LAD1..LADn] DAB1..DABn+EOI must contain one talker address. If ADDRLST contains one or more listen addresses, the bus will be cleared of all current listeners (by an unlisten) before the new ones are addressed. If their are no listeners in the list, the data will be transfered t one or more listeners, where the bus controller (Apple) does not participate in the data transfer. The function will only terminate when the EOI signal is sent by the talker. XFER cannot be used if the talker doesn't send EOI. The address list ADDRLST of bytes received equals DATALEN. Bus input/output sequence: ___________ ____ TAD UNL MLA DAB1..DABn [EOS]+EOI idle Transfer Data: ERR = XFER (ADDRLST) The Transfer function is used to move data from a talker to when one of the following conditions occur: The EOI signal from the talker. A termination string is received (only if message termination Page 5 mode is enabled). The numbererformed. DATALEN, which specifies the capacity of the buffer DATABUF, must be greater than zero. ERR will be set to 131 (count error) if it is not. The integer parameter RCVCNT will be equal to the number of bytes received. The function will terminate DATALEN, RCVCNT) The Receive Data function loads the incoming data stream from a talker into the array DATABUF. ADDRLST must contain one valid talker address. If it does not, ERR will be set to 129 (invalid address list) and the function will not be pre in ADDRLST. Bus input/output sequence: ____________________ ____ MTA [UNL LAD1..LADn] DAB1..DABn [EOS]+EOI idle EOS represents any message termination string. Receive Data: ERR = RCV (ADDRLST, DATABUF,be cleared of all current listeners (by an unlisten) before the new ones are addressed. If the listener list is empty, the data will be sent to currently addressed listeners. ERR will be set to 129 (invalid address list) if talkers or invalid addresses astream (total bytes sent equals the value of DATALEN plus the number of terminator characters). In either mode, when the last character is sent, the End-Or-Identify (EOI) signal will occur. If ADDRLST contains one or more listen addresses, the bus will number of data bytes to be read from DATABUF. DATALEN must be greater than zero, or ERR will be set to 131 (count error) and the function will not be performed. If message terminator mode is enabled, the termination string will be appended to the data . TALKER/LISTENER FUNCTIONS Send Data: ERR = SEND (ADDRLST, DATABUF, DATALEN) This function will send data from the Apple to one or more listening devices on the bus. The data will be read from the array DATABUF by the driver. DATALEN specifies theers. ERR will be set to 129 (invalid address list) if talkers or invalid addresses are in ADDRLST. Bus input/output sequence: _________________________ [UNL LAD1..LADn] GET idle Page 6 Device Clear: ERR = DCL All instruments on the bus will be cleared by this function. Each instrument will go to a predefined state which should be described in the instruments operation manual. Bus input/output sequence: ________ DCL idle is instrument. Bits 8 through 5 and the high-order byte are ignored. Page 8 Bus input/output sequence: __________________________ UNL LADn PPC PPE|sppp idle Parallel Poll Disable: ERR = P2 P1 Bit 4, "S", assigns the sense of the listener's poll bit (whether the instrument will signal a request for service with a 1 or a 0. Bits 3 through 1, "P3", "P2" and "P1", determine which bit of the status byte (see parallel poll) is assigned to thBLE contains four bits (the four least significant bits of the low-order byte) which are used to determine the bit number and bit sense assigned to the instrument for use during a parallel poll. The low-order byte is used as follows: x x x x S P3ns a bit number and a bit sense to each remote device to be enabled. ADDRLST must contain the listener address of the one instrument which will be configured for a parallel poll or ERR will be set to 129 (invalid address list). The integer parameter ENAte of RESULT will contain the byte received from the parallel poll. Parallel Poll Enable: ERR = PPE (ADDRLST, ENABLE) For instruments which are able to respond to a parallel poll and can be configured with a Parallel Poll Enable, this function assigther set or clear to indicate a single piece of information about an instrument's status. Each of the eight bits may be assigned to a device using the Parallel Poll Enable function for some devices, or by a DIP switch on other devices. The low-order byThe integer parameter RESULT will have the value one if SRQ is true, and zero if SRQ is false. Parallel Poll: ERR = PPL (RESULT) A parallel poll is conducted on the bus and an eight bit status byte is returned by this function. Each status bit is eiused to determine if any device on the GPIB is requesting service. One or more instruments may assert the service request signal (SRQ) simultaneously. A serial poll would normally be performed after a service request has been detected by this function. resses are in ADDRLST. Bus input/output sequence: _______________ ________ SPE TAD UNL MLA status byte SPD idle Page 7 Service Requested: ERR = SRQ (RESULT) This function is t if the instrument is issuing a service request. Bit 8 and bits 1-6 may contain device specific information. ADDRLST must contain the talk address of the instrument being polled. ERR will be set to 129 (invalid address list) if listeners or invalid addtain both an indication whether the device is requesting service and some device specific information bits. The low-order byte of RESULT will contain the byte received from the serial poll. Bit 7 of this byte (corresponds to 64 decimal if set) will be se: _________________________ [UNL LAD1..LADn] SDC idle Serial Poll: ERR = SPL (ADDRLST, RESULT) Used to perform a Serial Poll of an instrument to obtain its Status Byte. Upon successful completion, the integer parameter RESULT will conten) before the new ones are addressed. If the listener list is empty, the SDC message will be sent to currently addressed listeners. ERR will be set to 129 (invalid address list) if talkers or invalid addresses are in ADDRLST. Bus input/output sequence Selected Device Clear: ERR = SDCL (ADDRLST) Similar to Device Clear except that only the instruments which are listeners will be cleared. If ADDRLST contains one or more listen addresses, the bus will be cleared of all current listeners (by an unlis PPD (ADDRLST) This function selectively disables one instrument, specified in ADDRLST, from responding to a parallel poll. ADDRLST must contain the listener address of the instrument which will be disabled or ERR will be set to 129 (invalid address list). Bus input/output sequence: _____________________ UNL LADn PPC PPD idle Parallel Poll Unconfigure: ERR = PPU This function causes all instruments to be unconfigured for parallel poll response. Bus input/output sequence: __ all of the procedures which follow. This procedure only clears the slot number variable in I488. UNITSTATUS(unitnum, data, option): This procedure provides a set of control and status functions. If the parameter "option" has the value two, a control ITSTATUS, UNITREAD and UNITWRITE Pascal procedures. Each GPIB function may call one or more I488 procedure to complete a single function. UNITCLEAR(unitnum): This procedure is only used by the function IBINIT. The parameter "unitnum" must be 128, as ino modify GPIB or I488. A listing of GPIB.TEXT will show how the I488 functions are used. To fully understand the I488 functions, the files I488.TEXT, I488A.TEXT and I488B.TEXT should be listed and studied. Access to I488 is provided by the UNITCLEAR, UN Page 11 I488 FUNCTION DESCRIPTIONS Since the GPIB functions call the I488 functions, it is not necessary to deal with I488 directly. You only need to read the descriptions which follow if you intend tgo to an idle state. Use this function only under unusual circumstances such as a system hang up or a control conflict. The IFC message will be sent for about 5 msec (standard requires > 100 usec). Page 10 Bus input/output sequence: ________ LLO idle Abort/Interface Clear: ERR = IFC This function places all of the instrument interfaces to the BUS into a known state. All talker, listener and controller functions Lockout: ERR = LLO Issuing this function will put all remoted instruments into a state whereby they will not respond to their Local/Reset button. This local lockout state is left when the Remote Enable line goes false. be set to 129 (invalid address list) if talkers or invalid addresses are in ADDRLST. Bus input/output sequence: ________________ idle or _______________________ UNL LAD1..LADn GTL idle Local ontrol line will become false. This will set all devices on the bus to local operating mode. If ADDRLST contains one or more listen addresses, the bus will be cleared of all current listeners (by an unlisten) before the new ones are addressed. ERR willal: ERR = LCL (ADDRLST) If listener addresses are specified with this function, the Go to Local command will be sent. All addressed instruments will now accept front panel (local) commands. If listener addresses are not specified, the Remote Enable c be set to 129 (invalid address list) if talkers or invalid addresses are in ADDRLST. The unlisten (UNL) message will not be sent by this function. Bus input/output sequence: ____________________________ [LAD1..LADn] idle Locsses may be specified. Devices will not go into remote mode until they are addressed to listen, either now or by a subsequent command. The Remote Enable line will remain true. ADDRLST may contain one or more listener addresses or may be empty. ERR willvated). Bus input/output sequence: ________ UNL idle Page 9 SYSTEM CONTROLLER FUNCTIONS Remote Enable: ERR = REN (ADDRLST) This function asserts the Remote Enable line. A list of addre______ PPU idle Untalk: ERR = UNT The current talker on the bus is unaddressed (deactivated). Bus input/output sequence: ________ UNT idle Unlisten: ERR = UNL All current listeners on the bus will be unaddressed (deactifunction will be called. The value zero will specify a status function. The parameter "data" is a variable reference. The variable is an array of bytes, with the first byte containing a control or status code which determines the function. The meaning of the remaining bytes is function dependent. The following functions are in I488: Control functions: Transfer Data - Used by XFER. The format of "data" is as follows: byte 0 control code 0 byte 1 length of address liReqested - Used by SRQ. The format of "data" is as follows: byte 0 status code 1 byte 1-2 result returned (low byte/high byte) Parallel Poll - Used by PPL. The format of "data" is as follows: byte 0 sta Poll - Used by SPL. The format of "data" is as follows: byte 0 status code 0 byte 1-2 poll result returned (low byte/high byte) byte 3 length of address list byte 4 - n address list Service device number Initialize - Used by IBINIT. The format of "data" is as follows: byte 0 control code 17 byte 1 length of slot number list (must be 1) byte 2 slot number Status functions: Serialst (0 to 2) byte 2 - n terminator list Set Controller Device Number - Used by DEV. The format of "data" is as follows: byte 0 control code 16 byte 1 length of device number list (must be 1) byte 2 code 14 byte 1 length of address list byte 2 - n address list Set Message Terminator - Used by EOS. The format of "data" is as follows: byte 0 control code 15 byte 1 length of terminator li control code 13 byte 1 length of address list byte 2 - n address list Receive Data - Used by RCV. The format of "data" is as follows: Page 13 byte 0 control as follows: byte 0 control code 11 Abort/Interface Clear - Used by IFC. The format of "data" is as follows: byte 0 control code 12 Send Data - Used by SEND. The format of "data" is as follows: byte 0 address list Local - Used by LCL. The format of "data" is as follows: byte 0 control code 10 byte 1 length of address list byte 2 - n address list Local Lockout - Used by LLO. The format of "data" is UNL. The format of "data" is as follows: byte 0 control code 8 Remote Enable - Used by REN. The format of "data" is as follows: byte 0 control code 9 byte 1 length of address list byte 2 - n address list Parallel Poll Unconfigure - Used by PPU. The format of "data" is as follows: byte 0 control code 6 Untalk - Used by UNT. The format of "data" is as follows: byte 0 control code 7 Unlisten - Used by te 2 length of address list byte 3 - n address list Parallel Poll Disable - Used by PPD. The format of "data" is as follows: byte 0 control code 5 byte 1 length of address list byte 2 - n Page 12 byte 2 - n address list Parallel Poll Enable - Used by PPE. The format of "data" is as follows: byte 0 control code 4 byte 1 enable byte (sppp) byUsed by DCL. The format of "data" is as follows: byte 0 control code 2 Selected Device Clear - Used by SDCL. The format of "data" is as follows: byte 0 control code 3 byte 1 length of address list st byte 2 - n address list Group Execute Trigger - Used by GETR. The format of "data" is as follows: byte 0 control code 1 byte 1 length of address list byte 2 - n address list Device Clear - tus code 2 byte 1-2 poll result returned (low byte/high byte) Bytes Received - Used by RCV. This function is used after a UNITREAD, to determine how many bytes were read into the data buffer (RCVCNT). The format of "data" is as follows: byte 0 status code 3 byte 1-2 returns number of bytes received (low byte/high byte) UNITREAD(unitnum, data, datalen): Page 14 This procedure is used by RCV (receive data), af C SEND INTERFACE CLEAR IERR=IFC() C SEND DEVICE CLEAR IERR=DCL() C SEND REMOTE ENABLE IERR=REN(ADRLST) C SEND DATA IERR=SEND(ADRLST, DATAFER DO 10 I=1,(DATALN+1)/2 I1=I*2-1 I2=I*2 10 DATABF(I)=ICHAR(D(I1))+ICHAR(D(I2))*256 WRITE(*,1000) C INITILIZE GPIB DRIVER IERR=IBINIT(ISLOT) DATALN=10 ISLOT=1 C TAD1 TLKLST=1+ICHAR('A')*256 C FORM ADDRESS LIST ADRLST(1)=ALSTLN+ICHAR(A(1))*256 ADRLST(2)=ICHAR(A(2)) C FORM DATA BUF INTEGER DATALN, ADRLST(128), DATABF(500), TLKLST, RCVCNT CHARACTER A(2), D(10) C LAD1 AND LAD2 DATA A/'!','"'/ DATA D/'1','2','3','4','5','6','7','8','9','0'/ ALSTLN=2 Page 17 A FORTRAN EXAMPLE $USES GPIB IN GPIB.CODE PROGRAM FGPIB C FORTRAN PROGRAM TO CALL PASCAL GPIB ROUTINE list this program and study how GPIB.CODE is used. IGPIB is also handy for experimenting with instruments before any program has been written. IGPIB.CODE has already been linked with GPIB.CODE, and can be executed as is. INTERACTIVE GPIB EXERCISER Included on the diskette is a program called IGPIB. This is a simple GPIB excerciser written in Pascal and is useful as an example Pascal program which calls the GPIB.CODE functions. It is a good idea tof driver: I488 Unit number: 128 Initialized at boot time: No Another unit number: No Start on a byte boundary: No Attach another driver: No Page 16 and transfer ATTACH.DATA to boot disk DOC.TEXT - This document When ATTACHUD.CODE is run, give the following answers to the questions: Name of data file: ATTACH.DATA Questions on hires page: No Name ode file ATTACH.DRIVERS - Contains the driver code file (I488.CODE) Transfer to boot disk SYSTEM.ATTACH - Transfer to boot disk ATTACHUD.CODE - Run this program to create ATTACH.DATA I488.TEXT - I488 driver source code I488A.TEXT I488B.TEXT GPIB.TEXT - Pascal unit source and code files GPIB.CODE IGPIB.TEXT - Interactive GPIB exerciser IGPIB.CODE source file and linked cor of bytes to be transfered out of "data". Page 15 NOTES ON INSTALLING THE APPLE II IEEE-488 DRIVER The supplied diskette contains the following files:datalen,,12): This procedure is used by SEND (send data), after UNITSTATUS (control code 13) has been called. The variable reference "data" refers to an array where data bytes will be read from. The value of the parameter "datalen" specifies the numbeter UNITSTATUS (control code 14) has been called. The variable reference "data" refers to an array where data bytes will be read into. The value of the parameter "datalen" specifies the maximum number of bytes "data" can hold. UNITWRITE(unitnum, data, BF, DATALN) C RECEIVE DATA IERR=RCV(TLKLST, DATABF, DATALN, RCVCNT) WRITE(*,1100)RCVCNT DO 20 I=1,(RCVCNT+1)/2 I1=I*2-1 I2=I*2 D(I1)=CHAR(MOD(DATABF(I),256)) 20 D(I2)=CHAR(DATABF(I)/256) WRITE(*,1200) (D(I), I=1,RCVCNT) Page 18 1000 FORMAT('BEGIN FORTRAN TEST PROGRAM') 1100 FORMAT(I6,' BYTES RECEIVEDwrite will be determined by the device and the mode of operation (e.g. EOS or non EOS mode, parallel poll enabled or not, etc.). e Number Byte 1: valid device address 19-Set EOS character(s) Byte 1: flag ($80 for 1 EOS character, $C0 for 2, 0 for non-EOS mode.) (SOS read and write functions are also implemented. Status or control calls needed before a read or one 15-Abort/Interface Clear None 16-Send Data Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 17-Receive Data Byte 1: address list length of 1 Byte 2: Talker address 18-Set Controller Devic Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 13-Go to Local Byte 1: length of address list (n) (for Clear Remote Enable, send length H byte of 0.) Bytes 2 to n+1: Listen addresses 14-Local Lockout Nte 3: Listen address 8-Parallel Poll Disable Byte 1: address list length of 1 Byte 2: Listen address 9-Parallel Poll Unconfigure None 10-Untalk None 11-Unlisten None 12-Remote Enable es 2 to n+1: Listen addresses 5-Device Clear None 6-Selected Device Clear Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 7-Parallel Poll Enable Byte 1: SPPP byte Byte 2: address list length of 1 ByERS NEEDED 0,1,2-Standard SOS driver control calls 3-Transfer Data Byte 1: length of address list Bytes 2 to n+1: n-1 listen addresses, A1 talker address (any order) 4-Group Execute Trigger Byte 1: length of address list (n) BytBDEFGquest First byte: 0 Second byte:0 if SRQ false, 1 if SRQ true. 5-Parallel Poll One byte: PPL byte 6-Bytes Received In Read First byte: low byte Second byte: high byte CONTROL CALLS PARAMET IEEE488 Card Driver for Apple /// STATUS CALLS PARAMETERS RETURNED 0,1,2-The standard SOS driver status calls 3-Serial Poll First byte: 0 (requires address list sent) Second byte: data byte 4-Service Reital Interface for Programmable Instrumentation" Texas Instruments TMS 9914 GPIB Adapter Preliminary Data Manual, Sept. 1979 Page 20 II Apple Pascal Language Reference Manual, 1980 Apple II Apple Pascal Operating System Reference Manual, 1980 Apple II Apple FORTRAN Language Reference Manual, 1980 ATTACH-BIOS document for Apple II Pascal 1.1, Jan 12, 1981 IEEE Standard 488-1978, "Dig') 1200 FORMAT(10A) END Page 19 REFERENCES Apple II IEEE-488 Interface User's Guide, 1981 Apple /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// SIG, Washington Apple Pi 12022 Parklawn Drive Rockville, MD. 20852 (301)-984-030OERRLIERKBEOTIMEDATEPREFIXEXFNEXFN%OUTREINDENAAAAAAAPOHOMA SUB$OFTRACNOTRACNORMAINVERSSCALERESUMALEGOTIRESTORSWAGOSURETURRESTOOALOASAVDELETRURENAMLOCUNLOCCREATEXECHAIAAACATALOAADATIMAGCADEAPRIssssssssss\3!z~IssssssssssssIG%ӓ,ssևwn7}|tttUUZ{fzxxˆU膅[L<^ENFONEXINPUOUTPUDIREAWRITOPECLOSATEXABYAAAAAWINDOINVOKPERFORAAFRHPOVP̠Ώ h:gpOn[n٧s]ds3issssssss0b>&dsjs|T}|s[LNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ŭ᭭򭭪𭭠򠭠頭퀠Šӳ頠𠠀𠠠堠젭ӠΠSOS NTRPRHeLZĠР쁭堠堠ՠP򠭠έ魭HER SUBROUTINEnSLOW=110xFLASH/2=FLASH/2):۴ =11:=07 FLASH$ SLOW FLASH:".d1/Menu.Maker"5 WAP /// SIG HELLO PROGRAM. UPDATED 4/12/89 DGO :#1,".D1/hello.text" ž#170 (#1;ERIN$ 2ERIN$<40F#1/P=23:=25:"PRESS ANY KEY TO CONTINUE.":G$U-Z#2,".D1/FLASHNAME.DAT":#2;FLASH$:#2%dFLASH=110: FLASurce listings, informal documentation (no manual) and this diskette. We've taken the Pascal text files and converted them to ASCII on Side One so they can be read easily with Menu.Maker. Side two contains the actual software. Knowledge of Pascver files for the IEEE-488 card that will work in both the Apple // and Apple ///. There are separate files (on Side Two) for each computer. The software to support the IEEE-488 card from Pascal and FORTRAN takes the form of an application note; soHJ0 WELCOME! WAP /// SIG Public Domain Library Disk Category/Number: Pascal/3PCL.16 Disk Format: Self-booting Side One This disk contains driNDEELSCONLISCLEAGENETABTSPCUSINTHEAMOSTEANOEXTENSIODIAFNOAAAAAAAAAAAAAASGNINTABSATYPRECAAAAAAAAAAPDLBUTTONSQRRNDLOGEXPCOSSINTANATNAAAAAAAAAAAASTR$HEX$CHR$LENVALASCTENAACONVCONV&CONV$CONV%LEFT$RIGHT$MID$INSTR>=<^/*-+NEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPRANGINVOKSTACK OVERFLOREDIM'D ARRADIVISION BY ZERILLEGAL DIRECTYPE MISMATh$PLh wlȱȱ%$LWH mh x~  m#W", mȱ28eLeji`Lwl mȱ"Ɂɂ ȱ :, iTjj ȱiVjj8逪XW0 Vf0WHW$ 0X: h ,@dd )e dʙdH &eh(dL ddک,ddLd:e``eLeHELLO ue 5eLse6e:7ee8ee:e`EAd j @a(% -, bLs j {ghhL<^gHhHhH , - b j$% @ag5h6h6hhhhh8g5h6h 悅`6 "]La ud `L  d.CONSOLE[[ TdSdddddd0 ddddd`dd A 6 s e 9c()' 9cKHLI jLdj89弅:彬: 悅`H hɝɞɜ)`dd  6芅 e ()'` e'()HKIL 9cL>hL<^) i!Ls j @aLK$L% :: 悅 lc!)` +b` +b` sL :b#`L,H s h ऊL(,L8f` A KL jLdjOPPKLL h AKL` Ѽ   (`H shLs Aji!S)Lt`SSS`L` z :0.`9::hhgg.%g& $gegަhH逪hhʰ` ҥ [ aLT ҥIJJABB=>>;<<?@@T ě hhhHH  `89$ 0~!L`!sm?iٰcL`S )!a{)Qi ڐ߽S) -ai) -aɢ ɣɍж$HS -ahʥ0SSȩ5%"/װ&hԐɈf0ɔĐ 8,f 8f L_ʅSS=ȄL`ȱi8eiidHddhd) _ ƢLh _L>h jhP _S @a-Qggeg5hih 6i6 "]S" ]$%SSSg a aL^ S S`La8 SiUjjS):,$f 0$ p fHhH_HcH uhch_hhhfhi0hhhB B A` ֥'( )&񦕤LNKM$Lb ě $m wl "m6X6+5 56ɀ56H $mhɀ(Z)& mL k~ wlL ͝dL Nsd# wl^_ ꂅ__hg^`8 悕`gHhHhH5?6@6@*5g5666gҦhhhhhhhhg:e:;e; ;m;`@c@c?be^@e@ _m__^ \Lx] i6g55``BY BSAMHH H] LPL(\)&P ěj9ȑ9ȑ99i=:i: >i>`Ɂ7XWWXjnXWi` ]?@@bgchch )^ ]b ]b^b^L\b8g+H__^8_ABB 9::)ѭ [ I[ aυ婶ZeLLL^$%Lae LGidFddddddd.ddddddddd ɕdˏd`Ls  Apple Business BASIC v1.23 - Copyright Apple Computer, 1980-83 CTERESOURCE UNAVAILABLDIRECTORY FULDUPLICATE VOLUM ERROR Please Press SPACE BAR IN PROGRAM INTERRUPTED%&'(%+.@C$DE FG!H"I'MN#PQRTW(X潭`: 808`:dd@՚H Z#IJJCSTRING TOO LONFORMULA TOO COMPLECAN'T CONTINUUNDEF'D FUNCTIOVARIABLSOS CALFILES BUSNOT SOI/FILE TOO LARGWRITE PROTECDISK SWITCHEBAD PATFILE NOT FOUNPATH NOT FOUNVOLUME NOT FOUNDUPLICATE FILDISK FULFILE LOCKEFILE NOT OPEDEVICE DISCONNEm Vf0 mLf) mWA 0 -a mL8fW;8<< 悕` 6kLU*i kXX 4XLy \\'_ch_chbi^g \ihh ] Qp aj ih `p b iq bqn %jjg56Ly { b bq | XHWHHHֺ iLOPP$pX0S&ȱhȱKȱLe潥ɂ逅$L# $mKL x~ m khLgLsLc h5逢)&a TH THLgL6k8:9: STT`)ɀLK$Lb8gLOPPKLMNhhXE )s LvɁ >H>H= x\L|F )XHABB8 __^hHI8e^ @1 @+?%GHHHIJJih BABGHh`$  ě u Дs IJJ^__Lveȱeȱe `LćHƽ Ƽh`$ lȱlLL{ɝɍLɎСL s HI s shmHmHlHHɦ# shmHmHlHH , hHLt  ,, shTTLui ui,L3$0 |Lu xijk6kxyy xxy6i L[ s r$PLsi,L3-hLs L*tɘcɭ_ TTLdd`jk8L|L3L3TL3,L3i LL r$PLLBLsș Ȅ ( qƚƚ` s s),;,=,#,(,,ѼLL<^L<^ llmm$P$?TUJ)TU  ' Lsi imLqLsh E0`H ty ))ELyq  8 $0!PizEn{dUeUi hLqLs `wLr !L2 {}$ 0`QɀX zLs.+"2mXm tL qXXW zzEn{i x }H$ ]kh8 )KLe9e:: }Lgi , p s$8$0p`PL<^Յ H s r ɀ ȱX Hih0 & ?<I?iE W Lq s )L<^ȱQȱȅR dj sLHoUVV$ LhU Lp$ LL<^opL^```?EXTRA IGNORED?REENTER $0pL,`LgXW ׫ k*iXX 4X \\L<^Xii7 { n k$ |WlXVVE$ P% eT{||Hd ̐h p IkLo00$0 L>o "m nV dj$D$ P 膼Lo$0",i [ kLoHSHhp< {}$ p0H 07h ]k ,LmUVV `p F sLn 2 ukLoF вLm jȪЖ LL<^~p l nhhLgOPP` Add# 6d s S SS@Ln A " r ,; s lLn#f  ;П ⭩,SLn "mʆ,S _S% nLh "mL_T ST#L(, U VV ׫$ 0  QpU= d hkddhe##5ddˏdd?Ll ,?#$04dHHd = d hkddˡddhhd`LsL#&F  ; s b 0` L+l$ Nsd#Lzm566ȱ5Ll H# wl m#͉LchL$m QRKLLsh$0LU$^`=8WW>X> 悅XXXL:^ g`L<^ l Jj bx bp,_;Ll  ~q$0P oՅ5R66R l ~ L%l $m0 =k $m#`$L#i)8#Ll  s s( L7bʊ# L-l m hxd5d$0H h`L^bLb$%/%5$ &5 &5e$$5e%%$&%$e$% Lk ׫ sHH ~qLPkHHh$0'ph | ZlWȥmW`L$|hXWXL-hm lmmLkl VYZZ{|| w ᐥlmmYZZ LxWXX ox ExYW# kXX 4=^W^0A, 9:: Ga.ghh 悅` A` \\ɾ,L<^hhZkKhLhhhe9e:: mLg jei `Ls j:,"hhhhLgɜEɝDɞLb Hɾɺдmhɾ Qp aj pi `p j` jLi j,d wlOZL^L^-L(dPL<^OPMNKLhhLg` Ls ҥ?ieCiLa,  aFL s a iLg ]hhh5h689H: H:HLHKHH6H5HHH` ui` pi` Qp j pi `p i` j jK$L%8eȢ_B_B`)&N> ȱI8gJJ hhge ghh f feLVt~w/z*|cYX ~uƀ1rP aziP | |iɈ { T}i8Huiiu x BU 瀩{h z` |] az 뀩]Laz | i8fe.șR0șRmymlylkykjyj00ڊIi i/ȄȪ)Re.șRI)ЪR0.ȩ+f.8f-RER/8 i:RRRRRR`y`'d |Ģ { &{f o0`LB ` H$ge &{h 80 '~L}H |h |zEn{iLxf d$h0Ly ef q80fL}COt#t$JZ mLKjk8 | ~Lm ^|-$nșRnȩ0iL f~ azea~ } \~ } &{e B{e yx %}ei0nihoi8傐IL|`7 z!L|iD8$n yiLyn)FjjjLyiɠ %}nnI*imLyjklm` s e-o+ smo..IE)2s S -+fh r$h8fL}fg s$gPf8ef B{f65m5l5k5n j5i`d,]WXX566 |m5 ^|l5k5n %j5i5` |m l)m |m`znth` |ht`i  y my`i n*` |jkjI*mlinLyFn`nEz0ʢiH xv5ui`uei0,iiL0y{n`nI0hhL,yLy |i{ xi` |={{ {LZ{ zL{ |8ii zivjwk xlym* 蕁24(y&x&w&v0⨥ymyxlxwkwvjvL{@jjj)(L{L<^~jklmL y56y^Vy dv88; 54541r |LiHi z xz U{y xy рz xh '~z zLz z~ zm zl zk zj zL{LyJ eyexew~ev~f~ffffJ`5665y5x5w5zEn{z lkj |yjJkjlkmlmi in`emeymlexlkewkjevjLkyi&m&l&k&j8iIiii9fjfkflfmf`nIngjIjgIm lkj`L<^}i0vvvvvj`Lu 1eL5665`iɀ*iH i  @8 ei $ tutt tj ȡhn` t` 0RN0R 0R$n-RRR`i` p`5665i`$0BP?iH i hLt $mlmkljkij8ihn`L,$0DpA q enHi80 @Lyu \ % @u ćh `&m&l&k&j`2L0 և yxLT}$0pLI oբRLi `u LLi u Lui0 ܆ چ,,% п 擩lm0UVUO / +'L U)łiV VL LI 8U 7ȱ7 UU ЯUVULU7V8 p L LZ U qUU qUH85h688V77U U 5qUWȥ6qUX7qWWȥ8qWW ٥IiV) V LVU?e8V je?e>e8U>e5V?e665e=e@eee8 hx57 xLCx8I77JJ8 88` H dhjL YYHH dYZZ oxhhe5566ɂ逅66 wZZY L YIL=m ) s  ʊHYImm shhhhYhZhZHHE` 3YZZ xLCxl5Ym6Z78ߠȘH yxy hL3 j kqHHHH s H , ,H s s ~qhh 1 lhhXhXhWWȱW7ȱW8 eLNLXZWX ` GGH HlHmHmH khmhmhlh hk8j7k8Lޒ e7788IjJkJk )lmm'&`UR{R||L̐: / cRRȹRRȥ Rл s `Lsh sh5lh6mh6mhxhyhy x x Qȱx7ȱx88 Ƃ 7e7888ł75 楽HHȱȱ6H6H5H s =к bqhhh Lshhhh` ~R/mZlmYZ PujHkki^^`H"h{||kjkȱ{ "ie{||  V{|56|6 w&5L<^i8e` ě u8A?pB@B@ )onL܇jkL| Nsdȩ8 NsdL2Lа,L<^ A s ׫ g iq s= sXHXHWHHHH ajL? b rLiq HHH s iqhhh5ȱ6ȱLI65 g5H6 2|Hgȑgʆ5a g5ȑgȥg <^^^__ɂ逅____<;إy6 hlhm^Ȋ^LL:^ȥ5^H^h ͎el5emȆ6п  ͎e^e__ iLZe *& eegggegȱgehh Ľ ,L<^  8` ^LQ ŠhhL6 $P 訽5 ͎56ۥ 8ee L:^?be^@ce@c __^_ \__^;<<6  $Phihi^Ȋ^6h656H |mHlHkHjHiHl5 8eeghh^__` HHH H bqh hhhn0iɐ1 }L yxL%}\i FHHHHH 6hhhHHlm ,҄ shh)>=>hgh<<;[a{p ;<<ccb? @c@ube.a{bb,\(eb cc`ebcA[8饰 a{8`8\e@@He? ]@@?hbbb0 ea ȑbc8L@ @@h5H ?5^6_6_hhXhXhWLk ? % ?Џ`5566` xe5566ɂ66` s p `  zLseff z.!'$ iߪ$ 0 H8eAi\h$ P8 (Lt$ 0}5}} ,kk} , kklm Lٓ[ 80@ 6 2`  dkH) ojhJJJJ ojL 0:i`L<^ jHHHHHH s jhLyqhhh6h6h555_ȱ5VHHHH %L/5H6H6H7V8U #   785U6VLΔU7e778ҥU^V_bcF_hcCgDhebbc \^__`U8傅UV` |UȱU` L<^ |UUƜ0ƛ ӗWqeWȱWqei W` |8UUWȥVUX`UeUV` 痠U` hh R LsL  z (L[ Rީ  @Y%(&:$LU s և ^|iHn %jHkHlHK s n ZlHmH5 s iH jHH楩e ) ,LsLR e  kLv;e je vk;ek Lje s ʊ0  ek;e`L HIJh*;e) H jehe;eed?eehi?e ueL5e qrL,op ɩ`et?ek;e`hZ L<^hZL<^L=ee>e ?e`opqrst !e5ehe?eLje LjeR=89R>:>:iR:RiRRiRL`8(RR(`EeFe  s bq Vml0L dMeL` bՍe :RRRiRȐȰRe9Re: J 2IHJh*=>> 95:6:6R L1 1Lԫ`L:^  aFL^R, ue 5eLڭR7>e?e5e?eJeKeLje֩ u>e?eՍ "] a a$% iLg֢   sLj$%`8f  a e ; ` s ɩ` YLILcopL7 z0xH ׫$0_ ;h8fH`aai shH2 h zJJJJf Ik ɩ` ̬ t os YLA ևLLק jWXX` ׫$`pd8isŠt`dyoopd8ip`J uv`&&&8孪孪宐橈`! @ uA?B@B 悅@=g>h>h ]=i>j>k a=g8i>hj>h 悅ki=5j>6k6k;el)@7Me0u(> ƬƫHH ,hohp` ɩCe0R`ȹR`ee?e@e ue 5e T L=e;e`Lso`n}pm aa`dyoh`L)i   HH `TH..TH..TH..THATS ALL, FOLKS!R`RT RT`#RT SOS KRNLb.D1/SOS.INTERPŠ̠Š.D1/SOS.DRIVERР頞 0 ) (lH'&3&'&#e'#%e'%'&"$"$#%'#%h`$e`î** }*`o^`on 8 JJAj@` *?($`ΠņɠŠ堠РѠ͠஠әƆH v?c,,,,h߈ߢ~))`3PLLP*%(i&`Ѕ񩏍E H pph`XǠĠӠ!((ͽϠРРSOS NTRPSOS DRVR(.D1(YYYYMMDDWHHMMSSMMM̱忠ΠͽŠ堠Р͠Ю̠Ɔx߭J ʈc(()o/ e/''ʈ((''()(1i / e/''ʈ((''((''((''' ('`ŠDAY, DD-MON-YY HH:MMSUNMONTUEWEDTHUFRISATJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECԠŠР@L&I/O ERRORINTERPRETER FILE NOT FOUNDINVALID INTERPRETER FILEINCOMPATIBLE INTERPRETERDRIVER FILE NOT FOUNDINVALID DRIVER FILEDRIVER FILE TOO LARGEROM ERROR: PLEASE NOTIFY YOUR DEALERTOO MANY DEVICESTOO MANY BLOCK DEVICESEMPTY DRIVER FILE '(i%%%h}%%`8 ȥ!8 !)"qȥ#q#e$ȱe%L)%`@(((( % %`((((࠰$(ɠH(@(h((((@(`%z %% %~(A{(L%`.8(.Je.&ʈ.s(1 6$P8"ȥ#L1$8"ȥ#(ϸ`"##L]$"qȥ#q0,$p)@"q"ȩq"8`*$% $% 8% $L$* $8%8 $`8 &'$% 8&$'% 8$%%`H   q ȥ q Hi hi 1  % H H ȱ h h % $$ 0 e e H i hi âz %` 1 8`    # &ȱ ' # i" i# # #`8 ȥ H h `8 6$P`8"#%#%"$w"$#%"`荚ٍ荺 荚`荺``` D ( )  * ) 4* * h* ))` L% q ȥ q Hi hi  i" i# #% $ȱ %ȱ &ȱ '`<!((g %(r(z(q( %y(i(0z %"#$ %&' $"#$%&'   `%$%ɠ%* " ~#C #p $ %*0"#)#)i $"% * %*  L! {" j% %ƌ(X#"$% "$ #%%& '   ` {" & ɠ% %)  !( (" %(r(z(q( %y(a(0: %   "$%&e$'e% R % <%e,ȥ,*,- y,,,-,,,ȱ,,- yL+,ȑ,` 2"p-,-L(Ġ %>,i-i8, ȱ,%,W,pp ڠ %p`l  " ) i LLLRLLLLL*LLLLLhh`LLL`SOS 1.3 01-NOV-82(C) 1980, 1982 BY APPLE COMPUTER INC. ) `G0 `8`HiHiH ihhȱh`86)IH)heuQɸ` ` W` ] %饚0` W` ߰4`)|E8ȍ۱Ǎ X̰% & !J8` *LĢ `8 iۥƍۥǍ`ۅ %  6 )Ѱ Ѱ` 𝭧e ǐ bǰL*ۈ5ȱ۠ƍȱǍ X̐ H h1  /ݐE`ۈۅ ۅ 8ƭ X̐`LLŠǠ  ݭv̅w̅ ðzv̍ŭw̍ŭƭ ­ōō T̰]ŅƮņ X̠8iȱiiȱi ṰŅǭŅ XLōۭ۩ۅ ȱ8D`F`8eYƍťǍŠ)͠ Wٍۭۅ5ۅƭۅ X̰ ìۈۑ T̰ۅƭۅ X̰ۙ%ۍ" T`K8`)` İ ۱ۈ` ưW/ۈęۈЍ۩@` 8 MƐ  5 Q8`LŅ ۅ ۩ۍۅ Lɰ ʰۅۄÍÍۙ'Ù ۍ*ۨ  Ѝ۹ۙ8v- ðJ ¥ ð, ðLO ʰƥLT`'  mې浰``8 8 nʰ0 ̰+泱Ƴ m° x̰ ̐8` m° x̰8 ۢ8 ˰y ` ¥ nʰ泱Ƴ T̰#泪 Ѳ *Ƴ ` L:Ϡ`泑Ƴ` LaĥH8`JȘ I8`  S`ۈۥۥ۩Íۭۍۭۍ հL¢H8`Jj Ȅ ۍۆeۅiۅ Lɰ ʰWۅۄ ¦J> ɩE` eĐL Ȑ 15WL QL5WW{5 ې'`,55 ې'` ݠ B1 ȩȑ Lɦ8`5  @ R㥶i ` İG8`F`X8``éۅĩ >` T֩xxMH]@ Kۅ5H ɐE$ eİ Ȱ h`h`8`W h8`hR`hLҿ i x +ۅ5ۅ6 ǰ `E8<W`­ `0XLۅ5` ռ``ߤeI`IiţO`Ȯʆ/ )󘑡`()0zq 滅ѺY Ueۅ5Ѻ Ѻ  Qܐ'`i ҩ *C8/y.i/ ȑ  © $ E7<3W`ȽLֽȄ @8`R ) [)_[AͰ")[)_[A:0/.ЩȑΘ8e * ȩ`Loü 7)?۽۩ W٠Յ<ōōř ռV7 uM78 V榠=ü#)@5 ɐ /ݐE ) .) @L `lqhٯ޿=ϓTXIֲ̛̐~ؠIJK,-NOPQ0vt `` LLɠ8`ΛLL渠`e`M) `ۅH)Ѱ%}ʈh Qܐ'``hi ` p6۽ʹZ5 HȐ/i i `гW8`0( ɐ Ȱ ʮ6E`5 խ ɐ ޢ ȰLǽi `< Ȱ+<#5 ې'` ɐ /ݐE`W8`R` 5&i ` Ȱ 0i `<8> ȐT eİF cȰB)Hh5 ˭)*ȑƑȥǑ'(ȑ`L)ɭ)Ѷ*i ڥ(8` ְ( ȱ5 HȦ)`Lxץ: ש ְ⥺i ꥻ(8`Lx Lxש u )۠0)p խ.8`)@ ϰ) ϰۈۅƭۅǭۅ5 X̰ *ƭ۬͵̶L  ΐ` Wհ> H۪ȱHۑhƳh sϰq ` ʰiȱi `)5©éՅĩ5 }JJ+`.`8`ɂ )`@ ש ְO ֤FHۑۑh8`P) հ Wհҥ,J+j泭۪ƳۑȊ ) ~ fPL ͊.>.ʱ+,EP!.E.Lw+,,ӄ*- P*e (` հB հ5 Wհ0,J۪泭ۑƳ sϰ(` L Ͱ2 ~ P kҐ#L8 T 2ΠHHȑhhȑ`Ld )N8` xհ*eȱ+eȱ,i۠Ѻ۹ۑ񥤅- ť.Lcԥ.La Ͱ$)rJ Lɰ )# Ԑ) ͰU..++,,IJ/ ӥ-.?Цե,J+jѲ4Ƴǥ4聠 H hH kh8`8-ȥ.L 8*Ʊ )8 0*-`.G.ʱ*+,EP'.E.LұE0+,,ӄ*p-e  )LBѠٳ )8`i (` )N8`*eȱ+eȱ,i۠Ѻ*ȱ+L - ť.Lkҥ. ՅL ͐Ld ~ pа.J/)@߅4N8`) ))УJ8` ۑȭۑǠۑۑȭۑ($S8`O8` "` / 򑺠+* ͐H h8` ΰi `()  *ǵ յý5Ņ4gȩυɩč5 iψ }.8` iϙLIѠ ˢ L΢ ΰ LϠ ˢ ΰ1` Đ@ АP8`B8`ۑJJJJ -ѥ +jѲ84ƳJJ 2ΐ3泑ƳLTΩ潑ƽ`ƱƳ ΰ( {Π۵*+)e`8`)` J J + ΰ" 0 ΰ 🱼ѼL8`ǩ Ϡ` ϰ ƑȥǑ` Ѻе*`)ȥ+8ۍې  ,ѺLTΠ"LΠ5 խ ɐ /ݐE`C8`)@ ϰa)ۥ,8ېu+J,\ ȱLJΠ) ϰ'#,J(] { ΰ ƑȥǑ.8` { ΰ,JѲ ƳL΅ƱƳ ΰҥ,J0`#$"0#`!qȱi 5H5Ƶ ǽ jh5`L2̩ƍv̥Ǎw̩ÎL%ϠƄǥLj̩۬L~̠HHh` ̐`*ѺG0?M`)J"u-- M8`۬` # ː`  = O̰)= I`JJJJѶQi Lˢ  0 ̐ `"L˦ `H8`8$$"$= O̰=`$0`#$"0`$` H hQ)fʅ F jF jF jF &!  eװ*  ̰F湥 ƹ`Z8`@  ʰ泭ۑƳ ʐ` ʐ` ˰ ƹ Wː`ۘ . . .۪8*JۦȱѶ"` ɰ Ȑ`E`Ɔ X̐8`>>5Ѷ Qܩ<`>`\ʊJJJJ ۍ۩  ˰Fȱ X̰6 0 Lɠ 0ۑۑ8ȱ`H8` ɹ $  8JJJJ8 ` ۅƄ X Ġȱ۠ ȍ۱۠ ۭ) ۍ ð*)#  O̰``)(`N8` ) xհۈ ̰آ*գ  Ͱ ݢգ LvL{ؠ; ˦,+* ʈJj =ؠ yiȩ`y4泱ƳHhz ʠiȱizLA`L;ؠ"  `1` Đ7@8V۩ Lɠ۪8ۊ۠X)JJJp8**-p hhJJJJ 00) 0`ǀЀOHH p0%Px0pNp(PhhQL(p8**-phh SU  U.ST  UOSQ R 窭 JJҘ)e}ҭ e8ЅЩѩӠEӅ ЭHH p0Hppxpppp( ̍pJJ ̍phh`HH p0Ex0pp(0 (   `x )HH8(=&(+ʈ&ਹ''&&hh(` * @ HH` 2``ӠР    0) ȑȱȱȱ008 8hhh H(`x )HH'Ƚ!88x , ,,(`," , *)` `߭lߩ * xLx @h hhh ,0)ߨ)Ah&'0HHHH xhhhh ,0)ߍLLhhh@)&&&(&('+*H)H(h)H@x )HH30.0\-JM-, J3,e$,d,,  * *l߅߅H ߅ \xi ߅LHHH *ح)0 D) HHHH,, ߩ0  xLߍ󠠩à٠΀ƉŠŠӠҠȠHHH *ح)0 D) HHHH,, ߘ)@ *)X  xI)}h)L, L )ڠ) w߭)Ů􅮈 ߠ'x)) J,QJ,SJ,U,P,W(`)(()  8)j`J j߅`0X ٠͠堘ӠȠŠ=`Insert volume: Τ in device: 蠠ɠ then press the ALPHA LOCK key twicex)_ @,P,R,T,V) )) `)8( ߠ',@ ߠ0  '葺 ݰL`5`i 祻(8`2ޝ51©ޅéąŅƍ >ϩ 1ޠ== f ɰ`ޭ`5=(5= i Х(`=H hDC5 L3ܵ ɐ /ݐ 8`5 ˥JJJJ8 H h ` ܠ825H h5 ɐ /ݐ 8`Hh ܥ5 `ɥܥܥܥܥ5`܅܅܅܅܅5`( ݰ)Ѻ ݰL ݰ泱Ƴ ʰȭۮ ʰͩΪΩۦ eװqȭqLJ  ˰Aۅƭۅ X̰2%&N  ʰƭ X̐`Ӏ堁ӠҠՈ՘̠ƠŠӠ̠ɤӮȪŅ͠Ϊ ܆5 HȰۈ)ۅƭۅ X̰ 3ڰLÍLT̥L㼠  ʰ` İK ХP8` LɐH80)N  հ)@LO ˰)0 ̐` M ­۠泭ۑƳѲƱƳ X̰ RڰäJۑĥ` İo!)N8`WپX0 ĥLä X0 ĥLà !"#$ Đ2@H AڰCŰrP` 3ڰ(` AڰѶ? İG8`Fە1 ռ İ ЩP߭)@N8`1@8` Aڰ񈱴`HJJJJh)y` (2`]PU]]UPPX0 0 PPXPP  į󠠩ҙ̙ɠΠɊՐӠӢ̢ՠҠŠԠҚРĠ鱃ԠȠࠠLQ  * WHHH>%H H @`)h8`  HШБˆeЅА SYSTEM FAILURE = $hh8`hhhxآY_Z@tPRVT,p S JJJJ ) ʍL@ i0i6`îӉ͠堧ǥӥ``HhHy)(h`H` 0L?i `h` `` `x)( 8 `jjJJԥ)եӬɂ )Ӆ҅`  `H0Xh`Π'à̠ȈL` 8`څ  Lk%  Lk8Lu텚8嚅 L L Ld V ``  h` ک V `ۅץ  VLFx) ( :` H ) L  .P'pб0 &L:L5'8+8`0Fܢ` ř,Ř 0 8f)J ӭƅХDžѥL1LUȑ  i ߩLL )  札)  ҩLL` **éL0;` H ) 4 )ߍ) hjjjjۥ0CF = -$(L !LLL&L L-LJ٥eƦ ,L  # ` (L.L…ҥÅγ`%!^0 ^)@`a R =` *^)ـooL]^)?i |TU QTU]qUoqTITsUsprRprqs]ToUXa` RL=Xa` R` *R`abRcdTefVghXijSdfhj RR`^0U ` 0 ʠ0 8 `ůàՠԠàࠝӢӠ ȠDž̖͌͊頀ϐωŠŠӠҠȠ>88  >!SHOLES 1!1!2@23#3#4$4$5%5%6^67&7&8*8*9(9(0)0)-_-=+=+\|QWERTYUI OP[{]}`~`~ASDFGHJ K L ;:;:'"'"ZXCVBNM ,<,<.>.>/?/?d0hp00000>0# #0~$ <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>>>> ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>>xrGA7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CUSTOM.3 )((8*,;((*,((+)((9/(p((>3  =9 :9 .(~|L|LNqooGoDDDcc0ccpc]]c"QM"|@@pAATT**|  )* i LiHh`PQPQ>P Q,PQ"PɀQ@PAQ`8`nɀ<)nopoLpp` 0h8蘠fȊf` ab 1abo)abaݰb L9c`` a N0Ioa0H ha`pLopna n`  3ɠ/8 L %iLɠ8逨J Hh $`b >_-%^%p_^^_ab"08^c_L8^c_L8^c_L8^c_ȑcc\] ab^_ ``aV R0M bba dda `Q8STRQ ST`c\ȱc]a  b 5DU e\^e]_ ^_ ^_LH8\^]_?Je\^e]_,78\^]_ ^ݰ_ ^_LH^_ $bL@A^_aoQ*@A RQL@A `T8`RLSJTKQHIQiHiIKNJ)M8逅OPOPHMIN'a MHNILHOIPaOHPI8JHFKIGFGaHMINNMʆSTL8HSITQQSTde0f`   cCȱcD C Ea  UV 1 ELUFVG FUUCVDեYCWZDXWXCUDV[ v`b0WXYZiUcȥVcWX eeYZ ggE` @SATRDžŠƠŚ̮ÎȠ Ӡ̠Ӡ` LL#L/LL'Lgab `abBcd cdBrcadbho:ab.cݰdDcݰd8abҊ v+abcDL8H\0`(d  $,($  ,BSerial Printer Driver -- Copyright (C) 1983 by Apple Computer Inc..PRINTER A")Copyright (C) 1983 by Apple Computer Inc. HH` (# (KXT .")"#)  #`,.$ ()-'( / .`% (.L,/0x ('( `,.0L& (,.0L7 Đ`ʥ逅8n13}0 x) `(`hh% ( ΍ ύ逅Ñ}`` " ( ĩ~Íĩϭ & &υΠÑΈ~ F ~ҰةeÅÐн},,P,`,g$ ( efh) `xÙ+(`xÙ&(`)4`)5`)6`)7`)8`)9`,i0!M:0p ȱq L `" (~)y ~JJ* I `x|x|,,}P-X~ F }~L } `,,i0L È`,g HH`LL! l      5  Hdcefh&+si  M0   h) `(" (  (È& 8  `)2ȱÍ3`)1`Ɂ" (cefd`Hc <Le Le ,g0L HH`! ( 9EKQWbmz`(" ((è%È`2ȭ3`1`d`c`+È`&È` & IMk`4`5`6`7`8`9`<ȭ=` & @jI`:ȭpȭqéL ==L: ,lCL <=L: <,n)LL8 L8 u:L8 ;)ߍ;j`; ;j`uBL8 uCL8 u)u;) u;L8    x) `(,  LuL-upp<`uqq=L: vuL L L #1:CY` 9C<m><=m@=>@?AL8 >m<>@m=@<=L8 <m>?=m@AL8 C9L8 ; ;k`;);k`,@`<,m p<L<`<p<`,ms<L=q=L: ,lXґȥӑ,10 h0  `,g0L  ҅ӥĥŰ+,0p 4 Ls  Ls i )"|tȌs|st HH` MjH,: <J h̰ <rh,oL`%CYgu9 Ln90$0%,7 ҥ L$0T,8OK50P;ҥ,8 L%\   8҅¥Ӆé҅L,5,6  & @jIH,5 p  He҅Ґhe…å逅h,23Lhʩd8,h)ec efeede`,5 H  h 4  `5!    4(P 4 4  `,g0L,10kH0 ԥ f0)ĭ9)9҅xh(ĥŐL i,1HȊ©L,52,9-P" a{) b) )ab)a a,h0& &+%a0 +hcefd(c,@cfabdf`cnx  (,4h`dd,9P"<:J H) +̰ H) +ʭcP h̰BTVSPLH   5"ʘ HH` (# (=  0`)aI>8?>p<<AAA@@8A@q==C)CB)B Crx 0, )ߍ:) J)*PR,T,V( : `,k<,: JI`I`<,:J̰`=m@>,:J}ʅ̽(I I `<Mj,:0pJՐ̑ʈ`pJհ0`ՑʭrpȐ`=m@< B h A`LL) @L) L8``Lթ`~L8L)  =H 'HH N M))Mhh0 }LO}~~Șݻ~`}}~L< L }ީ~` ɠɀ)ӮԮmwӥmxԐ mi` HHGH`  &xix 0ޤՐڢ,P<0 )ߍL- J,P,QJ,R,SJ,T,U,W`,t0L40 ( dȅɥŐ ĐL `ʝ`))ժuvЭ H ʊJyjhz|ֆ׆ح)JfJf$PIJfש ʈ8 @ש wx LVخ ʊJJJ莟mww HH`! (`ɖ" (èÈ``,t0L4 HH`L  d!  `ɖ" ( dÈ  ``,t0L4 d0Cս30. , V  @„ȄL5/((((PPPP @``` @@@@`xp<@ @ :H9H` (# ( -l..PcJt`,t$ ( t`tL4`,t0L4www """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwwwwww(C) 1980 Apple Computer (+@EIR[ty} NQ9Copyright (C) 1983 Apple Computer, Inc. Graphics Driver..GRAFIX b """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwww     ! ( 0 7 I N S _  . G R Y f {    ! $ 4 9 F I P S V \ a h m p s x |     ' + < ? D G N U f k p x ?BEJMRUX]`h  2;AGMS[fot|              . 3 6 9 < ? B E H N S V \ _ b w  KORY\aelpu !$(+.147<?BFILORUX]`finsw| !%*/369<+;CNU\eh "*-036<BLORX_fj &+38;?DGLTot <?BGLQgjox',/25:BG̑ʈ0 Ցʭr̈A萠L: ֦ڱΑ0Б֤ h L  p,:0 JfiΥiώJe΅Хiю@ B $p̑бʑΈ0 Б̱ΑʈeمΐeمАA萿 :  `ʝ"`t  !#%')L: 8p,:Jf׮@$PA B $P@/A'ʤ˅΄ϥ̤ͅЄ B $̑бʑΈ0Ƞ h L: $)טɀIim>ٮ@8pذ `$0"8,:Jک@ׅפ؈۩MjL,:08*Ȅ B ,:J}΅н(I I $0;P̑бʑΈ,:JՐϭPh0 йPL)`)L` L``  `L` H , 8 V ТΕLϦI ] +)J* g I V 8fxL@ ] I)!) g 80 J8}L y L 0yʽz0 y L7  Lh `*f*&*)` H 8fqhq:,V0-,X0x R) X)(LW h,TULarȥȑ`,S0LoEąĩEŅ o`n L# 8fqn,S0L lHkH`! (rs`^    ) . 6 = J P S X [    $ 3 : = F d  > B H M s `e|&+.QVYcjuy~':{%(-47=FMUX\_jmz  .169DWfy   % * > A H K Z v z }      % , 1 5 : = B K R Z _ b g n s x ~ /47=G\x{~'+.149?CGIKMOQSUWY[]_acegikmoqsuwy{}J) ܭL FܪJJJJ)`'+9;=?ACEGINR\aejns~  #&).369<ADGJMP^g $*-06=HLORWcfloruzp Q%Q̑`pPIE1pΦ#$01ʐ1`JJJJ)`%υߥ`1(ȦJJJ`&&*`JJ` **&*&ߥ`J` ***`` ` Jjjߊ` ߊ`JfJfFߪ߆` `JfJfJfF`ߩ`$011̰JJJ LP \LD$7߭$PH8 nߩ nh ߍϭ - k, ϥ- kϱϮEϑʩ`P z  HH` k(h`$0#$E$0p Q%Qʑ`pPIE1p$E$0(L%τ`ϩE҅0Ȅ(fL% ('Άѽн`8Hٰ hIiHمh8Iif٤Φݰ>Jj8ۅe݅eޅ $  m`!J8݅ eۅ$  m` , V $צ!ϤҐ мφi`Jf`<,&ʰ,i8i#Hiihifʦʆi) v`i,ʐi,iPIIʥ)ifʦʆ̐pLj/Fϐ&Ȅ`'@τ`Fϐ@ E҅F8ئȢΆѽϽ`/epɀjff&ݥeepɀjffݠ %)  %)`%  0.)      0  ` ` @ ``8٨JJJ ) u˘ vͽʅ̆`8Hi #i,$0F y բӅLx  mӥmԐL] h `  )`%)8`)    H   ʥ)Ģ    H Ģ L E% %) L 8`ۅ&ۥe륅eٍeڍ808٥8٥ 8مڅ H , V Εm٭mڭ))njnjnjfjfjfj+mӥmԐ8L( Ӣ й` m j`Hآ Hӭԭ h h`8٭028ٍڍ0Z$eٍeڍm٥m8٥08ٍڍ`8٥058ٍڍ0ԭ" (x^ÈȌm(`TȭU` n  q `ȩ`,S0L HH`Lfh,V W ,W0x_)_ qnZ[oprsXY\]mRl`)  __ ` ) (`^" ( Ù^ `ÍTȱÍU`n064e0[x R X([ `R )l) )g mmL)` mmL ),d-eYLfYuqgQ,V0L@VEPf>i\]M,j,qg$[He Computer Inc. 1983M\^`belv{!$'*-049?BIUcfkw &+8;@CJMPSV]bej!Apple // Super Serial Card Drivert.SSCARD A "߄P(C) ApplI82-A/0M)-/M#-" &0x,) ++`x,`,'0LM ! (```*M#ȩ ȭ-ȩ`,'0LM @>L,, 3,,0-./(,$)x*%)/+(```04@DRTVXZ01 % (, :'`'LM :01 `,'0LM& (,'0LMIĥIC ,$P( n(.0- .-L 3L 3`,,P*M#-"x Z)(,,p` *+)+X,,PM#-" 2Z SHRH` (# ($GGjc`,'$ ( 2 *)6Ucfkw &+8;@CJMPSV]bejApple Dot Matrix Printer Driverv7.DMP A Copyright (C) 1983 by Apple Computer Inc.,`,'0LM ! (```*M#ȩ ȭ-ȩ`,'0LM @>L,, 3,,0-./(,$)x*%)/+(```04@DRTVXZ\^`belv{!$'*-049?BIIC ,$P( n(.0- .-L 3L 3`,,P*M#-"x Z)(,,p` *+)+X,,PM#-" I82-A/0M)-/M#-" &0x,) ++`x2Z SHRH` (# ($GGjc`,'$ ( 2 *)601 % (, :'`'LM :01 `,'0LM& (,'0LMI (C) 1983 by Apple Computer Inc.v7 .PARALLEL A`@dCopyright (C) 1983 by Apple Computer Inc.!$'*-036<?FKUn|  $)036=BEJQX]`ejorw "'.147:=@CWZadknDParallel Printer Driver -- Copyright ` ) `x,X0R p)(`KO} #9<CHKjoz $*-DINS^bkmoqyX ))hq mm0 stqs[L,j,XLl)`Z5L,lLp,VP VeLE,WWVfLEZZLpnl,Y0g,dP\,]0X]eLE\pqnp aLm bLm cZ ) HH` (# (ALS`,S$ ( M iR)QKL % "_TUkVW S`% (SLn Zx R)(KL `,S0LrEąĩEŅq,k0stH 8fqhq:,V0-,X0x R) X)(LW h,TULarȥȑ`,S0LoEąĩEŅ o`n L#` L``  `L` H , 8 V ТΕLϦI ] +)J* g I V 8fxLL) L8``Lթ`~L8L)  =H 'HH N M))Mhh0 ϭPh0 йPL)`)LL }ީ~` ɠɀ)ӮԮmwӥmxԐ mi` HHGH`  &`LL) @ 0ޤՐڢ,P<0 )ߍL- J,P,QJ,R,SJ,T,U,W`,t0L40 ( dȅɥŐ ĐL  }LO}~~Șݻ~`}}~L< vЭ H ʊJyjhz|ֆ׆ح)JfJf$PIJfש ʈ8 @ש wx LVخ ʊJJJ莟mwwxixÈ``,t0L4 HH`L  d!  `ɖ" ( dÈ  ``,t0L4 d0Cս30. , V  @„ȄL5`ʝ`))ժu/((((PPPP @``` @@@@`xp<@ @ :H9H` (# ( -l..PcJt`,t$ ( t`tL4`,t0L4 HH`! (`ɖ" ( """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwwwwww(C) 1980 Apple Computer147:=@CWZadkn9Copyright (C) 1983 Apple Computer, Inc. Graphics Driver..GRAFIX b """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwwwwwwDINS^bkmoqy!$'*-036<?FKUn|  $)036=BEJQX]`ejorw "'.\pqnp aLm bLm cZ ) ` ) `x,X0R p)(`KO} #9<CHKjoz $*-fYuqgQ,V0L@VEPf>i\]M,j,qg$[HX ))hq mm0 stqs[L,j,XLl)`Z5L,lLp,VP VeLE,WWVfLEZZLpnl,Y0g,dP\,]0X]eLERl`)  __ ` ) (`^" ( Ù^ `ÍTȱÍU`n064e0[x R X([ `R )l) )g mmL)` mmL ),d-eYL 8fqn,S0L lHkH`! (rs`^" (x^ÈȌm(`TȭU` n  q `ȩ`,S0L HH`Lfh,V W ,W0x_)_ qnZ[oprsXY\]m@ ] I)!) g 80 J8}L y L 0yʽz0 y L7  Lh `*f*&*)` ` m j`Hآ Hӭԭ h h`8٭028ٍڍ0Z$eٍeڍm٥m8٥08ٍڍ`8٥058ٍڍ0ԭeٍeڍ808$(/4:?IXad#ˆ̭U)? VW @ ?ddxtB˩Eʍ@Xx ,P Eʍ(itiBX`,A0Lp HH`! (```,A0Lp HH`L%&S```lBcguwy{} vHuH` (# (jjA`,A$ (BC x) @( A`% (ALpx)`(BC `,A0Lp& (,A0Lp9 æĬSɀ֙TȌS 9S`YX`X-,    $ 3 : = F d  > B H M s `e|&+.QVYcjuy~':{(Z.AUDIO C(C) 1980 by Apple Computer Inc.D  .169DWfy   % * > A H K Z v z }      % , 1 5 : = B K R Z _ b g n s x ~    ) . 6 = J P S X [ \x{~'+.149?CGIKMOQSUWY[]_acegikmoqsuwy{}%(-47=FMUX\_jmz'+9;=?ACEGINR\aejns~  #&).369<ADGJMP^g $*-06=HLORWcfloruz/47=G`JJJJ)`%υߥ`1(ȦJJJ`&&*`JJ` **&*&ߥ`J` ***`` ` Jjjߊ` ߊ`JfJfFߪ߆` `JfJfJfF`ߩ`$011̰JJJJ) ܭL FܪJJJJ)`$PH8 nߩ nh ߍϭ - k, ϥ- kϱϮEϑʩ`P z  HH` k(h`$0#$E$0p Q%Qʑ`pPIE1p$E$0p Q%Q̑`pPIE1pΦ#$01ʐ1 ('Άѽн`8Hٰ hIiHمh8Iif٤Φݰ>Jj8ۅe݅eޅ $  m`!J8݅ eۅ$  m` , V $צ! LP \LD$7߭&ʰ,i8i#Hiihifʦʆi) v`i,ʐi,iPIIʥ)ifʦʆ̐pLj/Fϐ&Ȅ`'@τ`Fϐ@ E҅F8ئȢΆѽϽ`/(L%τ`ϩE҅0Ȅ(fL%)  %)`%  0.)      0  ` ` @ ``8٨JJJ ) u˘ vͽʅ̆`8Hi #iϤҐ мφi`Jf`<,ӅLx  mӥmԐL] h `  )`%)8`)    H   ʥ)Ģ    H Ģ L E% %) L 8`ۅ&ۥeepɀjff&ݥeepɀjffݠ %٥8٥ 8مڅ H , V Εm٭mڭ))njnjnjfjfjfj+mӥmԐ8L( Ӣ ,$0F y 0 WAP /// SIG MENU.MAKER PROGRAM (v. 6.2) =".D1"210: Coldstart (320: Warmstart &*X=11000: TEXT SLOW-DOWN LOOP ,X.1 CHANGE DISK SUBROUTINE23œ202:2200<RFa$=" YOU MAY SELECT YOUR DISK BY M$="NOVEMBER":1750M$="DECEMBER":1750826);"-";M$;" ";Ѡ,2));", ";"19";Р,2);" ";/П,2))=>13П,2))-12;џ,6);:1780$П,2))=0"12";џ,6);:ٟ;$П,2))=>12" PM-":" AM-" 1830WW=1530 =26:=211660,1670,1680,1690,1700,1710,1720,1730,1740^M$="JANUARY":1750hM$="FEBRUARY":1750rM$="MARCH":1750|M$="APRIL":1750M$="MAY":1750M$="JUNE":1750M$="JULY":1750M$="AUGUST":1750M$="SEPTEMBER":1750M$="OCTOBER":1750T 0")2070H540R\A$="RUNNING "+B$(I),16,B)f"79C";A$;:=0pB$(I),16,B) z::SEG=1".D1/SEG.T"t=+B$(I),16,B) yCT=CT+1~240:=24:=0:"@ ..... "DATE.TIME.LINE" ....JM=Ҡ,4,2))BTM1630,1640,1650,0=+IBOTM/2-.5):I=IBOTM:I/2=I/2)I=I-1 œ2120B=B$(I),16)," ")-1 B$(I),"BASIC 0")850B$(I),"TEXT 0")890 B$(I),"CAT 0")1140*B$(I),"FONT 0")18504B$(I),"FOTO 0")1930>B$(I),"PASTXB$(I);v:520: 500THPOS=4:I/2=I/2)I=I-1I=IBOTM THPOS=44:I/2<>I/2)I=I+1I2=-1:I=I-2:IBOTM<30THPOS=44I=IBOTM/2)*2:=+IBOTM/2)-1:CA)"PRINT.ALL": OA+P 3HA=(81+UCA)A=(81+LCA):::: OA+Q Quits 3IA=(83+LCA)A=(83+UCA)"PRINT.SHOW": OA+S 2JA=(68+LCA)A=(68+UCA)/Screen.Savers/HELLON=THPOS:B$(I);XA<8A>11540bA-7640,660,690,720l:=THPOS:ٺ1600 =Q:WW=0A=:A=21A=9&oldprefix$=40A=31410: Control C "aborts" program to Basic(:A=13770: Return Selects a file *DA=27:50: Escape to change disks/FA=324000: back out one directory level 3GA=(80+UCA)A=(80+L"BASIC 0":150A$="TEXT 0":150A$="CAT 0":150A$="FONT 0":150A$="FOTO 0":150A$(L),"BLOCKS")510*=27:=19:"FREE MEMORY AVAILABLE: ";=7:=20:"80C";A$(L);$:=5:THPOS=4:I=1:IBOTM=J-1:620Q=:=26:=21:sic; +Q Quits."r12);::"80C";a$;:+w#9,"DISKNAME.DAT":#9;DISKNAME$:#9|d$=DISKNAME$$=23:=0::"80C";d$;::12)201M=3:=14:"This /// SIG Disk is \^ 19";Р,2)", Washington Apple `, Ltd."=4:B$(1)="":B$(2)=""A$=16,B) THEN 240 #1, d$="":=10:"80C";d$ ž#1300I=0"I=I+1:#1;A$(I):290,#1 6L=I-1@j=1:same=0 J:SEG=0 Tœ2030^CT<1CT=1cCT>13000Zha$="{,|,~,}; selects; to new disk; J/2)=4:=+1:ۙ=44B$(J);:J=J+1I:1,180,22:2,280,21:2,2380,23:8A$(1000),B$(1000),C%(511),C$(20),name$(20):=10:=0UCA=128:LCA=UCA+32CT=15 IF PREFIX$= PREFIX$+MID$(B$(I),VOLUME NAME (/DISKNAME) OR DEVICE NAME (.Dx)"P12);::"80C";a$;:Zb$="CHANGING DISKS"$d=23:=0::"80C";b$;::12).n=12:=20:"MAKE A NEW MENU FOR DISK: ";N$xN$)<2110=N$ :210 I=1L(A$(I),A$))200B$ 1600 &:WW=1:0 :SEG=1;".D1/S EG.F" SEG=1".D1/SEG.G"diskname$=3802  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T READ PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU.">G$:::320H: Error Routine 202:U=11:"79C";"BAD PATH ERROR (NO DISK IN DISK DRIVE OR DESIRED FILE NOT FOUND.)"X=11000:X:::210Z a$="{,|,~,}; selects; back 1 lev79C";"PRESS ANY KEY TO HALT LISTING"::202 1020#2,B$(I),16,B)ž#242:::1160Z=1#2;A$:"78A";A$Z=Z+1:Z>1842:::Z=1980*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"10 MENU.MAKER TEXT MODULESEG=0"MENU.MAKER"890&*X=11000: TEXT SLOW-DOWN LOOP ,X.1,180,22:2,280,21:2,2380,23:z:A$="LISTING "+B$(I),16,B)$=01:=0::"80C";A$;::12)>=23:=0::"a$,1)="/"5060:s=s-1 5030=a$240 MENU.MAKER 6.2 * Thanks to C.M.Davidson for his help!and FORTRAN. It takes the form of an application note; source listings, informal documentation (no manual) and a diskette. The software consists of two separate parts. One part is written in Pascal as a Pascal unit. This unit (GPIB.CODE) contains highe WAP /// SIG PD LIBRARY PDS NAME: IEEE-488 FILES FOR THE APPLE // AND /// DISK ID : 3PCL-16 BOOTABLE? Bootable By Jim Trezzo Compiled and edited by Dave Ottalini - WAP /// SIG This disk contains the software to support the IEEE-488 card from Pascal al and/or Fortran required. THE WAP OFFICE LIBRARY HAS A NUMBER OF APPLE /// BOOKS AND MAGAZINES. APPLE // AND APPLE /// IEEE DRIVER FILES el; "Y"C$<>"y"C$<>"N"C$<>"n"1170*C$="N"C$="n"2010C$="N"C$="n"200;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": 20002,280,21 DF$(I)=D$+"/DISKNAME.DAT"F$(I)=D$+"/FLASHNAME.DAT"410:ۺ310 PRINTER v 1.0 p$ 900A$="PRINTING"+F$(I):$=01:=0::"80C";A$;::12)F=23:=0::"79C";"PRESS ANY KEY TO HALT PRINTING"::2,280,21 2000*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"#1,D$::"Processing directory ";34);D$;34);", please wait."; ž#1880*#1;A$:A$)<48104A$,3,4)<>"TEXT"810>X=X+1:".";HE=15:F$=A$,16,15)RF$,E,1)=" "E=E-1:850\F$(X)=D$+"/"+F$,E)f810p:  Pausež#1740#1;A$:A$)<4710A$,3,4)="TEXT"X=X+1710 :X>YN=P::7);"There are no text files in the ";34);D$;34);" directory." ::I=P::7);"Unable to locate and open ";34);D$;34);" directory." ::IT$=N$,E,1):T$=" "T$=","610XE=E+1:E>N$)610:590bD$=N$,S,E-S)l:v:E>S+1600:D$="": œ770P=3:"Looking for ";34);D$;34);" directory." #1,D$=P3:"Reading from ";34);D$;34);" directory." I>X200300S=1:D=1:B=1570D$=""500 Y=X:S=ED$(D)=D$:640 X=Y440D=D+1:S=E:440D=D-1:X=0F$(X):X=0 J=1D D$=D$(J)790&J0 :œ6303DE=S+1:N$,S,1)=" "N$,S,1)=","S=S+1:580%Nž#2390 ^1000c: h#2;a$ma$rY=1150:Y0wB=B+1: Count the number of lines printed xB=15B=30355yB=60#3;12)zB=60B=1 {#3;a$|360B<=20#3;13)::410#3;12):Z=11000:ZI I=3d: PRINTER V. 1.0 ::=2::"PRINT.ALL v. 1.0":3=4:"Directory Name(s) or return to quit: ";n$N$)=0::"MENU.MAKER"430 X>0260I=11000:I:200: ,I=1X 14000 6#2,F$(I)@#3,".PRINTER" JEAD PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU."!>G$:::".D1/MENU.MAKER",320R",220(204::"79A";""; 2D=1:F=1 <#4;a$ FD=D+1 P#5;a$ZD=60#5;12)dD=60D=1nF=F+1::d$;::Y=1100:Y x13402  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T R".D1/MENU.MAKER",220 d$="" A$="PRINTING "+B$(I),16,B)=01:=0::"80C";A$;:#3,B$(I),16,B)Z=1#3;b$:"78A";b$Z=Z+1:Z=18:1290 1260 #4,B$(I),16,B)#5,".PRINTER"+ž#4#5;12):::".D1/MENU.MAKEr level functions available to the Pascal or FORTRAN application program. The second part of the software takes the form of an attached driver to the Pascal BIOS. This driver (I488) is written in TLA assembler code. The Pascal unit GPIB, which supports efore a read or write will be determined by the device and the mode of operation (e.g. EOS or non EOS mode, parallel poll enabled or not, etc.). On Side One: Read.Me : Information about the Apple // IEEE-488 software. Read.Me.A3 : Information about the Controller Device Number Byte 1: valid device address 19-Set EOS character(s) Byte 1: flag ($80 for 1 EOS character, $C0 for 2, 0 for non-EOS mode.) (SOS read and write functions are also implemented. Status or control calls needed b None 15-Abort/Interface Clear None 16-Send Data Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 17-Receive Data Byte 1: address list length of 1 Byte 2: Talker address 18-Set e Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 13-Go to Local Byte 1: length of address list (n) (for Clear Remote Enable, send length H byte of 0.) Bytes 2 to n+1: Listen addresses 14-Local Lockout t length of 1 Byte 3: Listen address 8-Parallel Poll Disable Byte 1: address list length of 1 Byte 2: Listen address 9-Parallel Poll Unconfigure None 10-Untalk None 11-Unlisten None 12-Remote Enabless list (n) Bytes 2 to n+1: Listen addresses 5-Device Clear None 6-Selected Device Clear Byte 1: length of address list (n) Bytes 2 to n+1: Listen addresses 7-Parallel Poll Enable Byte 1: SPPP byte Byte 2: address lis PARAMETERS NEEDED 0,1,2-Standard SOS driver control calls 3-Transfer Data Byte 1: length of address list Bytes 2 to n+1: n-1 listen addresses, A1 talker address (any order) 4-Group Execute Trigger Byte 1: length of addrte 4-Service Request First byte: 0 Second byte:0 if SRQ false, 1 if SRQ true. 5-Parallel Poll One byte: PPL byte 6-Bytes Received In Read First byte: low byte Second byte: high byte CONTROL CALLS h the driver. IEEE488 Card Driver for Apple /// STATUS CALLS PARAMETERS RETURNED 0,1,2-The standard SOS driver status calls 3-Serial Poll First byte: 0 (requires address list sent) Second byte: data by higher level functions, relies on low level functions provided by the attached device driver. Low level functions such as UNITCLEAR, UNITREAD, UNITWRITE and UNITSTATUS are provided by the driver. All communication with the IEEE-488 card will be througST:STRING): INTEGER; FUNCTION LLO: INTEGER; FUNCTION IFC: INTEGER; The second part of the software takes the form of an attached driver to the Pascal BIOS. This driver (I488) is written in TLA assembler code. The Pascal unit GPIB, which supports theVERS ATTACHUD.CODE DOC.TEXT GPIB.CODE GPIB.TEXT I488.TEXT I488A.TEXT I488B.TEXT IGPIB.CODE IGPIB.TEXT SYSTEM.ATTACH APPLE3 (Subdirectory) - IEDOC.TEXT - GPIB.CODE - INFO UNL: INTEGER; FUNCTION REN(VAR ADDRLST:STRING): INTEGER; FUNCTION LCL(VAR ADDRLough the driver. On Side One: Read.Me.A2 : Information about the Apple // IEEE-488 software. Read.Me.A3 : Information about the Apple /// IEEE-488 software. Read.Me.First: This File On Side Two: You'll find the following Pascal Files: ATTACH.DRIthe higher level functions, relies on low level functions provided by the attached device driver. Low level functions such as UNITCLEAR, UNITREAD, UNITWRITE and UNITSTATUS are provided by the driver. All communication with the IEEE-488 card will be thrApple /// IEEE-488 software. On Side Two: You'll find the following Pascal Files: ATTACH.DRIVERS ATTACHUD.CODE DOC.TEXT GPIB.CODE GPIB.TEXT I488.TEXT I488A.TEXT I488B.TEXT IGPIB.CODE IGPIB.TEXT SYSTEM.ATTACH APPLE3 (Subdirectory) - IEDOC.TEXT - GPIB.CODE - INFO .CODE - INFO