Intel 9800758-02 manual Adding User-Written I/O Drivers to RMX/SO BASIC-SO, Open 0,#1, L1LlST

Page 106

RMX/80 BASIC-80

BASIC-80

Adding User-Written I/O Drivers to RMX/SO BASIC-SO

You can add your own 1/0 drivers to any configuration of RMX/80 BASIC-80, so that BASIC-80 input and output statements employ user-defined 110 drivers. BASIC-80 treats these drivers as files with the device label :Ll:. This is the proper syntax, as shown in opening a sequential disk file for output to the 110 driver file :Ll:List:

10 OPEN "0",#1, ":L1:LlST"

The remainder of the file name may be anything conforming to the ISIS-II filename conventions. BASIC-80 will use the user I/O drjver whenever an OPEN command is issued for a filename with a device type of :Ll:. The open request message is sent to the BQOPNX exchange instead of to the DFS RQOPNX exchange. The messages sent to BQOPNX are exactly the same as messages sent to the DFS exchange RQOPNX. Consult the RMX/SO User's Guide for details. Therefore, a user- supplied task called BQUSER must wait at the BQOPNX exchange and must supply an exchange address when OPEN messages are received. This task or another task waits at this exchange and handles READ (for input files) or WRITE (for output files) and CLOSE requests. Figure F-8 is an example of a user-written liD driver.

Adding BASIC-SO USR Routines to a Configuration

You can call 8080/8085 assembly language, FORTRAN-80, or PL/M-SO routines from BASIC-SO with the USR function (see Appendix E).

These routines can also reside in PROM. For ease of use, dedicate one or more PROMs and their sockets to this purpose. In this way, you can burn different subroutines as different needs arise without altering the addresses of the routines. Changing routines becomes as simple as changing PROMs.

Adding PROM-Based BASIC-SO Programs to a Configuration

You can also burn BASIC-SO programs into PROM with the ISIS-II BAPROM util- ity program. BAPROM converts BASIC-SO programs saved in ASCII format (with the SAVE "filename", A option) into relocatable object module format. You can save these modules from either ISIS-II or RMX/80 BASIC-80. They can then be linked, if needed, located, burned into PROM, and then run with the PRUN command.

If you wish to add USR routines or source files created by BAPROM to a given con- figuration, you can add the object modules to the LINK command; there is no automatic way, however, to communicate the starting addresses to BASIC-SO. You must use the PUBLICS option of LOCATE and check the LOCATE PRINT file to find starting addresses.

You can also execute a BASIC-80 program immediately upon restart. To do this, you must change the constant BQPRUN in BASCM.ASM to the address of the BASIC-80 program stored in PROM. Here's an example:

1.Convert START.BAS into START.OBJ with the BAPROM program.

2.Add START.OBJ to the LINK command in the GBASIC.CSD module.

3.Change: BQPRUN: DW 0

to

EXTRN

START

 

BQPRUN: DW

START

in

BASCM.ASM

 

F-14

