Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ti83plus.inc"
- ;Deklarationen
- ;I/O ADRESSEN VON 00h - 07h
- ;OUTPUT
- UPPER_DISP EQU 00h
- LOWER_DISP EQU 01h
- DATA_DISP EQU 02h
- ;FREI
- PORT_06 EQU 06h
- PORT_07 EQU 07h
- ;INPUTA
- CMD_IN EQU 03h
- LOWER_IN EQU 04h
- UPPER_IN EQU 05h
- ;SPEICHER ADRESS DECODING
- ROM_TOP EQU 07fffh
- RAM_BOT EQU 08000h
- RAM_TOP EQU 0ffffh
- ;CMD`s
- WR_CMD EQU 00h
- INC_CMD EQU 02h
- DEC_CMD EQU 04h
- RD_CMD EQU 08h
- RUN_CMD EQU 010h
- Z_CMD EQU 020h
- STP_CMD EQU 040h
- RST_CMD EQU 080h
- ;--------------------------------------------1--------------------------------------------------
- ;BOOT
- org 0000h
- START:
- JP BOOT
- ;--------------------------------------------------------------------
- ; ROM ARESSSEN 0003-00FF SIND UNBENUTZT
- ;--------------------------------------------------------------------
- org 0100h
- BOOT: ; ALLE ANZEIGEN MIT "NULL" BESCHREIBEN
- LD A,00h
- LD C,UPPER_DISP
- OUT (C),A
- LD C,LOWER_DISP
- OUT (C),A
- LD C,DATA_DISP
- OUT (C),A
- NOP
- BOOTCHK:
- LD C,LOWER_IN
- IN A,(C)
- LD B,A
- LD C,01h
- SUB C
- JP Z,SER_BOOT
- ;--------------------------------------------------------------------
- ; START DES "BETRIEBSYTEMS"
- ;--------------------------------------------------------------------
- INIT:
- DI ;INTERRUPT AUSSCHALTEN
- JP RAMCLR ;RAM MIT "NULL" BESCHREIBEN
- ;--------------------------------------------2--------------------------------------------------
- LOOP:
- NOP
- GET_CMD:
- LD C,CMD_IN ;PORT ZU CMD-TASTEN ERÖFFNEN
- IN A,(C)
- LD B,A
- LD C,WR_CMD ;WRITE CMD
- SUB C
- JP Z,WR_DATA
- LD A,B
- LD C,INC_CMD ;INCREMENT CMD
- SUB C
- JP Z,INC_ADDR
- LD A,B
- LD C,DEC_CMD ;DECREMENT CMD
- SUB C
- JP Z,DEC_ADDR
- LD A,B
- LD C,RD_CMD ;READ CMD
- SUB C
- JP Z,RD_ADDR
- LD A,B
- LD C,RUN_CMD ;RUN CMD
- SUB C
- JP Z,RUN_ADDR
- LD A,B
- LD C,Z_CMD ;ZERO CMD
- SUB C
- JP Z,RAMCLR
- LD A,B
- LD C,STP_CMD ;STEP CMD
- SUB C
- JP Z,STEP_PROG:
- LD A,B
- LD C,RST_CMD ;RESET CMD
- SUB C
- JP Z,INIT
- JP LOOP
- ;--------------------------------------------3--------------------------------------------------
- WR_DATA:
- LD C,LOWER_IN
- IN A,(C)
- LD (HL),A
- JP DISPLAY
- INC_ADDR:
- INC HL
- JP DISPLAY
- DEC_ADDR:
- DEC HL
- JP DISPLAY
- RD_ADDR:
- LD C,UPPER_IN
- IN H,(C)
- LD C,LOWER_IN
- IN L,(C)
- JP DISPLAY
- RUN_ADDR:
- JP DISPLAY
- ;--------------------------------------------4--------------------------------------------------
- STEP_PROG:
- JP DISPLAY
- DISPLAY:
- LD C,UPPER_DISP
- OUT (C),H
- LD C,LOWER_DISP
- OUT (C),L
- LD C,DATA_DISP
- LD A,(HL)
- OUT (C),A
- DELAY: ;FÜR CIRCA 250ms
- LD BC,0ffffh ;ENTPRELLEN DER CMD-TASTEN
- DELAYL:
- DEC BC
- LD A,C
- OR B
- JR NZ,DELAYL
- JP LOOP
- RAMCLR:
- LD BC,ROM_TOP ;START ADRESSE RAM - 1
- RAMCLRL:
- INC BC
- LD A,00h
- LD (BC),A
- LD A,0ffh
- SUB B
- JR NZ,RAMCLRL
- LD A,0ffh
- SUB C
- JR NZ,RAMCLRL
- LD HL,RAM_BOT
- JP DISPLAY ;WENN FERTIG --> ZURÜCK ZU RAM BOT
- ;--------------------------------------------5--------------------------------------------------
- ;SERIAL
- SER_BOOT:
- LD C,UPPER_DISP
- LD A,05Eh
- OUT (C),A
- LD C,LOWER_DISP
- LD A,0A1h
- OUT (C),A
- LD C,DATA_DISP
- LD A,010h
- OUT (C),A
- EI
- NOP
- SER_INIT:
- NOP
- JP SER_INIT
- ;--------------------------------------------6--------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement