;VALIST v 2.1 by Alan Sheehan B.E. 8/2/86 ;Re-written for disk machines 8/9/85. ;Moved to low scratch memory so 128K machine I/O routines don't ;stuff it up. ;Modified to show if variable is a string or array 8/2/86. ; ORG 327D ;START PROGRAM PRINT EQU 8042H ;BASIC PRINT ROUTINE START LD HL,START ;PUT START ADDRESS IN LD (00A6H),HL ;EXEC ADDR STORAGE LD HL,0501H ;START REAL VAR TABLE LD B,00 ;INITIALISE COUNTER GETR LD A,(HL) ;LOOK IN TABLE CP 0 JR Z,NEXTR ;GO IF NOT USED LD A,B ;FIND VARIABLE NAME SRL A SRL A SRL A ADD A,41H ;FIRST CHAR OF NAME CALL PRINT ;PRINT CHARACTER LD A,B ;FIND 2nd CHAR OF NAME AND 07H ADD A,30H ;2nd CHAR OF NAME CALL PRINT ;PRINT CHARACTER CALL VTYPE ;FIND VARIABLE TYPE CALL PRINT ;PRINT SYMBOL FOR VAR TYPE LD A,20H ;PRINT A SPACE CALL PRINT NEXTR INC B ;LOOK FOR NEXT CHAR LD A,B CP 0D0H ;TEST IF DONE JR Z,INTVAR ;GO TO INTEGER VARS INC HL ;SET FOR NEXT LOC'N INC HL JR GETR ;LOOK FOR NEXT VAR INTVAR LD HL,06B1H ;SET POINTER TO INT VARS LD B,0 ;RESET COUNTER LD A,0DH ;CR CALL PRINT ;CARRIAGE RETURN LD A,0AH ;LF CALL PRINT ;LINE FEED GETI LD A,(HL) ;LOOK IN TABLE CP 0 JR Z,NEXTI ;GO IF NOT USED LD A,B ;FIND NAME OF VAR ADD A,41H ;NAME CHAR CALL PRINT ;PRINT CHAR CALL VTYPE ;FIND VARIABLE TYPE CALL PRINT ;PRINT VAR TYPE SYMBOL LD A,20H ;PRINT 2 SPACES CALL PRINT CALL PRINT NEXTI INC B ;LOOK FOR NEXT VAR LD A,B CP 1AH ;TEST IF DONE RET Z ;END INC HL ;LOOK IN NEXT LOC'N INC HL JR GETI VTYPE DEC HL ;POINT TO START OF VAR POINTER LD E,(HL) ;LOAD POINTER INTO DE INC HL LD D,(HL) LD A,(DE) ;GET VAR TYPE BYTE CP 0FFH ;TEST IF ARRAY JR Z,ARRAY CP 0 ;TEST IF STRING JR Z,STRING INTEX LD A,20H ;VAR IS NOT STRING OR ARRAY RET ARRAY LD A,28H ;PRINT A ( TO SYMBOLISE ARRAY RET STRING LD A,H ;CHECK VAR IS NOT INTEGER CP 6 JR NC,INT ;POSSIBLE INTEGER REAL LD A,24H ;USE $ TO SYMBOLISE STRING VAR RET INT LD A,L ;TEST IF INTEGER CP 0B0H JR C,REAL ;GO IF VALID STRING JR INTEX ;VAR IS AN INTEGER END