Image 106
Contents BASIC-SO Reference Manual A108/0979/7500 FL Preface Page Contents Illustrations Chapter Introduction to BASIC-80 Invoking BASIC-80Basic filename MEMTOPaddress ExamplesIntroduction to BASIC-80 FilenameChanging File Attributes Listing the Directory of a DiskRenaming a File Deleting a FileYou can now run, list, or edit the program Save LP ,ACommands StatementsBASIC-80 Commands Contd BASIC-80 StatementsBASIC-80 Statements Contd BASIC-80 FunctionsBASIC-80 Functions Contd Representing Data FunctionsDecimal Integer Constants ConstantsInteger Constants Hexadecimal Integer ConstantsSingle-Precision Floating-Point Constants Octal Integer ConstantsDouble-Precision Floating-Point Constants This is a string constant String ConstantsString Variables $ = Enter next data stringL4! = Csng l4 YI,1String Arrays Arithmetic Operators BASIC-SO Operators in Order of Precedence ContdNumeric Expressions Logical OperatorsString Operator String ExpressionsEntering and Editing Programs 30 A=8*52 30 A=8*37 30 A=8*5230 A=8 30 A--=8xx*522537 Control-R a = 8*37Integer D SubcommandCommand 3D press 3, then D results If AB thenIf AB then 120 Else Null SET Syntax of the X subcommand is At this point, the other editing subcommands may be usedMove the cursor to PRINT. Enter 2C RE L Print Undefined SET The E subcommand is enteredInteger C character character Print Undefined SET. Enter a LSyntax Error Messages BASIC-80 Error MessagesOverflow, Underflow, and Divide-by-Zero Error Trapping Trace Facility Restarting Program Execution Error SimulationError Handling If line 40 is replaced withOpening a Sequential File Open 1,#1,F1DATESReading from a Sequential File Refer to for further details of Print UsingWriting to a Sequential File If executed four times, it would read all eight valuesClosing a Sequential File Value of R$ would beDefining a Random 1/0 Field-FIELD BuffersField #3, 20 AS N$ Disk File Input/Output Field #3, 20 AS N$, 9 AS SS$Any of the parameters can be variables Opening and Closing a Random Disk FileReading from a Random 1/0 File To read the next recordSingle-precision value Writing to a Random 1/0 FileInteger Double-precision valueMKI$ Auto first lineJ, increment Attrib Fdrive numberfilename, W1Attrib Fdrive numberfilename, WO Clear expression,addressCommands and Statements CloseDEF FNX Rules for function name are the same as for variable nameDefsng Defdbl Defstr Defint DIM DeleteEdit ErrorDIR ENDField Error expressionExit FOR-NEXT-STEPFor variable=expression to expression Step expression GETGosub GET I file number ,record numberInput IF-THEN-ELSEGoto Line Input KillLET ListLSET, Rset LoadMerge NEWNext 9 16On ... Goto On ... GosubOpen OUT Option BasePoke Print Print UsingString Fields Numeric fields If X$=SEVEN and Y$=EIGHT, the results of line 40 would bePrun PUTRandomize ReadREM Resume ReturnLine number RUN filename SaveRUN line numberlstring expression ,F 60 ENDTRON, Troff ? 5,8,2Wait WidthABS ATNCint CHR$Functions 10 A# = 1.00/3.00 CsngCVI CVS AO/o =Dskf EOFFIX Ok·INP HexsInputs Instr INTLEFT$ LOF LENLOC LOGMKI$ MKS$ MKD$ MID$OCT$ POS integer RightsPeek expression RIGHT$ string,integerSpaces SGNSIN 10 a =1If A$ = 2 then Print Correct Else Goto SPCSPC integer SQRexpressionTAB expression STR$ expressionTAN expression Here is an example of how the USRn statement is used 60 AO/o =Appendix a BASIC-SO Error Codes Table A-I. BASIC-80 Error CodesTable A-I. BASIC-SO Error Codes Contd Appendix B BASIC-SO Reserved Words Page To tab across the line To halt program execution and return to commandLevel To resume program execution after it is stopped byPage Table D-l. Ascii Code List Appendix D Ascii CodesTable D-2. Ascii Code Definition BELAppendixe Calling Subroutines Figure B-1. Internal Representation of Numbers and Strings Some Real Examples RESULT=USR%1VARPTRA, VARPTRB, VARPTRC» PRINTA+B+C= ResultFigure E-2 /8085 Assembly Language Program Figure E-3. PL/M-80 Program Appendix F RMX/SO BASIC-SO Initializing the Predefined RMX/SO BASIC-SO Configuration ISIS-II BASIC-SOTable F-l. Sample Configuration Jumper Wiring OOOOH-OFFFHBASIC-80 Object Files Generating Boot-Loaded and PROM-Based VersionsBASIC-80 Source Files BASIC-80 Executable FilesGenerating a Boot-Loaded RMX/80 BASIC-80 Setting baud rates, refer to the RMX/SO Users Guide That are not boot loadedThis option is used to allocate memory. It is 1 if the boot This option enables your user-written I/O drivers if youISBC 80/20-4 Generating a PROM-Based RMX/80 BASIC-80 Prom F1 RMX820.L1BSTART, & FOBASCM.OBJ,& FORMXBAS.LlB F1 DFSDIR. L1BDIRECTORY ,RENAM E,& F1 MTI810.L1B Configuration Requirements Configuring DFS on an iSBC 80/10Adding BASIC-SO to an Existing RMX/SO Configuration ISBC SO/10 System ClockPublic Variables Adding User-Written I/O Drivers to RMX/SO BASIC-SO Open 0,#1, L1LlSTFigure F-S. Sample User-Written 1/0 Driver Routine Altering BASIC-80 Workspace Burning a BASIC-80 Program Into PromBaprom F1HEATER.BAS Page Index Ase BASIC-80 RIGHT$,7-1O Request for Readerscomments 111111