From RoadsideThoughts ...
A Bit of Vectrex History
 
Introduction
Programmer's
Guide
 
The RUM
 
Mine Storm
Fortress of
Narzod
 
Dark Tower
   
Sitemap
     
 

Vectrex Programmer's Guide

RUM Routines (By Function)


Function Categories


Initialization Routines 'RASTER' / Message Drawing Routines
Positioning / Intensity / Drawing Overhead Routines Controller / Joystick Routines
'DIFFY' Style Drawing Routines Rotate Routines
'DUFFY' Style Drawing Routines Math Routines
'DOT' Drawing Routines Miscellaneous Routines
'PACKET' Drawing Routines Sound-related Routines


NOTE: To be more consistent with how I code (and making them easier to remember), I renamed some of the RUM routines that I used in my games (via EQUs). If I don't show a different label, then I used the same label as defined by the RUM.

Initialization Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
INITALL $F18B INTALL Full Vectrex initialization
INITMSC $F164 INTMSC Initialize misc. parameters
INITPIA $F14C INTPIA Initialize PIA
INITPSG $F272 INTPSG Initialize sound generator
IREQ $F533 INTREQ Initialize the 'REQZ' area
POWER $F000 PWRUP Power-up handler

Positioning / Intensity / Drawing Overhead Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DEFLOK $F2E6 --- Overcome scan collapse circuitry
FRAM20 $F192 FRWAIT Wait for frame boundary
INT1Q $F29D --- Set beam intensity
INT3Q $F2A5 --- Set beam intensity
INTENS $F2AB --- Set beam intensity
INTMAX $F2A9 --- Set beam intensity
INTMID $F2A1 INT2Q Set beam intensity
POSIT1 $F30C --- Position relative vector
POSIT2 $F308 --- Position relative vector
POSITB $F30E --- Position relative vector
POSITD $F2FC --- Position relative vector
POSITN $F312 --- Position relative vector
POSITX $F310 --- Position relative vector
POSWID $F2F2 --- Position relative vector
ZEGO $F34F ZEGO Zero integrators and set active ground
ZEREF $F35B ZEREF Zero integrators and set active ground
ZERO.DP $F34A ZERO.DP Zero integrators and set active ground
ZERO. $F36B ZERO Zero integrators and set active ground
ZEROIT $F354 ZEROIT Zero integrators and set active ground

'DIFFY' Style Drawing Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DANROT $F610 DROT 'DIFFY' style rotate
DASHE $F433 DSHDF1 Draw dashed lines from 'DIFFY' list
DASHEL $F434 DSHDF Draw dashed lines from 'DIFFY' list
DASHY $F437 DASHDF Draw dashed lines from 'DIFFY' list
DIFFAB $F3DF --- Draw from 'DIFFY' style list
DIFFAX $F3CE --- Draw from 'DIFFY' style list
DIFFX $F3D8 TDIFFY Draw from 'DIFFY' style list
DIFFY $F3DD --- Draw from 'DIFFY' style list
DIFLST $F3D6 --- Draw from 'DIFFY' style list
DIFROT $F616 ADROT 'DIFFY' style rotate
DIFTIM $F3D2 --- Draw from 'DIFFY' style list
DIFTLS $F3DA LDIFFY Draw from 'DIFFY' style list
DISROT $F613 BDROT 'DIFFY' style rotate

'DUFFY' Style Drawing Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DUFFAB $F3BE --- Draw from 'DUFFY' style list
DUFFAX $F3AD --- Draw from 'DUFFY' style list
DUFFY $F3BC --- Draw from 'DUFFY' style list
DUFLST $F3B5 --- Draw from 'DUFFY' style list
DUFTIM $F3B1 --- Draw from 'DUFFY' style list

'DOT' Drawing Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DIFDOT $F2D5 --- Draw dots according to 'DIFFY' format
DOT $F2C --- Turn on beam for dot
DOTAB $F2C3 --- Draw one dot from the contents of 'A' & 'B'
DOTPAK $F2DE DOTPCK Draw dots according to 'PACKET' format
DOTTIM $F2BE --- Draw one dot from 'DIFFY' style list
DOTX $F2C1 --- Draw one dot from 'DIFFY' style list

'PACKET' Style Drawing Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DASHY3 $F46E DASHPK Draw dashed lines from 'PACKET' list
PAC1X $F408 PACK1X Draw from 'PACKET' style list
PAC2X $F404 PACK2X Draw from 'PACKET' style list
PACB $F40E TPACK Draw from 'PACKET' list
PACKET $F410 --- Draw from 'PACKET' list
PACXX $F40C LPACK Draw from 'PACKET' style list
POTATA $F61F PROT 'PACKET' style rotate
POTATE $F622 APROT 'PACKET' style rotate

