; ; REAL DUMB TERMINAL ECHO CHARACTER PROGRAM ; ; Version 1 (USE DIRECT ADDRESSING) ; STATUS EQU 1 ;RDT STATUS PORT DATA EQU 2 ;RDT DATA PORT INMASK EQU 0x80 ;STATUS PORT BIT D0 = 7 WHEN KEYBOARD CHARACTER DATA AVAILABLE OUTMASK EQU 0x40 ;STATUS PORT BIT D7 = 6 WHEN TERMINAL BUSY PROCESSING CHARACTER DATA ; ; PROGRAM SEGMENT BEGIN ; ORG 0X0000 ;PROGRAM START ADDRESS ; ; CRIN - STORE KEYBOARD CHARACTER IN MEMORY AT CHAR ; CHRIN: IN STATUS ;STATUS BYTE -> A ANI INMASK ;MASK DATA AVAILABLE BIT D0 JNZ CHRIN ;IF D0 = 1 THEN JUMP CHRIN (WAIT FOR DATA AVAILABLE) IN DATA ;KEYBOARD CHARACTER -> A STA CHAR ;KEYBOARD CHARACTER -> CHAR ; ; CHROUT - OUTPUT CHARACTER IN C TO RDT SCREEN ; CHROUT: IN STATUS ;STATUS BYTE -> A ANI OUTMASK ;MASK TERMINAL BUSY BIT D7 JNZ CHROUT ;IF D7 = 1 THEN JUMP CHROUT (WAIT FOR NOT BUSY) LDA CHAR ;KEYBOARD CHARACTER -> A OUT DATA ;OUTPUT KEYBOARD CHARACTER TO RDT SCREEN ; JMP CHRIN ;LOOP FOR NEXT CHARACTER ; ; PROGRAM SEGMENT END ; ; DATA SEGMENT BEGIN ; CHAR: DS 1 ; ; DATA SEGMENT END ;