Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
  3. ; Autor: Joerg Vollandt
  4. ; erstellt am : 30.06.1994
  5. ; letzte Aenderung am : 01.07.1994
  6. ; Bemerkung : Wird in das gegebene File "MAIN.ASM" includet.
  7. ;
  8. ; Dateiname : debug.asm
  9. ;
  10.  
  11. ;---------------------------------------------------------------------
  12.         SEGMENT CODE
  13. ;---------------------------------------------------------------------
  14. ; Funktion : Dump ext. RAM.
  15. ; Aufrufparameter : -
  16. ; Ruechgabeparameter : -
  17. ; Veraenderte Register :
  18. ; Stackbedarf :
  19. ; Zeitbedarf :
  20. ;
  21.  
  22. N_BYTES EQU     12
  23.  
  24.  
  25. DUMP:   PUSH PSW
  26.         PUSH ACC
  27.         PUSH B
  28.         PUSH_DPTR
  29. DUMP_ADR: LCALL LCD_CLEAR
  30.         LCD 0h,"Start="
  31.         LCALL IN_DPTR
  32. DUMP_LINE: LCALL LCD_CLEAR                      ; 1. Zeile
  33.         LCALL DPTR_LCD
  34.         MOV A,#':'
  35.         LCALL LCD_WRITE_CHAR
  36.         MOV B,#N_BYTES
  37. DUMP_BYTE: MOVX A,@DPTR
  38.         LCALL A_LCD
  39.         INC DPTR
  40.         MOV A,#' '
  41.         LCALL LCD_WRITE_CHAR
  42.         DJNZ B,DUMP_BYTE
  43.  
  44.         MOV A,#40h                              ; 2. Zeile
  45.         LCALL LCD_SET_DD_RAM_ADDRESS
  46.         LCALL DPTR_LCD
  47.         MOV A,#':'
  48.         LCALL LCD_WRITE_CHAR
  49.         MOV B,#(N_BYTES-1)
  50. DUMP_BYTE2: MOVX A,@DPTR
  51.         LCALL A_LCD
  52.         INC DPTR
  53.         MOV A,#' '
  54.         LCALL LCD_WRITE_CHAR
  55.         DJNZ B,DUMP_BYTE2
  56.         MOVX A,@DPTR
  57.         LCALL A_LCD
  58.         INC DPTR
  59.  
  60.         LCALL CHAR_ACC
  61.         LCALL UPCASE
  62.         IFMAKE 'D',LJMP DUMP_ADR
  63.         IFMAKE 'X',SUBB_DPTR N_BYTES
  64.         IFMAKE 'E',SUBB_DPTR (3*N_BYTES)
  65.         IFMAKE 'Q',LJMP DUMP_ENDE
  66.  
  67.         LJMP DUMP_LINE
  68. DUMP_ENDE:
  69.         POP_DPTR
  70.         POP B
  71.         POP ACC
  72.         POP PSW
  73.         RET
  74.  
  75. ;---------------------------------------------------------------------
  76. ; Funktion : Ausgabe der Start- und Endadr. des definierten ext. Speichers.
  77. ; Aufrufparameter : -
  78. ; Ruechgabeparameter : -
  79. ; Veraenderte Register :
  80. ; Stackbedarf :
  81. ; Zeitbedarf :
  82. ;
  83.  
  84. ADRESSEN:
  85.         PUSH ACC
  86.         PUSH_DPTR
  87.         LCALL LCD_CLEAR
  88.         LCD 0h,"Startadr.="
  89.         MOV DPTR,#MEM_ANF
  90.         LCALL DPTR_LCD
  91.         LCD 0Eh,";Endadr.="
  92.         MOV DPTR,#MEM_ENDE
  93.         LCALL DPTR_LCD
  94.         LCD 1bh,";Groesse="
  95.         MOV DPTR,#(MEM_ENDE-MEM_ANF)
  96.         LCALL DPTR_LCD
  97.         LCD 40h,"NEXT_FREE="
  98.         GET_16 NEXT_FREE
  99.         LCALL DPTR_LCD
  100.         LCD 4Eh,";RD_P="
  101.         GET_16 RD_POINTER
  102.         LCALL DPTR_LCD
  103.         LCALL CHECK_SUM
  104.         LCD 5bh,";CHECK="
  105.         MOV DPL,CHECKSUMME
  106.         MOV DPH,CHECKSUMME+1
  107.         LCALL DPTR_LCD
  108.         LCALL WAIT_KEY
  109.         POP_DPTR
  110.         POP ACC
  111.         RET
  112.  
  113. ;---------------------------------------------------------------------
  114. ; Funktion : Ausgabe der Variablen fuer die Synchronisation
  115. ; Aufrufparameter : -
  116. ; Ruechgabeparameter : -
  117. ; Veraenderte Register :
  118. ; Stackbedarf :
  119. ; Zeitbedarf :
  120. ;
  121.  
  122. DEBUG_SYNC:
  123.         PUSH ACC
  124.         PUSH_DPTR
  125.         LCALL LCD_CLEAR
  126.         LCD 0h,"R_Sync-C.="
  127.         MOV a,R_Sync_Counter
  128.         LCALL A_LCD
  129.         jb runningbit,DESYNC1
  130.         LCD 0ch,"not "
  131. DESYNC1: LCD 10h,"running"
  132.         jb Sync_Waiting,DESYNC2
  133.         LCD 18h,"not "
  134. DESYNC2: LCD 1ch,"Sync.waiting"
  135.         LCD 0h,"T_Sync-C.="
  136.         MOV a,T_Sync_Counter
  137.         LCALL A_LCD
  138.         jb Ready_Waiting,DESYNC3
  139.         LCD 4ch,"not "
  140. DESYNC3: LCD 50h,"Ready waiting"
  141.         POP_DPTR
  142.         POP ACC
  143.         LCALL WAIT_KEY
  144.         RET
  145.  
  146. ;---------------------------------------------------------------------
  147. ; Funktion : Speicher fuellen.
  148. ; Aufrufparameter : -
  149. ; Ruechgabeparameter : -
  150. ; Veraenderte Register :
  151. ; Stackbedarf :
  152. ; Zeitbedarf :
  153. ;
  154.  
  155. FUELLEN:
  156.         PUSH PSW
  157.         PUSH ACC
  158.         PUSH B
  159.         PUSH_DPTR
  160.         LCALL LCD_CLEAR
  161.         LCD 0h,"Fuellwert ="
  162.         LCALL IN_ACC
  163.         MOV B,A
  164.         MOV DPTR,#MEM_ANF
  165. FUELLEN1: MOV A,B
  166.         MOVX @DPTR,A
  167.         INC DPTR
  168.         MOV A,DPH
  169.         CJNE A,#(MEM_ENDE/256),FUELLEN1
  170.         MOV A,DPL
  171.         CJNE A,#(MEM_ENDE#256),FUELLEN1
  172.         LCD 40h,"Speicher gefuellt."
  173.         LCALL WAIT_KEY
  174.         POP_DPTR
  175.         POP B
  176.         POP ACC
  177.         POP PSW
  178.         RET
  179.  
  180. ;---------------------------------------------------------------------
  181. ; Funktion : Schreiben in Speicher
  182. ; Aufrufparameter : -
  183. ; Ruechgabeparameter : -
  184. ; Veraenderte Register :
  185. ; Stackbedarf :
  186. ; Zeitbedarf :
  187. ;
  188.  
  189. SCHREIBEN:
  190.         PUSH PSW
  191.         PUSH ACC
  192.         PUSH B
  193.         PUSH_DPTR
  194.         LCALL LCD_CLEAR
  195.         LCD 0h,"Schreibadr.="
  196.         LCALL IN_DPTR
  197.         LCD 12h,"Schreibwert="
  198.         LCALL IN_ACC
  199.         LCALL ACC_WR_MEM
  200.         LCD 40h,"Wert geschrieben."
  201.         LCALL WAIT_KEY
  202.         POP_DPTR
  203.         POP B
  204.         POP ACC
  205.         POP PSW
  206.         RET
  207.  
  208. ;---------------------------------------------------------------------
  209. ; Funktion : Lesen aus Speicher
  210. ; Aufrufparameter : -
  211. ; Ruechgabeparameter : -
  212. ; Veraenderte Register :
  213. ; Stackbedarf :
  214. ; Zeitbedarf :
  215. ;
  216.  
  217. LESEN:
  218.         PUSH PSW
  219.         PUSH ACC
  220.         PUSH B
  221.         PUSH_DPTR
  222.         LCALL LCD_CLEAR
  223.         LCD 0h,"Leseadr.="
  224.         LCALL IN_DPTR
  225.         LCALL ACC_RD_MEM
  226.         LCD 40h,"Wert    ="
  227.         LCALL A_LCD
  228.         LCALL WAIT_KEY
  229.         POP_DPTR
  230.         POP B
  231.         POP ACC
  232.         POP PSW
  233.         RET
  234.  
  235. ;---------------------------------------------------------------------
  236. ; Funktion : Speicher auf PC schreiben
  237. ; Aufrufparameter : -
  238. ; Ruechgabeparameter : -
  239. ; Veraenderte Register :
  240. ; Stackbedarf :
  241. ; Zeitbedarf :
  242. ;
  243.  
  244. WR_PC:
  245.         LCALL LCD_CLEAR
  246.         LCD 0h,"Speicher auf PC"
  247.         LCALL WR_MEM_PC
  248.         LCD 40h,"o.k."
  249.         LCALL WAIT_KEY
  250.         RET
  251.  
  252. ;---------------------------------------------------------------------
  253. ; Funktion : Speicher initialisieren
  254. ; Aufrufparameter : -
  255. ; Ruechgabeparameter : -
  256. ; Veraenderte Register :
  257. ; Stackbedarf :
  258. ; Zeitbedarf :
  259. ;
  260.  
  261. SPEICHER_INIT:
  262.         LCALL LCD_CLEAR
  263.         LCD 0h,"Speicher initialisieren"
  264.         LCALL INIT_MEM
  265.         LCD 40h,"o.k."
  266.         LCALL WAIT_KEY
  267.         RET
  268.  
  269. ;---------------------------------------------------------------------
  270. ; Funktion : Speicher zum lesen zuruecksetzen
  271. ; Aufrufparameter : -
  272. ; Ruechgabeparameter : -
  273. ; Veraenderte Register :
  274. ; Stackbedarf :
  275. ; Zeitbedarf :
  276. ;
  277.  
  278. RESET:
  279.         LCALL LCD_CLEAR
  280.         LCD 0h,"Speicher reset"
  281.         LCALL RESET_MEM
  282.         LCD 40h,"o.k."
  283.         LCALL WAIT_KEY
  284.         RET
  285.  
  286. ;---------------------------------------------------------------------
  287. ; Funktion : Element aus Speicher lesen.
  288. ; Aufrufparameter : -
  289. ; Ruechgabeparameter : -
  290. ; Veraenderte Register :
  291. ; Stackbedarf :
  292. ; Zeitbedarf :
  293. ;
  294.  
  295. GET:
  296.         PUSH_DPTR
  297.         LCALL LCD_CLEAR
  298.         LCD 0h,"Element lesen von:"
  299.         GET_16 RD_POINTER
  300.         LCALL DPTR_LCD
  301.         LCALL GET_ELEMENT_MEM
  302.         JC GET_ERROR
  303.         LCD 40h,"o.k. ACC="
  304.         LCALL A_LCD
  305.         LCALL WAIT_KEY
  306.         POP_DPTR
  307.         RET
  308.  
  309. GET_ERROR:
  310.         LCD 40h,"Fehler."
  311.         LCALL WAIT_KEY
  312.         POP_DPTR
  313.         RET
  314.  
  315. ;---------------------------------------------------------------------
  316. ; Funktion : Element in den Speicher schreiben
  317. ; Aufrufparameter : -
  318. ; Ruechgabeparameter : -
  319. ; Veraenderte Register :
  320. ; Stackbedarf :
  321. ; Zeitbedarf :
  322. ;
  323.  
  324. PUT:
  325.         PUSH_DPTR
  326.         LCALL LCD_CLEAR
  327.         LCD 0h,"Element schreiben ab:"
  328.         GET_16 NEXT_FREE
  329.         LCALL DPTR_LCD
  330.         LCD 20h,"ACC="
  331.         LCALL IN_ACC
  332.  
  333.         LCALL PUT_ELEMENT_MEM
  334.         JC PUT_ERROR
  335.         LCD 40h,"o.k."
  336.         LCALL WAIT_KEY
  337.         POP_DPTR
  338.         RET
  339.  
  340. PUT_ERROR:
  341.         LCD 40h,"Fehler."
  342.         LCALL WAIT_KEY
  343.         POP_DPTR
  344.         RET
  345.  
  346. ;---------------------------------------------------------------------
  347. ; Funktion : Speicher von PC lesen
  348. ; Aufrufparameter : -
  349. ; Ruechgabeparameter : -
  350. ; Veraenderte Register :
  351. ; Stackbedarf :
  352. ; Zeitbedarf :
  353. ;
  354.  
  355. RD_PC:
  356.         PUSH_DPTR
  357.         LCALL LCD_CLEAR
  358.         LCD 0h,"Speicher von PC"
  359.         CLR READY
  360.         LCALL RD_MEM_PC
  361. RD_PC_LOOP:
  362.         JNB MSG,$
  363.         LCALL MEM_SCHEDULER
  364.         JNB READY,RD_PC_LOOP
  365.         JB CRC,RD_PC_ERROR
  366.         LCD 10h,"o.k."
  367.         LCALL WAIT_KEY
  368.         POP_DPTR
  369.         RET
  370.  
  371. RD_PC_ERROR:
  372.         LCD 10h,"CRC- Fehler beim laden."
  373.         LCALL WAIT_KEY
  374.         POP_DPTR
  375.         RET
  376.  
  377. ;---------------------------------------------------------------------
  378. ; Funktion : Zeiger setzen
  379. ; Aufrufparameter : -
  380. ; Ruechgabeparameter : -
  381. ; Veraenderte Register :
  382. ; Stackbedarf :
  383. ; Zeitbedarf :
  384. ;
  385.  
  386. SET_NEXT_FREE:
  387.         PUSH_DPTR
  388.         LCALL LCD_CLEAR
  389.         LCD 0h,"next_free="
  390.         lcall IN_DPTR
  391.         SET_16 NEXT_FREE
  392.         LCALL WAIT_KEY
  393.         POP_DPTR
  394.         RET
  395.  
  396. SET_RD_POINTER:
  397.         PUSH_DPTR
  398.         LCALL LCD_CLEAR
  399.         LCD 0h,"RD_POINTER="
  400.         lcall IN_DPTR
  401.         SET_16 RD_POINTER
  402.         LCALL WAIT_KEY
  403.         POP_DPTR
  404.         RET
  405.  
  406. ;---------------------------------------------------------------------
  407. ; Funktion : Msg_Handler_Test
  408. ; Aufrufparameter : -
  409. ; Ruechgabeparameter : -
  410. ; Veraenderte Register :
  411. ; Stackbedarf :
  412. ; Zeitbedarf :
  413. ;
  414. ; ****************************************************************************
  415. ; R0    EmpfДnger (logische Adresse)
  416. ; R1    Message
  417. ; R2 - R7 Parameter
  418. ; ****************************************************************************
  419.  
  420. Msg_Handler_Test:
  421.         PUSH ACC
  422.         PUSH AR0
  423.         PUSH AR1
  424.         LCALL LCD_CLEAR
  425.         LCD 0h,"Msg_Handler_Test"
  426.         LCD 16h,"R0="
  427.         LCALL IN_ACC
  428.         MOV R0,A
  429.         LCD 20h,"R1="
  430.         LCALL IN_ACC
  431.         MOV R1,A
  432.         LCALL Dispatch_Msg
  433.         POP AR1
  434.         POP AR0
  435.         POP ACC
  436.         ret
  437.  
  438. ;---------------------------------------------------------------------
  439. ; Funktion : Testbit toggeln
  440. ; Aufrufparameter : -
  441. ; Ruechgabeparameter : -
  442. ; Veraenderte Register :
  443. ; Stackbedarf :
  444. ; Zeitbedarf :
  445. ;
  446.  
  447. T_TEST:
  448.         LCALL LCD_CLEAR
  449.         LCD 0h,"TEST"
  450.         LCALL WAIT_KEY
  451.         CPL TESTBIT
  452.         ret
  453.  
  454. ;---------------------------------------------------------------------
  455. ; Funktion : Test RUN- Manager
  456. ; Aufrufparameter : -
  457. ; Ruechgabeparameter : -
  458. ; Veraenderte Register :
  459. ; Stackbedarf :
  460. ; Zeitbedarf :
  461. ;
  462.  
  463. TEST_RUN:
  464.         LCD 0h,"TEST RUN_ Manager"
  465.         LCALL WAIT_KEY
  466.         LCALL START_RUNNING
  467.         LCALL LCD_CLEAR
  468.         ret
  469.  
  470. ;---------------------------------------------------------------------
  471. ; Funktion : Debuger fuer das Speichermodul
  472. ; Aufrufparameter : -
  473. ; Ruechgabeparameter : -
  474. ; Veraenderte Register :
  475. ; Stackbedarf :
  476. ; Zeitbedarf :
  477. ;
  478.  
  479. DEBUG_MEM:
  480.         mov a,#1
  481.         lcall lcd_curser_onoff
  482.  
  483. DEBUG_START:
  484.         LCALL LCD_CLEAR
  485.         LCD 0,"DEBUG SPEICHERMODUL "
  486. DEBUG_LOOP:
  487.         JNB KB_CHAR_READY,DEBUG3
  488.         LJMP DEBUG1
  489. DEBUG3:
  490.         LJMP DEBUG_LOOP
  491.  
  492. DEBUG1: CLR KB_CHAR_READY
  493.         MOV A,KB_CHAR_BUFFER
  494.         LCALL LCD_WRITE_CHAR
  495.         LCALL UPCASE
  496.         IFCALL 'A',ADRESSEN
  497.         IFCALL 'B',LOAD_ROB
  498.         IFCALL 'C',LOAD_FRAES
  499.         IFCALL 'D',DUMP
  500.         IFCALL 'E',Msg_Handler_Test
  501.         IFCALL 'F',FUELLEN
  502.         IFCALL 'G',GET
  503.         IFCALL 'H',SAVE_ROB
  504.         IFCALL 'I',SAVE_FRAES
  505.         IFCALL 'J',SPEICHER_INIT
  506.         IFCALL 'K',T_TEST
  507.         IFCALL 'L',LESEN
  508.         IFCALL 'M',STORE_ROB
  509.         IFCALL 'O',RESET
  510.         IFCALL 'P',PUT
  511.         IFMAKE 'Q',LJMP DEBUG_ENDE
  512.         IFCALL 'R',RD_PC
  513.         IFCALL 'S',SCHREIBEN
  514.         IFCALL 'T',TEST_RUN
  515.         IFCALL 'U',SET_RD_POINTER
  516.         IFCALL 'W',WR_PC
  517.         IFCALL 'X',DEBUG_SYNC
  518.         IFCALL 'Y',STORE_SYNC
  519.         IFCALL 'Z',SET_NEXT_FREE
  520.  
  521.         ljmp DEBUG_START
  522.  
  523. DEBUG_ENDE:
  524.  
  525.         LCALL LCD_CLEAR
  526.         ret
  527.  
  528. ;=====================================================================
  529. ;        END
  530. ;---------------------------------------------------------------------
  531.  
  532.  
  533.