; ; 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