Main Routine (main.asm)
main proc far mov dx, cseg ; Initialize DS register mov ds, dx GMODE ; Begin graphics mode call NetRelease call NetInit mov MyNum, al call _initializeSoundSeg push dx push ax mov dx, offset black mov ax, 0 call dispSplash mov dx, offset Splash mov ax, 1 call dispSplash mov dx, offset hellowav call _playWav pop ax pop dx call kbdin call kbdInstall call PicInstall call initObjects call placePlayer BackToMenu: push dx mov dx, offset water mov midioffset, dx call playmidi pop dx call showMenu cmp ESCKey, 1 je closeProgram call initImageArrays call sendHello call stopmidi push dx mov dx, offset smack mov midioffset, dx pop dx call playmidi showc: cmp ThirtyHzCtr, 0 je CheckTwelveHz ; Following code will be executed 36 times/sec call calcThrustTurn call calcPlayerPos call calcObjects call calcBullets call calcBulletCollision call calcPlayerCollision mov ax, seg MyPlayerArray mov bx, offset MyPlayerArray CALL drawBackground call drawPlayers CALL DrawObjects Call DrawBullets CALL DrawHUD CALL CalcSonar call DumpBuffer call sendPlayerUpdate mov ThirtyHzCtr, 0 CheckTwelveHz: cmp TwelveHzCtr, 0 je CheckTwoSec ; Following code will be executed 12 times/sec call sendObjectUpdate cmp FireBulletFlag, 0 je noFire call FireBullet push dx mov dx, offset firewav call _playWav pop dx noFire: mov TwelveHzCtr, 0 CheckTwoSec: cmp TwoSecCtr, 0 je TimerCheckDone ;Following code will be executed every 2 sec call sendHello call repeatmidi mov TwoSecCtr, 0 TimerCheckDone: cmp EscKey, 0 Je showc mov EscKey, 0 jmp BackToMenu CloseProgram: call stopmidi call kbdUnInstall Call PICUnInstall ; Restore original INT8 call sendGoodBye TMODE call NetRelease MOV AX,4c00h ; Normal DOS Exit int 21h ret main endp cseg ends end main