home *** CD-ROM | disk | FTP | other *** search
- ;
- ; 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
-