Incorrect waiting for vertical retrace on hercules machine. Look code:
-------------------------------------------------
mov dx,3BAh
wait_0:
in al,dx
test al,8
jnz wait_0
wait_1:
in al,dx
test al,8
jz wait_1
-------------------------------------------------
Look hgc.zip
Test program: hs_h.com
Results:
hs_h.gif -- MS-DOS video
hs_h_dosbox.gif -- DOSBox video
103BA R- CRT status register (see #P0656) 2 3Bitfields for mono video adapter CRT status register: 4Bit(s) Description (Table P0656) 5 7 HGC: vertical sync pulse in progress 6 6-4 adapter identification 7 (MSD says) if bit 7 changes within 8000h reads then 8 =000 adapter is Hercules or compatible 9 =001 adapter is Hercules+ 10 =101 adapter is Hercules InColor 11 else: adapter is unknown 12 6-4 =111 on MDA and some HGC clones 13 5-4 (mono EGA, mono ET4000) diagnose video display feedback 14 select from color plane enable 15 3 (MDA,HGC) pixel stream (0=currently black, 1=currently white) 16 (mono EGA, mono VGA) vertical retrace in progress 17 2-1 (MDA) reserved 18 2 (HGC, mono EGA) lightpen flipflop set 19 (mono ET4000) reserved (0) 20 1 (HGC) lightpen input stream (if set, current value to get from 21 PORT 03B5h registers 10h-11h) 22 (mono ET4000) reserved (0) 23 0 horizontal drive enabled
Don't know if vsync is working for the hercules machine type; but from the docs I have, it appears bit 7 should be tested (i.e. "test al,80h")
Thank you! On CGA, EGA, VGA and SVGA (all types) bit 3 is the v-sync signal.
In DOSBox 0.73 and earlier on hercules machine bit 3 is the v-sync signal too.