Vectrex Programmers Guide
RUM Routines (By Function)
Function Categories
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 |
RATOR | $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 |
|