aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_mic51/DEBUG.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_mic51/DEBUG.ASM')
-rw-r--r--tests/t_mic51/DEBUG.ASM532
1 files changed, 532 insertions, 0 deletions
diff --git a/tests/t_mic51/DEBUG.ASM b/tests/t_mic51/DEBUG.ASM
new file mode 100644
index 0000000..7aff702
--- /dev/null
+++ b/tests/t_mic51/DEBUG.ASM
@@ -0,0 +1,532 @@
+
+; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
+; Autor: Joerg Vollandt
+; erstellt am : 30.06.1994
+; letzte Aenderung am : 01.07.1994
+; Bemerkung : Wird in das gegebene File "MAIN.ASM" includet.
+;
+; Dateiname : debug.asm
+;
+
+;---------------------------------------------------------------------
+ SEGMENT CODE
+;---------------------------------------------------------------------
+; Funktion : Dump ext. RAM.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+N_BYTES EQU 12
+
+
+DUMP: PUSH PSW
+ PUSH ACC
+ PUSH B
+ PUSH_DPTR
+DUMP_ADR: LCALL LCD_CLEAR
+ LCD 0h,"Start="
+ LCALL IN_DPTR
+DUMP_LINE: LCALL LCD_CLEAR ; 1. Zeile
+ LCALL DPTR_LCD
+ MOV A,#':'
+ LCALL LCD_WRITE_CHAR
+ MOV B,#N_BYTES
+DUMP_BYTE: MOVX A,@DPTR
+ LCALL A_LCD
+ INC DPTR
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ DJNZ B,DUMP_BYTE
+
+ MOV A,#40h ; 2. Zeile
+ LCALL LCD_SET_DD_RAM_ADDRESS
+ LCALL DPTR_LCD
+ MOV A,#':'
+ LCALL LCD_WRITE_CHAR
+ MOV B,#(N_BYTES-1)
+DUMP_BYTE2: MOVX A,@DPTR
+ LCALL A_LCD
+ INC DPTR
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ DJNZ B,DUMP_BYTE2
+ MOVX A,@DPTR
+ LCALL A_LCD
+ INC DPTR
+
+ LCALL CHAR_ACC
+ LCALL UPCASE
+ IFMAKE 'D',LJMP DUMP_ADR
+ IFMAKE 'X',SUBB_DPTR N_BYTES
+ IFMAKE 'E',SUBB_DPTR (3*N_BYTES)
+ IFMAKE 'Q',LJMP DUMP_ENDE
+
+ LJMP DUMP_LINE
+DUMP_ENDE:
+ POP_DPTR
+ POP B
+ POP ACC
+ POP PSW
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Ausgabe der Start- und Endadr. des definierten ext. Speichers.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+ADRESSEN:
+ PUSH ACC
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Startadr.="
+ MOV DPTR,#MEM_ANF
+ LCALL DPTR_LCD
+ LCD 0Eh,";Endadr.="
+ MOV DPTR,#MEM_ENDE
+ LCALL DPTR_LCD
+ LCD 1bh,";Groesse="
+ MOV DPTR,#(MEM_ENDE-MEM_ANF)
+ LCALL DPTR_LCD
+ LCD 40h,"NEXT_FREE="
+ GET_16 NEXT_FREE
+ LCALL DPTR_LCD
+ LCD 4Eh,";RD_P="
+ GET_16 RD_POINTER
+ LCALL DPTR_LCD
+ LCALL CHECK_SUM
+ LCD 5bh,";CHECK="
+ MOV DPL,CHECKSUMME
+ MOV DPH,CHECKSUMME+1
+ LCALL DPTR_LCD
+ LCALL WAIT_KEY
+ POP_DPTR
+ POP ACC
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Ausgabe der Variablen fuer die Synchronisation
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+DEBUG_SYNC:
+ PUSH ACC
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"R_Sync-C.="
+ MOV a,R_Sync_Counter
+ LCALL A_LCD
+ jb runningbit,DESYNC1
+ LCD 0ch,"not "
+DESYNC1: LCD 10h,"running"
+ jb Sync_Waiting,DESYNC2
+ LCD 18h,"not "
+DESYNC2: LCD 1ch,"Sync.waiting"
+ LCD 0h,"T_Sync-C.="
+ MOV a,T_Sync_Counter
+ LCALL A_LCD
+ jb Ready_Waiting,DESYNC3
+ LCD 4ch,"not "
+DESYNC3: LCD 50h,"Ready waiting"
+ POP_DPTR
+ POP ACC
+ LCALL WAIT_KEY
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Speicher fuellen.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+FUELLEN:
+ PUSH PSW
+ PUSH ACC
+ PUSH B
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Fuellwert ="
+ LCALL IN_ACC
+ MOV B,A
+ MOV DPTR,#MEM_ANF
+FUELLEN1: MOV A,B
+ MOVX @DPTR,A
+ INC DPTR
+ MOV A,DPH
+ CJNE A,#(MEM_ENDE/256),FUELLEN1
+ MOV A,DPL
+ CJNE A,#(MEM_ENDE#256),FUELLEN1
+ LCD 40h,"Speicher gefuellt."
+ LCALL WAIT_KEY
+ POP_DPTR
+ POP B
+ POP ACC
+ POP PSW
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Schreiben in Speicher
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+SCHREIBEN:
+ PUSH PSW
+ PUSH ACC
+ PUSH B
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Schreibadr.="
+ LCALL IN_DPTR
+ LCD 12h,"Schreibwert="
+ LCALL IN_ACC
+ LCALL ACC_WR_MEM
+ LCD 40h,"Wert geschrieben."
+ LCALL WAIT_KEY
+ POP_DPTR
+ POP B
+ POP ACC
+ POP PSW
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Lesen aus Speicher
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+LESEN:
+ PUSH PSW
+ PUSH ACC
+ PUSH B
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Leseadr.="
+ LCALL IN_DPTR
+ LCALL ACC_RD_MEM
+ LCD 40h,"Wert ="
+ LCALL A_LCD
+ LCALL WAIT_KEY
+ POP_DPTR
+ POP B
+ POP ACC
+ POP PSW
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Speicher auf PC schreiben
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+WR_PC:
+ LCALL LCD_CLEAR
+ LCD 0h,"Speicher auf PC"
+ LCALL WR_MEM_PC
+ LCD 40h,"o.k."
+ LCALL WAIT_KEY
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Speicher initialisieren
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+SPEICHER_INIT:
+ LCALL LCD_CLEAR
+ LCD 0h,"Speicher initialisieren"
+ LCALL INIT_MEM
+ LCD 40h,"o.k."
+ LCALL WAIT_KEY
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Speicher zum lesen zuruecksetzen
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+RESET:
+ LCALL LCD_CLEAR
+ LCD 0h,"Speicher reset"
+ LCALL RESET_MEM
+ LCD 40h,"o.k."
+ LCALL WAIT_KEY
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Element aus Speicher lesen.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+GET:
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Element lesen von:"
+ GET_16 RD_POINTER
+ LCALL DPTR_LCD
+ LCALL GET_ELEMENT_MEM
+ JC GET_ERROR
+ LCD 40h,"o.k. ACC="
+ LCALL A_LCD
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+GET_ERROR:
+ LCD 40h,"Fehler."
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Element in den Speicher schreiben
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+PUT:
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Element schreiben ab:"
+ GET_16 NEXT_FREE
+ LCALL DPTR_LCD
+ LCD 20h,"ACC="
+ LCALL IN_ACC
+
+ LCALL PUT_ELEMENT_MEM
+ JC PUT_ERROR
+ LCD 40h,"o.k."
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+PUT_ERROR:
+ LCD 40h,"Fehler."
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Speicher von PC lesen
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+RD_PC:
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"Speicher von PC"
+ CLR READY
+ LCALL RD_MEM_PC
+RD_PC_LOOP:
+ JNB MSG,$
+ LCALL MEM_SCHEDULER
+ JNB READY,RD_PC_LOOP
+ JB CRC,RD_PC_ERROR
+ LCD 10h,"o.k."
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+RD_PC_ERROR:
+ LCD 10h,"CRC- Fehler beim laden."
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Zeiger setzen
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+SET_NEXT_FREE:
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"next_free="
+ lcall IN_DPTR
+ SET_16 NEXT_FREE
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+SET_RD_POINTER:
+ PUSH_DPTR
+ LCALL LCD_CLEAR
+ LCD 0h,"RD_POINTER="
+ lcall IN_DPTR
+ SET_16 RD_POINTER
+ LCALL WAIT_KEY
+ POP_DPTR
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Msg_Handler_Test
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+; ****************************************************************************
+; R0 Empf„nger (logische Adresse)
+; R1 Message
+; R2 - R7 Parameter
+; ****************************************************************************
+
+Msg_Handler_Test:
+ PUSH ACC
+ PUSH AR0
+ PUSH AR1
+ LCALL LCD_CLEAR
+ LCD 0h,"Msg_Handler_Test"
+ LCD 16h,"R0="
+ LCALL IN_ACC
+ MOV R0,A
+ LCD 20h,"R1="
+ LCALL IN_ACC
+ MOV R1,A
+ LCALL Dispatch_Msg
+ POP AR1
+ POP AR0
+ POP ACC
+ ret
+
+;---------------------------------------------------------------------
+; Funktion : Testbit toggeln
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+T_TEST:
+ LCALL LCD_CLEAR
+ LCD 0h,"TEST"
+ LCALL WAIT_KEY
+ CPL TESTBIT
+ ret
+
+;---------------------------------------------------------------------
+; Funktion : Test RUN- Manager
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+TEST_RUN:
+ LCD 0h,"TEST RUN_ Manager"
+ LCALL WAIT_KEY
+ LCALL START_RUNNING
+ LCALL LCD_CLEAR
+ ret
+
+;---------------------------------------------------------------------
+; Funktion : Debuger fuer das Speichermodul
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+DEBUG_MEM:
+ mov a,#1
+ lcall lcd_curser_onoff
+
+DEBUG_START:
+ LCALL LCD_CLEAR
+ LCD 0,"DEBUG SPEICHERMODUL "
+DEBUG_LOOP:
+ JNB KB_CHAR_READY,DEBUG3
+ LJMP DEBUG1
+DEBUG3:
+ LJMP DEBUG_LOOP
+
+DEBUG1: CLR KB_CHAR_READY
+ MOV A,KB_CHAR_BUFFER
+ LCALL LCD_WRITE_CHAR
+ LCALL UPCASE
+ IFCALL 'A',ADRESSEN
+ IFCALL 'B',LOAD_ROB
+ IFCALL 'C',LOAD_FRAES
+ IFCALL 'D',DUMP
+ IFCALL 'E',Msg_Handler_Test
+ IFCALL 'F',FUELLEN
+ IFCALL 'G',GET
+ IFCALL 'H',SAVE_ROB
+ IFCALL 'I',SAVE_FRAES
+ IFCALL 'J',SPEICHER_INIT
+ IFCALL 'K',T_TEST
+ IFCALL 'L',LESEN
+ IFCALL 'M',STORE_ROB
+ IFCALL 'O',RESET
+ IFCALL 'P',PUT
+ IFMAKE 'Q',LJMP DEBUG_ENDE
+ IFCALL 'R',RD_PC
+ IFCALL 'S',SCHREIBEN
+ IFCALL 'T',TEST_RUN
+ IFCALL 'U',SET_RD_POINTER
+ IFCALL 'W',WR_PC
+ IFCALL 'X',DEBUG_SYNC
+ IFCALL 'Y',STORE_SYNC
+ IFCALL 'Z',SET_NEXT_FREE
+
+ ljmp DEBUG_START
+
+DEBUG_ENDE:
+
+ LCALL LCD_CLEAR
+ ret
+
+;=====================================================================
+; END
+;---------------------------------------------------------------------
+
+