Intel 9800758-02 manual Figure B-1. Internal Representation of Numbers and Strings

Page 89

BASIC-80

Calling Non-BASIC-80 Subroutines

To return a single-precision floating-point, double-precision floating-point, or string result, you must use the appropriate data type character (see table 2-5 for a list of these characters) before the subroutine number in the USR function. For example, to tell BASIC-SO that a user-written subroutine returns a double-precision floating- point value:

240 A# = USR #15 (VARPTR(L#), A1)

In this example, the sharp sign (#) following USR tells BASIC-SO to reserve an S- byte space for the double-precision result of USR #15. A# is also defined as double- precision, but the parameters passed may be of any numeric type.

Your subroutine must interpret the first parameter passed to it as the storage address of A#, and it must also place the result of USR #15 there.

References to string parameters are handled in a similar manner. VARPTR of a string is the address of the string descriptor, not the string data. Thus if a user subroutine returns a string then the user should code USR$[n]. BASIC allocates a 255-character string and pass the address of the string descriptor to the subroutine. Your routine may change the string length in the string descriptor to return a shorter string, but may not change the string's address. Neither parameter strings nor parameter string descriptors should be changed.

Array variables are passed as parameters by referencing the first element of the array. BASIC-SO follows row-major order.

To code in 8080/S0S5 assembly language, you must know the Intel format for representing integer, single-precision floating-point, and double-precision floating point numbers. Figure E-l shows these representations.

~~D~ESS

ILS_f_I~~I________________1_5_B_IT_S_O_F_DA_T_A________________~

ADDRESS

 

 

 

 

 

 

LOW

 

 

 

INTEGER REPRESENTATION: 2 BYTES, 16 BITS, LOW ORDER BYTE FIRST

 

 

 

 

 

 

 

 

 

 

 

8 EXPONENT BITS

23 MANTISSA BITS

 

 

 

 

 

 

 

 

 

 

SINGLE-PRECISION FLOATING·POINTREPRESENTATION:

 

 

 

 

4 BYTES, 32 BITS, LOW ORDER BYTE FIRST

 

 

 

 

 

 

 

 

 

 

 

11 EXPONENT BITS

52 MANTISSA BITS

 

 

 

 

 

 

 

 

 

 

DOUBLE-PRECISION FLOATING-POINT REPRESENTATION:

 

 

 

 

8 BYTES, 84 BITS, LOW ORDER BYTE FIRST

 

 

 

 

 

 

 

 

 

 

 

LENGTH

ADDRESS

 

STRING DESCRIPTOR REPRESENTATION: 8 BITS, STRING LENGTH: 16 BITS, STRING ADDRESS.

DATADATADATADATA

STRING DATA REPRESENTATION: 8 BIT BYTES.

Figure B-1. Internal Representation of Numbers and Strings

E-3

Image 89
Contents BASIC-SO Reference Manual A108/0979/7500 FL Preface Page Contents Illustrations Invoking BASIC-80 Chapter Introduction to BASIC-80Introduction to BASIC-80 ExamplesBasic filename MEMTOPaddress FilenameRenaming a File Listing the Directory of a DiskChanging File Attributes Deleting a FileSave LP ,A You can now run, list, or edit the programStatements CommandsBASIC-80 Statements BASIC-80 Commands ContdBASIC-80 Functions BASIC-80 Statements ContdBASIC-80 Functions Contd Functions Representing DataInteger Constants ConstantsDecimal Integer Constants Hexadecimal Integer ConstantsDouble-Precision Floating-Point Constants Octal Integer ConstantsSingle-Precision Floating-Point Constants String Variables String ConstantsThis is a string constant $ = Enter next data stringYI,1 L4! = Csng l4String Arrays BASIC-SO Operators in Order of Precedence Contd Arithmetic OperatorsString Operator Logical OperatorsNumeric Expressions String ExpressionsEntering and Editing Programs 30 A=8 30 A=8*5230 A=8*52 30 A=8*37 30 A--=8xx*522537 Control-R a = 8*37Command 3D press 3, then D results SubcommandInteger D If AB thenIf AB then 120 Else Null SET At this point, the other editing subcommands may be used Syntax of the X subcommand isInteger C character character Print Undefined SET The E subcommand is enteredMove the cursor to PRINT. Enter 2C RE L Print Undefined SET. Enter a LOverflow, Underflow, and Divide-by-Zero BASIC-80 Error MessagesSyntax Error Messages Error Trapping Trace Facility Error Handling Error SimulationRestarting Program Execution If line 40 is replaced withOpen 1,#1,F1DATES Opening a Sequential FileWriting to a Sequential File Refer to for further details of Print UsingReading from a Sequential File If executed four times, it would read all eight valuesValue of R$ would be Closing a Sequential FileField #3, 20 AS N$ BuffersDefining a Random 1/0 Field-FIELD Field #3, 20 AS N$, 9 AS SS$ Disk File Input/OutputReading from a Random 1/0 File Opening and Closing a Random Disk FileAny of the parameters can be variables To read the next recordInteger Writing to a Random 1/0 FileSingle-precision value Double-precision valueMKI$ Attrib Fdrive numberfilename, WO Attrib Fdrive numberfilename, W1Auto first lineJ, increment Clear expression,addressClose Commands and StatementsRules for function name are the same as for variable name DEF FNXDefsng Defdbl Defstr Defint Delete DIMDIR ErrorEdit ENDExit Error expressionField FOR-NEXT-STEPGosub GETFor variable=expression to expression Step expression GET I file number ,record numberGoto IF-THEN-ELSEInput LET KillLine Input ListLoad LSET, RsetNEW Merge9 16 NextOpen On ... GosubOn ... Goto Poke Option BaseOUT String Fields Print UsingPrint If X$=SEVEN and Y$=EIGHT, the results of line 40 would be Numeric fieldsPUT PrunRead RandomizeREM Return ResumeRUN line numberlstring expression ,F SaveLine number RUN filename 60 END? 5,8,2 TRON, TroffWidth WaitATN ABSFunctions CHR$Cint CVI CVS Csng10 A# = 1.00/3.00 AO/o =EOF DskfOk· FIXInputs HexsINP LEFT$ INTInstr LOC LENLOF LOGOCT$ MID$MKI$ MKS$ MKD$ Peek expression RightsPOS integer RIGHT$ string,integerSIN SGNSpaces 10 a =1SPC integer SPCIf A$ = 2 then Print Correct Else Goto SQRexpressionTAN expression STR$ expressionTAB expression 60 AO/o = Here is an example of how the USRn statement is usedTable A-I. BASIC-80 Error Codes Appendix a BASIC-SO Error CodesTable A-I. BASIC-SO Error Codes Contd Appendix B BASIC-SO Reserved Words Page Level To halt program execution and return to commandTo tab across the line To resume program execution after it is stopped byPage Appendix D Ascii Codes Table D-l. Ascii Code ListBEL Table D-2. Ascii Code DefinitionAppendixe Calling Subroutines Figure B-1. Internal Representation of Numbers and Strings RESULT=USR%1VARPTRA, VARPTRB, VARPTRC» PRINTA+B+C= Result Some Real ExamplesFigure E-2 /8085 Assembly Language Program Figure E-3. PL/M-80 Program Appendix F RMX/SO BASIC-SO ISIS-II BASIC-SO Initializing the Predefined RMX/SO BASIC-SO ConfigurationOOOOH-OFFFH Table F-l. Sample Configuration Jumper WiringBASIC-80 Source Files Generating Boot-Loaded and PROM-Based VersionsBASIC-80 Object Files BASIC-80 Executable FilesGenerating a Boot-Loaded RMX/80 BASIC-80 This option is used to allocate memory. It is 1 if the boot That are not boot loadedSetting baud rates, refer to the RMX/SO Users Guide 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 Adding BASIC-SO to an Existing RMX/SO Configuration Configuring DFS on an iSBC 80/10Configuration Requirements ISBC SO/10 System ClockPublic Variables Open 0,#1, L1LlST Adding User-Written I/O Drivers to RMX/SO BASIC-SOFigure F-S. Sample User-Written 1/0 Driver Routine Burning a BASIC-80 Program Into Prom Altering BASIC-80 WorkspaceBaprom F1HEATER.BAS Page Index Ase BASIC-80 RIGHT$,7-1O Request for Readerscomments 111111