aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_bas52/bas52.pgm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_bas52/bas52.pgm')
-rw-r--r--tests/t_bas52/bas52.pgm125
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/t_bas52/bas52.pgm b/tests/t_bas52/bas52.pgm
new file mode 100644
index 0000000..080d43f
--- /dev/null
+++ b/tests/t_bas52/bas52.pgm
@@ -0,0 +1,125 @@
+
+PG8: MOV R7,#00H ;PROGRAM ONE BYTE AT A TIME
+ MOV R6,#01H
+ MOV R2,#HI(ROMADR-1)
+ MOV R0,#LO(ROMADR-1);LOAD PROM ADDRESS
+ ACALL PG1+3
+ INC R6
+ DB 0E5H ;MOV A DIRECT OP CODE
+ DB 0CBH ;ADDRESS OF R2CAP HIGH
+ ACALL PG1+3
+ DB 0E5H ;MOV A, DIRECT OP CODE
+ DB 0CAH ;R2CAP LOW
+ MOV R6,#3
+ MOV R1,#LO(MEMTOP-1)
+ MOV R3,#HI(MEMTOP)
+ ACALL PG1+3 ;SAVE MEMTOP
+ SJMP PGR
+ ;
+CIPROG: MOV DPTR,#IPROGS ;LOAD IPROG LOCATION
+ SETB INTELB
+ SJMP $+7 ;GO DO PROG
+ ;
+CPROG: MOV DPTR,#PROGS ;LOAD PROG LOCATION
+ CLR INTELB
+ ;
+ ACALL LD_T ;LOAD THE TIMER
+ CLR PROMV ;TURN ON THE PROM VOLTAGE
+ LCALL DELTST ;SEE IF A CR ******AA CALL-->LCALL
+ JNZ PG8 ;SAVE TIMER IF SO
+ MOV R4,#0FEH
+ SETB INBIT
+ ACALL ROMFD ;GET THE ROM ADDRESS OF THE LAST LOCATION
+ LCALL TEMPD ;SAVE THE ADDRESS ******AA CALL-->LCALL
+ MOV A,R4 ;GET COUNT
+ CPL A
+ LCALL TWO_R2 ;PUT IT ON THE STACK ******AA CALL-->LCALL
+ CALL FP_BASE+14 ;OUTPUT IT
+ ACALL CCAL ;GET THE PROGRAM
+ ACALL CRLF ;DO CRLF
+ MOV R0,TEMP4 ;GET ADDRESS
+ MOV R2,TEMP5
+ MOV A,#55H ;LOAD SIGNIFIER
+ INC R6 ;LOAD LEN + 1
+ CJNE R6,#00,$+4
+ INC R7
+ ACALL PG2-2
+ ;
+ newpage
+PGR: SETB PROMV
+ AJMP C_K
+ ;
+PG1: MOV P2,R3 ;GET THE BYTE TO PROGRAM
+ MOVX A,@R1
+ LCALL INC3210 ;BUMP POINTERS
+ MOV R5,#1 ;SET UP INTELLIGENT COUMTER
+ ;
+PG2: MOV R4,A ;SAVE THE BYTE IN R4
+ ACALL PG7 ;PROGRAM THE BYTE
+ ACALL PG9
+ JB INTELB,PG4 ;SEE IF INTELLIGENT PROGRAMMING
+ ;
+PG3: XRL A,R4
+ JNZ PG6 ;ERROR IF NOT THE SAME
+ LCALL DEC76 ;BUMP THE COUNTERS ******AA CALL-->LCALL
+ JNZ PG1 ;LOOP IF NOT DONE
+ ANL PSW,#11100111B ;INSURE RB0
+ RET
+ ;
+PG4: XRL A,R4 ;SEE IF PROGRAMMED
+ JNZ PG5 ;JUMP IF NOT
+ MOV A,R4 ;GET THE DATA BACK
+ ACALL PG7 ;PROGRAM THE LOCATION
+ ACALL ZRO ;AGAIN
+ ACALL ZRO ;AND AGAIN
+ ACALL ZRO ;AND AGAIN
+ DJNZ R5,$-6 ;KEEP DOING IT
+ ACALL PG9 ;RESET PROG
+ SJMP PG3 ;FINISH THE LOOP
+ ;
+PG5: INC R5 ;BUMP THE COUNTER
+ MOV A,R4 ;GET THE BYTE
+ CJNE R5,#25,PG2 ;SEE IF TRIED 25 TIMES
+ ;
+PG6: SETB PROMV ;TURN OFF PROM VOLTAGE
+ MOV PSW,#0 ;INSURE RB0
+ JNB DIRF,PG4-1 ;EXIT IF IN RUN MODE
+ MOV DPTR,#E16X ;PROGRAMMING ERROR
+ ;
+ERRLK: LJMP ERROR ;PROCESS THE ERROR
+ ;
+ newpage
+PG7: MOV P0,R0 ;SET UP THE PORTS
+ MOV P2,R2 ;LATCH LOW ORDER ADDRESS
+ ACALL PG11 ;DELAY FOR 8748/9
+ CLR ALED
+ MOV P0,A ;PUT DATA ON THE PORT
+ ;
+ZRO: NOP ;SETTLEING TIME + FP ZERO
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ ACALL PG11 ;DELAY A WHILE
+ CLR PROMP ;START PROGRAMMING
+ ACALL TIMER_LOAD ;START THE TIMER
+ JNB TF1,$ ;WAIT FOR PART TO PROGRAM
+ RET ;EXIT
+ ;
+PG9: SETB PROMP
+ ACALL PG11 ;DELAY FOR A WHILE
+ JNB P3.2,$ ;LOOP FOR EEPROMS
+ MOV P0,#0FFH
+ CLR P3.7 ;LOWER READ
+ ACALL PG11
+ MOV A,P0 ;READ THE PORT
+ SETB P3.7
+ SETB ALED
+ RET
+ ;
+PG11: MOV TEMP5,#12 ;DELAY 30uS AT 12 MHZ
+ DJNZ TEMP5,$
+ RET
+ ;
+