home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
term
/
adm3-150.asm
< prev
next >
Wrap
Assembly Source File
|
1994-07-13
|
2KB
|
88 lines
;
; termemu1.asm
; by charles shoemaker
; published in 4/81 byte mag.
;
; the lear siegler adm-3 emulator for the hazeltine
; 1500 terminal.
;
org 7fb4h ;fix cpm outch routine to jump here
jmp entry
;
org 8000h ;put after bios
;
entry: lda mode ;are we in the middle of something?
ora a
mov a,c ;get character to send, for compares
jz norm ;ordinary
jpe xy ;if jump taken, norm contains either 3 or 255
cpi '=' ;middle of xy address sequence
mvi a,0 ;preset error condition
sta mode
jnz zap ;something's wrong--print it and give up
mvi a,3 ;fix up
sta mode ;tell us next time
ret ;and back
;
norm: cpi 30 ;test for home character
jc nthome
jnz zap ;not a control character--send it
mvi c,18 ;get hazel's home character
jmp specl ;do it
nthome: cpi 11 ;is it up-cursor?
jz specl-1 ;quick trick
cpi 12 ;is it right-cursor?
jnz ntrght ;no---
mvi a,16 ;hazel's right-cursor
jmp zap
ntrght: cpi 27 ;is it escape-address cursor?
jnz ntesc
mvi a,1 ;tell us next time through
sta mode
ret
;
ntesc: cpi 26 ;is it clear screen?
jnz outch ;no, must be some other control character
inr c ;make 28, hazel's clear screen character
inr c
specl: mvi a,126 ;get her attention
call zap ;send the first character right away
outch: mov a,c ;retrieve original character
push psw ;stow it away
in 10h ;gotta check status
ani 2
jz outch+2
pop psw ;get it back
zap: out 11h ;send it
ret ;finally, return to caller
;
xy: jm final ;we know we have 'esc' '=' sequence
;see if this is x or y character
;take the jump if this is x
mov a,c ;just get y character
sta y ;and save it
mvi a,0ffh ;let us know what to do next time
sta mode
ret
;
final: push b ;save x character a minute
mvi c,17 ;get hazel's attention
call specl
pop b ;get'm back
mov a,c ;get x coordinate
sui 32 ;get rid of adm-3 bias
cpi 31 ;fix hazel's bias
jnc sendx ;ok as is
adi 96 ;hazel likes this better
sendx: call outch+1 ;send x
xra a ;fix mode up--back to normal
sta mode
lda y ;adm-3 bias ok for hazel
jmp outch+1 ;send it and go home
;
mode: db 0
y: db 0
;
end