'RASTER' / Message Drawing Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
POSDRAS $F37A MSSPOS Display raster message
POSNRAS $F378 RSTPOS Display raster message
RASTER $F498 MRASTR Display raster string
RASTUR $F495 RASTER Display raster string
SADD $F87C SCRADD Add contents of 'B' to indicated score
SADD2 $F880 STKADD Add stack to indicated score
SHADD $F85E BYTADD Add contents of 'A' to indicated score
SHIPSAT $F391 SHIPX Display markers (count remaining)
SHIPSHO $F393 DSHIP Display markers (count remaining)
SIZPRAS $F373 RSTSIZ Display raster message
TEXPOS $F38C TXTPOS Display raster message
TEXSIZ $F385 TXTSIZ Display raster message

Controller / Joystick Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
ENPUT $F1B4 DBNCE Read controller buttones
HIGHSCR $F8D8 HISCR Calculate high score and save for logo
INPUT $F1BA --- Read controller buttones
OPTION $F7A9 SELOPT Fetch game options
PANG $F1F8 JOYBIT Read joystick
PBANG4 $F1F5 JOYSTK Read joystick
SCLR $F84F --- Clear indicated score
WINNER $F8C7 --- Determine highest score

Rotate Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
DANROT $F610 DROT 'DIFFY' style rotate
DIFROT $F616 ADROT 'DIFFY' style rotate
DISROT $F613 BDROT 'DIFFY' style rotate
POTATA $F61F PROT 'PACKET' style rotate
POTATE $F622 APROT 'PACKET' style rotate
RATOT $F5FF LROT90 Rotate a single line
ROTAR $F603 ALNROT Rotate a single line
ROTOR $F601 LNROT Rotate a single line

Math Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
ABSVAL $F584 ABSAB Form absolute value for 'A' & 'B' registers
AOK $F58B ABSB Form absolute value for 'B' register
BITE $F57E DECBIT Decode bit position
COMPAS $F593 CMPASS Return angle for given delta 'Y:X'
COSGET $F5D9 COSINE Calculate the cosine of 'A'
RAND3 $F511 --- Calculate new random number
RANDOM $F517 --- Calculate new random number
RCOS $F663 LCSINE Multiply 'LEG' by previous cosine value
RCOSA $F661 MCSINE Multiply 'A' by previous cosine value
RSIN $F65D LSINE Multiply 'LEG' by previous sine value
RSINA $F65B MSINE Multiply 'A' by previous sine value
SINCOS $F5EF --- Calculate the sine and cosine of 'ANGLE'
SINGET $F5DB SINE Calculate the sine of 'A'

Miscellaneous Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
BAGAUX $F67F BLKMV1 Xfer bytes source to destination buffer
CLR256 $F545 ---6 Set-up to clear 256 bytes
CLRMEM $F542 CLREX Clear 256 bytes starting at $C800
CLRSON $F53F BCLR Clear 'B' bytes
DEKR $F55E DECTMR Decrement interval timers
DEKR3 $F55A D3TMR Decrement interval timers
DEL $F57A --- Programmed delays
DEL13 $F57D --- Programmed delays
DEL20 $F579 --- Programmed delays
DEL28 $F575 --- Programmed delays
DEL33 $F571 --- Programmed delays
DEL38 $F56D --- Programmed delays
DPIO $F1AA --- Set direct register
DPRAM $F1AF --- Set direct register
FILL $F552 BLKFIL Set a block of memory
FINDBOX $F8FF BXTEST Symmetric collison test
GILL $F548 CLRBLK Clear a block of memory
NEGSOM $F550 CLR80 Set a block of memory to $80
OFF1BOX $F8E5 OFF1BX Symmetric collison test
OFF2BOX $F8F3 OFF2BX Symmetric collison test
STFAUX $F683 BLKMOV Xfer bytes source to destination buffer

Sound-related Routines


RUM
Subroutine
Entry
Point
Label Used By
Mine Storm
 

Function  
 
AXE $F92E EXPLOD Complex explosion sound effect
LOUDIN $F9CA SETAMP Complex explosion sound effect
NIBBY $FF9F --- Complex explosion sound effect
PSG $F259 WRPSG Write to PSG
PSGLPU $F284 PSGMIR Send sound string to PSG
PSGLUP $F27D PSGLST Send sound string to PSG
PSGX $F256 WRREG Write to PSG
REPLAY $F687 --- Set 'REQX' for given tune
REQOUT $F289 --- Send 'REQX' to PSG and mirror
SOPLAY $F690 ASPLAY Set 'REQX' for given tune
SPLAY $F68D --- Set 'REQX' for given tune
XPLAY $F742 --- Set 'REQX' for given tune
YOPLAY $F692 TPLAY Set 'REQX' for given tune


 
 
 
 
 
 

Home
Page
Sitemap Privacy
Statement
Terms
of Use
Feedback

 
 

Please keep in mind that we can not guarantee the accuracy or timeliness of the information on this website, so use with care. We encourage you to double-check the information that is critical to you.

If you've found an error or have additional information that you would like to share, please don't hesitate to write. Click here to contact us.

Copyright 2016
All Rights Reserved
This page was last modified: 12 Jan 2017
By John Hall