bdos equ 5 rsxmast equ 87 tstr equ 9 cout equ 2 ; aseg org 0100h ; lxi h,0 dad sp lxi sp,stack push h mvi c,rsxmast lxi d,0 call bdos ora h lxi d,notup jz exit mvi c,tstr lxi d,vermsg call bdos mvi c,rsxmast lxi d,1 call bdos call tdec lxi d,endmsg exit: mvi c,tstr; put string call bdos pop h sphl ret ; notup: db 'BYERSX not running$' vermsg: db 'BYERSX ver. $' endmsg: db ' running$' ; ; output hl as 3 decimal chars, with "." between digits tdec: lxi b,-1000 tdec1: dad b jc tdec1; put in -1000..-1 range lxi b,100 mvi e,'9'+1 tdec2: dcr e dad b jnc tdec2 call putdig lxi b,-10 mvi e,'0'-1 tdec3: inr e dad b jc tdec3 call putdig mov a,l adi '0'+10 mov e,a putc: mvi c,cout; conout jmp bdos ; putdig: push h call putc mvi e,'.' call putc pop h ret ; ds 64 stack: end