aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_bas52/bas52.rst
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_bas52/bas52.rst')
-rw-r--r--tests/t_bas52/bas52.rst111
1 files changed, 111 insertions, 0 deletions
diff --git a/tests/t_bas52/bas52.rst b/tests/t_bas52/bas52.rst
new file mode 100644
index 0000000..2d2f13a
--- /dev/null
+++ b/tests/t_bas52/bas52.rst
@@ -0,0 +1,111 @@
+
+ ;**************************************************************
+ ;
+CRST: ; This performs system initialzation, it was moved here so the
+ ; new power on reset functions could be tested in an 8751.
+ ;
+ ;**************************************************************
+ ;
+ ; First, initialize SFR's
+ ;
+ MOV SCON,#5AH ;INITIALIZE SFR'S
+ MOV TMOD,#10H
+ MOV TCON,#54H
+ DB 75H ;MOV DIRECT, # OP CODE
+ DB 0C8H ;T2CON LOCATION
+ DB 34H ;CONFIGURATION BYTE
+ ;
+ MOV DPTR,#2001H ;READ CODE AT 2001H
+ CLR A
+ MOVC A,@A+DPTR
+ CJNE A,#0AAH,$+6 ;IF IT IS AN AAH, DO USER RESET
+ LCALL 2090H
+ ;
+ MOV R0,#IRAMTOP ;PUT THE TOP OF RAM IN R0
+ CLR A ;ZERO THE ACC
+ ;
+ MOV @R0,A ;CLEAR INTERNAL MEMORY
+ DJNZ R0,$-1 ;LOOP TIL DONE
+ ;
+ ; Now, test the external memory
+ ;
+ MOV SPSAV,#CMNDSP ;SET UP THE STACK
+ MOV SP,SPSAV
+ ;
+ MOV BOFAH,#HI(ROMADR)
+ MOV BOFAL,#LO(ROMADR+17)
+ MOV DPTR,#ROMADR ;GET THE BYTE AT 8000H
+ MOVX A,@DPTR
+ CLR C
+ SUBB A,#31H ;FOR BIAS
+ MOV MT1,A ;SAVE IN DIRECT MATH LOC
+ CLR ACC.2 ;SAVE FOR RESET
+ MOV R7,A ;SAVE IT IN R7
+ INC DPTR
+ ACALL L31DPI ;SAVE BAUD RATE
+ LCALL RCL
+ INC DPTR ;GET MEMTOP
+ ACALL L31DPI
+ MOV DPTR,#5FH ;READ THE EXTERNAL BYTE
+ MOVX A,@DPTR
+ MOV DPTR,#0 ;ESTABLISH BASE FOR CLEAR
+ CJNE A,#0A5H,CRS
+ MOV A,MT1
+ CLR ACC.0 ;CLEAR BIT ONE
+ XRL A,#4H
+ JZ CR2
+ ;
+CRS: CJNE R7,#2,$+5
+ SJMP $+5
+ CJNE R7,#3,$+7
+ ACALL CL_1
+ SJMP CR1
+ ;
+CR0: MOV R3,DPH ;SAVE THE DPTR
+ MOV R1,DPL
+ INC DPTR
+ MOV A,#5AH
+ MOVX @DPTR,A
+ MOVX A,@DPTR
+ CJNE A,#5AH,CR1
+ CLR A
+ MOVX @DPTR,A
+ CJNE R3,#0E0H,CR0
+ ;
+CR1: CJNE R3,#03H,$+3 ;NEED THIS MUCH RAM
+ JC CRST
+ MOV DPTR,#MEMTOP ;SAVE MEMTOP
+ ACALL S31DP2 ;SAVE MEMTOP AND SEED RCELL
+ ACALL CNEW ;CLEAR THE MEMORY AND SET UP POINTERS
+ ;
+CR2: ACALL RC1 ;SET UP STACKS IF NOT DONE
+ ;
+ LCALL AXTAL0 ;DO THE CRYSTAL
+ MOV A,MT1 ;GET THE RESET BYTE
+ CJNE A,#5,$+6
+ LCALL 4039H
+ JNC BG1 ;CHECK FOR 0,1,2,3, OR 4
+ JNB ACC.0,BG3 ;NO RUN IF WRONG TYPE
+ MOV DPTR,#ROMADR+16
+ MOVX A,@DPTR ;READ THE BYTE
+ CJNE A,#55H,BG3
+ LJMP CRUN
+ ;
+BG1: CLR A ;DO BAUD RATE
+ MOV R3,A
+ MOV R1,A
+ MOV R0,#4
+ JB RXD,$ ;LOOP UNTIL A CHARACTER IS RECEIVED
+ ;
+BG2: DJNZ R0,$ ;FOUR CLOCKS, IN LOOP
+ LCALL DEC3210+4 ;NINE CLOCKS ******AA CALL-->LCALL
+ MOV R0,#2 ;ONE CLOCK
+ JNB RXD,BG2 ;TWO CLOCKS, LOOP UNTIL DONE
+ JB RXD,$ ;WAIT FOR STOP CHARACTER TO END
+ JNB RXD,$
+ LCALL RCL ;LOAD THE TIMER ******AA CALL-->LCALL
+ ;
+BG3: MOV DPTR,#S_N ;GET THE MESSAGE
+ ACALL CRP ;PRINT IT
+ LJMP CRAM
+