int e l RESET OPTIONS (VERSION 1.1 ONLY) RESET2: INC DPTR ; DPTR = 0 THE FIRST TIME THRU CLR A MOVX @DPTR,A ; CLEAR THE RAM. A MEMORY TEST PROGRAM COULD ; BE IN THIS LOOP MOV A,R3 ; NOW TEST FOR THE MEMORY LIMITS CJNE A,DPH-RESET2 MOV A,R1 CJNE A,DPL.RESET2 ; ; WHEN YOU GET HERE, YOU ARE DONE ; ; NOW SET UP THE MEMORY POINTERS- FIRST MTOP ; MOV DPTR.#10AH ; LOCATION OF MTOP IN EXTERNAL RAM MOV A,#HIGH 1FFFH ; SAVE MTOP MOVX @DPTR,A INC DPTR ; NOW, SAVE THE LOW BYTE MOV A,#LOW 1FFFH MOVX @DPTR,A ; ; NOW SET UP THE VARTOP POINTER, WITH NO STRINGS.
; VARTOP = MEMTOP ; MOV DPTR,#104H ; LOCATION OF VARTOP IN EXTERNAL RAM MOV A,#HIGH 1FFFH MOVX @DPTR,A INC DPTR MOV A,#LOW 1FFFH MOVX @DPTR,A ; ; ; NOW SAVE THE MATRIX POINTER "DIMUSE". THIS POINTER IS ; DESCRIBED IN THE APPENDIX, WITH NO PROGRAM IN RAM. ; DIMUSE = 525 AFTER RESET ; MOV DPTR,#108H ; LOCATION OF DIMUSE IN EXTERNAL RAM MOV A,#HIGH 528 MOVX @DPTR,A INC DPTR MOV A,#LOW 528 MOVX @DPTR,A ; ; NOW SAVE THE VARIABLE POINTER "VARUSE" THIS POINTER IS ; ALSO DESCRIBED IN THE APPENDIX.
AFTER RESET VARUSE = VARTOP ; MOV DPTR,#106H ; LOCATION OF VARUSE IN EXTERNAL RAM MOV A,#HIGH 1FFFH MOVX @DPTR,A INC DPTR MOV A,#LOW 1FFFH MOVX @DPTR,A ; ; NOW SETUP BASICS CONTROL STACK AND ARGUMENT STACK ; MOV 9H,#0FEH ; THIS INITIALIZES THE ARGUMENT STACK MOV 11H,#0FEH ; THIS INITIALIZES THE CONTROL STACK ; ; NOW TELL BASIC THAT NO PROGRAM IS IN RAM. THIS IS NOT NEEDED ; IF THE USER HAS A PROGRAM IN RAM ; MOV DPTR,#512 ; LOCATION OF THE START OF A USER PROGRAM MOV A,#01H ; END OF FILE CHARACTER MOVX @DPTR,A - 149 -