From 333b605b2afd472b823aeda0adf0e8b1ea9843c0 Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 27 May 2019 02:41:51 +0100 Subject: initial commit from asl-1.41r8.tar.gz --- tests/t_mic51/DEBUG.ASM | 532 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 532 insertions(+) create mode 100644 tests/t_mic51/DEBUG.ASM (limited to 'tests/t_mic51/DEBUG.ASM') 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 +;--------------------------------------------------------------------- + + -- cgit v1.2.3