; PROGRAM:    PROGPTR
; VERSION:    1.01
; AUTHOR:     David Eriksson, edison@kuai.se
; DATE:       9/29/96

kEnter .EQU  05h				; Enter key

#define equ	.equ				; these will make ti83asm.inc and tokens.inc work in TASM
#define EQU	.equ

.NOLIST
.INCLUDE "ti83asm.inc"			; TI83 System Routine Equates
.INCLUDE "tokens.inc"			; TI83 Tokens
.LIST

.ORG     9327h					; All TI83 programs have base 9327h


	LD		HL, (PROGPTR)		; get offset to program/list table

main_loop:
	LD		A, (HL)				; get type of data
	AND		01FH				; mask out bits 0-4

	CP		05H					; program
	JR		Z, program

	CP		01H					; real list
	JR		Z, list

	CP		0DH					; complex list
	JR		Z, list

	JP		the_end				; unknown/end of list

program:
	LD		DE, -3
	ADD		HL, DE				; move back 3 bytes to length-of-name
	LD		B, (HL)				; load length-of-string
	LD		DE, -1
program_loop:
	ADD		HL, DE				; move backwards to next char
	LD		A, (HL)				; load char
    CALL    _PUTC				; display char
	DEC		B					; decrease count
	JR		NZ, program_loop

	ADD		HL, DE				; move backwards to next item
    CALL    _NEWLINE

	CALL	wait_for_enter
	JP		main_loop
	
list:
	LD		DE, -3
	ADD		HL, DE				; move back 3 bytes to length-of-name
	LD		B, (HL)				; load length-of-string
	LD		DE, -1
list_loop:
	ADD		HL, DE				; move backwards to next char
	DEC		B					; decrease count
	JR		NZ, list_loop

	ADD		HL, DE				; move backwards to next item
	JP		main_loop

wait_for_enter:
	EI
	PUSH	HL

key_loop:
    CALL    _GETKEY				; wait for key
    CP      kEnter				; enter key?
    JR      NZ, key_loop		; no
	POP		HL
	RET

the_end:
	RET

.END
