Variable FormatVARIABLE FORMAT: TI-86 ---------------------- Outside of the symbol table every var name is stored and moved as a 10 byte entry, the size of a floating point number. This is done so that all of the utility routines for moving floating point numbers around also can be used to move variable names. The format of var names is illustrated here using OP1. ------------------------------------------------- | S | NL | VAR NAME 1 - 8 BYTES | ------------------------------------------------- OP1 +1 +2 +3 +4 +5 +6 +7 +8 +9 NL = length of the variable name S = SIGN BYTE : BIT FLAG --- ---- 0 -- 1 | 2 |-- OBJECT TYPE 3 | 4 -- OBJECT TYPE VALUE OBJECT TYPE ----------------- ----------- 00 REAL 01 COMPLEX 02 VECTOR - REAL 03 VECTOR - COMPLEX 04 LIST - REAL 05 LIST - COMPLEX 06 MATRIX - REAL 07 MATRIX - COMPLEX 08 CONSTANT - REAL 09 CONSTANT - COMPLEX 0A EQUATION 0B system use 0C STRING 0D GRAPH DATABASE - STANDARD 0E GRAPH DATABASE - POLAR 0F GRAPH DATABASE - PARAMETRIC 10 GRAPH DATABASE - DIFFERENTIAL EQUATION 11 PICTURE 12 PROGRAM 13 CONVERSION 14 system use 15 system use 16 system use 17 system use 18 system use 19 system use 1A system use 1B system use 1C system use 1D system use 1E system use 1F system use CREATING VARS : --------------- There exists a seperate routine for each data type to create a user vas of that type. What each of these routines has in common is the following : ;********************************************************** ; ; INPUT : (OP1+1) = NL = LENGTH OF VARIABLE NAME, <= 8 ; (OP1+2) TO (OP1+9) = NAME OF VAR, UP TO 8 CHARS ; ; OUTPUT : IF NOT SUCCESSFUL MEMORY ERROR. ; VAR NAME ENTERED IN SYMTAB. ; USERMEM = DATA AREA ALLOCATED ; B,DE = POINTER TO DATA AREA ( ABS address ) ; OP4 = VARIABLE NAME ; OP1 = garbage ; HL = PTR TO SYMBOL TABLE ENTRY ; Ram page 7 is loaded, makes hl a valid pointer ; ; USES OP1,OP2,OP4 ; ; !!! THE CONTENTS OF THE VAR DATA WILL BE RANDOM !!! ; !!! NO DEFAULT VALUES OR CLEARING IS DONE. !!! ; ;********************************************************** What will be unique for each of the 'create' routines is the inputting of the size or dimension of the variable to create. _CREATEREAL equ 46EBh ; CREATE REAL VAR OP1, NO INPUTS ; _CREATECPLX equ 46F7h ; CREATE CPLX VAR OP1, NO INPUTS ; _CREATERCONST equ 46EFh ; CREATE REAL CONSTANT VAR OP1, NO INPUTS _CREATECCONST equ 46F3h ; CREATE CPLX CONSTANT VAR OP1, NO INPUTS ; _CREATERVECT equ 46FFh ; CREATE REAL VECTOR OP1, L = # ELEMENTS _CREATECVECT equ 4707h ; CREATE CPLX VECTOR OP1, L = # ELEMENTS ; _CREATERLIST equ 470Fh ; CREATE REAL LIST OP1, HL = # ELEMENTS _CREATECLIST equ 4717h ; CREATE CPLX LIST OP1, HL = # ELEMENTS ; _CREATERMAT equ 471Fh ; CREATE REAL MATRIX OP1, HL = ROW,COL _CREATECMAT equ 4727h ; CREATE CPLX MATRIX OP1, HL = ROW,COL ; _CREATESTRNG equ 472Fh ; CREATE STRING OP1, HL = # BYTES ; _CREATEEQU equ 4737h ; CREATE EQUATION OP1, HL = # BYTES ; _CREATEPICT equ 473Bh ; CREATE PICTURE VAR OP1, NO INPUTS ; _CREATEPROG equ 474Fh ; CREATE PROGRAM VAR OP1, HL = # BYTES ; ; ; 'LOOKING UP' AND DELETING VARS ; ; ; ; FINDSYM : LOOK UP VAR OP1 IN SYMBOL TABLE ; ; ; INPUT : (OP1+1) = NL = NAME LENGTH ; (OP1+2) TO (OP1+9) = NAME ; ; OUTPUT : ; IF SYMBOL EXISTS: ; A = DATA TYPE + FLAGS, DO: 'AND 1Fh' TO GET TYPE ; CA=0 ; OP1 = VARIBALE FORMAT OF VAR, WITH TYPE ; ; SYMBOL TABLE RAM PAGE IS SWAPPED IN (7) ; ; POINTERS RETURNED ; ----------------- ; HL = 2 LSB'S OF ABS ADDR OF SYMBOL ENTRY ; THE UPPER BYTE IS NOT RETURNED IN ANY REGISTER BUT ; IT WILL ALWAYS BE 2. ; ; SINCE THE SYMBOL TABLE RAM PAGE IS SWAPPED ; IN AND THE POINTER IN HL MATCHES THE ASIC ; ADDRESS OF THE SWAPPED RAM PAGE, HL CAN BE ; USED WITH NO CONVERISION TO ACCESS THE SYMBOL ; ENTRY AS LONG AS NO RAM PAGE SWAP IS DONE. ; ; B,DE = PTR TO DATA, ABS ADDRESS ; ; IF SYMBOL DOESN'T EXIST: ; CA=1 ; USES : OP1 ;**************************************************************************** ; _FINDSYM equ 46CBh ; ; ; ;--------------------------------------------------------- ; DELVAR : DELETE VAR, MUST EXITS ; ; THE OUTPUT TO 'FINDSYM' IS THE INPUT TO ; THIS ROUTINE. ; ; INPUT: (HL) = SIGN DIGIT OF SYMBOL TABLE ENTRY OF ; VARIABLE TO DELETE. ; ; B,DE = PTR TO DATA ; ; ; ; _delvar equ 475Fh TI-86 Assembly Programming |
(c) Copyright 1998 Texas Instruments Incorporated. All rights reserved.