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