Vectrex Programming TOC

Appendix A

List of Vectrex ROM functions:
(by Bruce Tomlin, modified by Christopher Salomon)

Functionally ordered:

Overview of functional classes

1. Calibration/vector reset functions
2. Counter handling functions
3. Day to day functions
4. Delay functions
5. Drawing functions

5.1 Dot functions
5.2 String functions
5.3 Vector functions

5.3.1 Drawing only
5.3.2 Drawing and moving

6. Mathematical functions
7. Memory managment

7.1 Memory clear functions
7.2 Memory copy functions
7.3 Memory fill functions

8. Joystick handling functions
9. Player option functions
10. Reset and initializition functions
11. Score functions
12. Sound functions
13. Vector beam positioning functions
14. Vector brightness functions
15. Vector object handling functions

15.1. Object collision detection functions
15.2 Rotating functions

1. Calibration/vector reset functions

Check0Ref ($F34F)
Recalibrate ($F2E6)
Reset_Pen ($F35B)
Reset0Int ($F36B)
Reset0Ref ($F354)
Reset0Ref_D0 ($F34A)
Set_Refresh ($F1A2)
Wait_Recal ($F192)

2. Counter handling functions

Dec_3_Counters ($F55A)
Dec_6_Counters ($F55E)
Dec_Counters ($F563)

3. Day to day functions

Bitmask_a ($F57E)
Dec_3_Counters ($F55A)
Dec_6_Counters ($F55E)
Dec_Counters ($F563)
DP_to_C8 ($F1AF)
DP_to_D0 ($F1AA)
Print_Ships_x ($F391)
Print_Ships ($F393)
Random ($F517)
Random_3 ($F511)

4. Delay functions

Delay_0 ($F579)
Delay_1 ($F575)
Delay_2 ($F571)
Delay_3 ($F56D)
Delay_b ($F57A)
Delay_RTS ($F57D)

5. Drawing functions

5.1 Dot functions

Dot_d ($F2C3)
Dot_here ($F2C5)
Dot_ix_b ($F2BE)
Dot_ix ($F2C1)
Dot_List ($F2D5)
Dot_List_Reset ($F2DE)

5.2 String functions

Print_Str_d ($F37A)
Print_List ($F38A)
Print_List_chk ($F38C)
Print_List_hw ($F385)
Print_Str ($F495)
Print_Str_hwyx ($F373)
Print_Str_yx ($F378)

5.3 Vector functions

5.3.1 Drawing only

Draw_Grid_VL ($FF9F)
Draw_Line_d ($F3DF)
Draw_Pat_VL ($F437)
Draw_Pat_VL_a ($F434)
Draw_Pat_VL_d ($F439)
Draw_VL ($F3DD)
Draw_VL_a ($F3DA)
Draw_VL_ab ($F3D8)
Draw_VL_b ($F3D2)
Draw_VL_mode ($F46E)
Draw_VLc ($F3CE)
Draw_VLcs ($F3D6)
Draw_VLp ($F410)
Draw_VLp_7F ($F408)
Draw_VLp_b ($F40E)
Draw_VLp_FF ($F404)
Draw_VLp_scale ($F40C)

5.3.2 Drawing and moving

Mov_Draw_VL ($F3BC)
Mov_Draw_VL_ab ($F3B7)
Mov_Draw_VL_a ($F3B9)
Mov_Draw_VL_d ($F3BE)
Mov_Draw_VLc_a ($F3AD)
Mov_Draw_VLc_b ($F3B1)
Mov_Draw_VLcs ($F3B5)

6. Mathematical functions

Abs_a_b ($F584)
Abs_b ($F58B)
Bitmask_a ($F57E)

7. Memory managment

7.1 Memory clear functions

Clear_C8_RAM ($F542)
Clear_x_b ($F53F)
Clear_x_d ($F548)
Clear_x_256 ($F545)
Clear_Score ($F84F)
Clear_Sound ($F272)

7.2 Memory copy functions

Move_Mem_a ($F683)
Move_Mem_a_1 ($F67F)

7.3 Memory fill functions

Clear_x_b_80 ($F550)
Clear_x_b_a ($F552)

8. Joystick handling functions

Joy_Analog ($F1F5)
Joy_Digital ($F1F8)
Read_Btns_Mask ($F1B4)
Read_Btns ($F1BA)

9. Player option functions

Display_Option ($F835)
Select_Game ($F7A9)

10. Reset and initializition functions

Cold_Start ($F000)
Init_OS ($F18B)
Init_OS_RAM ($F164)
Init_VIA ($F14C)
Recalibrate ($F2E6)
Reset_Pen ($F35B)
Reset0Int ($F36B)
Reset0Ref ($F354)
Reset0Ref_D0 ($F34A)
Wait_Recal ($F192)
Warm_Start ($F06C)

11. Score functions

Add_Score_a ($F85E)
Add_Score_d ($F87C)
Clear_Score ($F84F)
Compare_Score ($F8C7)
New_High_Score ($F8D8)
Strip_Zeros ($F8B7)

12. Sound functions

Clear_Sound ($F272)
Do_Sound ($F289)
Do_Sound_x ($F28C)
Init_Music ($F68D)
Init_Music_Buf ($F533)
Init_Music_chk ($F687)
Init_Music_dft ($F692)
Explosion_Snd ($F92E)
Sound_Byte ($F256)
Sound_Byte_x ($F259)
Sound_Byte_raw ($F25B)
Sound_Bytes ($F27D)
Sound_Bytes_x ($F284)

13. Vector beam positioning functions

Check0Ref ($F34F)
Moveto_d ($F312)
Moveto_d_7F ($F2FC)
Moveto_ix ($F310)
Moveto_ix_7F ($F30C)
Moveto_ix_b ($F30E)
Moveto_ix_FF ($F308)
Moveto_x_7F ($F2F2)
Reset_Pen ($F35B)
Reset0Int ($F36B)
Reset0Ref ($F354)
Reset0Ref_D0 ($F34A)
Wait_Recal ($F192)

14. Vector brightness functions

Intensity_1F ($F29D)
Intensity_3F ($F2A1)
Intensity_5F ($F2A5)
Intensity_7F ($F2A9)
Intensity_a ($F2AB)
Reset_Pen ($F35B)
Wait_Recal ($F192)

15. Vector object handling functions

15.1 Object collision detection functions

Obj_Hit ($F8FF)
Obj_Will_Hit ($F8F3)
Obj_Will_Hit_u ($F8E5)

15.2 Rotating functions

Get_Rise_Idx ($F5D9)
Get_Run_Idx ($F5DB)
Rise_Run_Angle ($F593)
Rise_Run_Idx ($F5EF)
Rise_Run_Len ($F603)
Rise_Run_X ($F5FF)
Rise_Run_Y ($F601)
Rot_VL ($F616)
Rot_VL_ab ($F610)
Rot_VL_M_dft ($F62B)
Rot_VL_Mode ($F61F)
Xform_Rise ($F663)
Xform_Rise_a ($F661)
Xform_Run ($F65D)
Xform_Run_a ($F65B)

Alphabetically ordered:

A
Abs_a_b ($F584)
Abs_b ($F58B)
Add_Score_a ($F85E)
Add_Score_d ($F87C)

B
Bitmask_a ($F57E)

C
Check0Ref ($F34F)
Clear_C8_RAM ($F542)
Clear_Score ($F84F)
Clear_Sound ($F272)
Clear_x_256 ($F545)
Clear_x_b ($F53F)
Clear_x_b_80 ($F550)
Clear_x_b_a ($F552)
Clear_x_d ($F548)
Cold_Start ($F000)
Compare_Score ($F8C7)

D
Dec_3_Counters ($F55A)
Dec_6_Counters ($F55E)
Dec_Counters ($F563)
Delay_0 ($F579)
Delay_1 ($F575)
Delay_2 ($F571)
Delay_3 ($F56D)
Delay_b ($F57A)
Delay_RTS ($F57D)
Display_Option ($F835)
Do_Sound ($F289)
Do_Sound_x ($F28C)
Dot_d ($F2C3)
Dot_here ($F2C5)
Dot_ix_b ($F2BE)
Dot_ix ($F2C1)
Dot_List ($F2D5)
Dot_List_Reset ($F2DE)
DP_to_C8 ($F1AF)
DP_to_D0 ($F1AA)
Draw_Grid_VL ($FF9F)
Draw_Line_d ($F3DF)
Draw_Pat_VL ($F437)
Draw_Pat_VL_a ($F434)
Draw_Pat_VL_d ($F439)
Draw_VL ($F3DD)
Draw_VL_a ($F3DA)
Draw_VL_ab ($F3D8)
Draw_VL_b ($F3D2)
Draw_VL_mode ($F46E)
Draw_VLc ($F3CE)
Draw_VLcs ($F3D6)
Draw_VLp ($F410)
Draw_VLp_7F ($F408)
Draw_VLp_b ($F40E)
Draw_VLp_FF ($F404)
Draw_VLp_scale ($F40C)

E
Explosion_Snd ($F92E)

G
Get_Rise_Idx ($F5D9)
Get_Run_Idx ($F5DB)

I
Init_Music ($F68D)
Init_Music_Buf ($F533)
Init_Music_chk ($F687)
Init_Music_dft ($F692)
Init_OS ($F18B)
Init_OS_RAM ($F164)
Init_VIA ($F14C)
Intensity_1F ($F29D)
Intensity_3F ($F2A1)
Intensity_5F ($F2A5)
Intensity_7F ($F2A9)
Intensity_a ($F2AB)

J
Joy_Analog ($F1F5)
Joy_Digital ($F1F8)

M
Mov_Draw_VL ($F3BC)
Mov_Draw_VL_ab ($F3B7)
Mov_Draw_VL_a ($F3B9)
Mov_Draw_VL_d ($F3BE)
Mov_Draw_VLc_a ($F3AD)
Mov_Draw_VLc_b ($F3B1)
Mov_Draw_VLcs ($F3B5)
Move_Mem_a ($F683)
Move_Mem_a_1 ($F67F)
Moveto_d ($F312)
Moveto_d_7F ($F2FC)
Moveto_ix ($F310)
Moveto_ix_7F ($F30C)
Moveto_ix_b ($F30E)
Moveto_ix_FF ($F308)
Moveto_x_7F ($F2F2)

N
New_High_Score ($F8D8)

O
Obj_Hit ($F8FF)
Obj_Will_Hit ($F8F3)
Obj_Will_Hit_u ($F8E5)

P
Print_Str_d ($F37A)
Print_List ($F38A)
Print_List_chk ($F38C)
Print_List_hw ($F385)
Print_Ships_x ($F391)
Print_Ships ($F393)
Print_Str ($F495)
Print_Str_hwyx ($F373)
Print_Str_yx ($F378)

R
Random ($F517)
Random_3 ($F511)
Read_Btns_Mask ($F1B4)
Read_Btns ($F1BA)
Recalibrate ($F2E6)
Reset_Pen ($F35B)
Reset0Int ($F36B)
Reset0Ref ($F354)
Reset0Ref_D0 ($F34A)
Rise_Run_Angle ($F593)
Rise_Run_Idx ($F5EF)
Rise_Run_Len ($F603)
Rise_Run_X ($F5FF)
Rise_Run_Y ($F601)
Rot_VL ($F616)
Rot_VL_ab ($F610)
Rot_VL_M_dft ($F62B)
Rot_VL_Mode ($F61F)

S
Select_Game ($F7A9)
Set_Refresh ($F1A2)
Sound_Byte ($F256)
Sound_Byte_x ($F259)
Sound_Byte_raw ($F25B)
Sound_Bytes ($F27D)
Sound_Bytes_x ($F284)
Strip_Zeros ($F8B7)

W
Wait_Recal ($F192)
Warm_Start ($F06C)

X
Xform_Rise ($F663)
Xform_Rise_a ($F661)
Xform_Run ($F65D)
Xform_Run_a ($F65B)

Other Rom Addresses

$F9DC Bit_Masks
$F9E4 Music_Table_1
$F9EA Music_Table_2
$F9F0 Recal_Points
$F9F4 Char_Table
$FC24 angle_data1
$FC2C angle_data2
$FC6D rotation_pair_table
$FC8D Freq_Table
$FD0D power-on music and music for Crazy Coaster and Narrow Escape
$FD1D music for Berzerk
$FD69 ADSR table for Berzerk and FF7A
$FD79 twang table for Berzerk and Scramble
$FD81 music
$FDC3 ADSR table for FD81 and FF8F
$FDD3 music for Scramble
$FE28 ADSR table for Scramble, FF26, FF44, FF62
$FE38 music for Solar Quest
$FE66 ADSR table for Solar Quest
$FE76 music
$FEB2 ADSR table for FE76
$FEB6 "flat" twang table
$FEC6 music
$FEE8 ADSR table for FEC6
$FEF8 music for Melody Master
$FF16 ADSR table for FEF8
$FF26 music
$FF44 music
$FF62 music
$FF7A music
$FF8F music

ROM Reference (by Bruce Tomlin)

Addr    Name            DP      Inreg   Outreg  Trashreg
----    --------------- ---     ------- ------- --------
F000    Start           --              --      --
F06C    Warm_Start      --              --      --
F14C    INIT_VIA        =D0             DP      D,X
F164    Init_OS_RAM     =C8             DP      D,X
F18B    Init_OS         =D0             DP      D,X
F192    Wait_Recal      =D0             DP      D,X
F1A2    Set_Refresh     D0                      D
F1AA    DP_to_D0        =D0             A,DP
F1AF    DP_to_C8        =C8             A,DP
F1B4    Read_Btns_Mask  D0      A       A       B,X
F1BA    Read_Btns       D0              A       B,X
F1F5    Joy_Analog      D0                      D,X
F1F8    Joy_Digital     D0                      D,X
F256    Sound_Byte      D0              X       D
F259    Sound_Byte_x    D0      A,B,X           D
F25B    Sound_Byte_raw  D0
F272    Clear_Sound     D0                      D,X
F27D    Sound_Bytes     D0      U               D,X,U
F284    Sound_Bytes_x   D0      X,U             D,X,U
F289    Do_Sound        D0                      D,X,U
F28C    Do_Sound_x      D0                      D,X,U
F29D    Intensity_1F    D0                      D
F2A1    Intensity_3F    D0                      D
F2A5    Intensity_5F    D0                      D
F2A9    Intensity_7F    D0                      D
F2AB    Intensity_a     D0      A               D
F2BE    Dot_ix_b        D0      B,X             D
F2C1    Dot_ix          D0      X               D
F2C3    Dot_d           D0      A,B             D
F2C5    Dot_here        D0                      D
F2D5    Dot_List        D0      X       X       D
F2DE    Dot_List_Reset  D0      X       X       D
F2E6    Recalibrate     D0                      D,X
F2F2    Moveto_x_7F     D0      X               D
F2FC    Moveto_d_7F     D0      A,B             D
F308    Moveto_ix_FF    D0      X       X       D
F30C    Moveto_ix_7F    D0      X       X       D
F30E    Moveto_ix_a     D0      X,A     X       D
F310    Moveto_ix       D0      X       X       D
F312    Moveto_d        D0              A,B     D
F34A    Reset0Ref_D0    =D0             DP      D
F34F    Check0Ref       D0                      D
F354    Reset0Ref       D0                      D
F35B    Reset_Pen       D0                      D
F36B    Reset0Int       D0                      D
F373    Print_Str_hwyx  D0      U       U       D,X
F378    Print_Str_yx    D0      U       U       D,X
F37A    Print_Str_d     D0      A,B,U   U       D,X
F385    Print_List_hw   D0      U       U       D,X
F38A    Print_List      D0      U       U       D,X
F38C    Print_List_chk  D0      U       U       D,X
F391    Print_Ships_x   D0      A,B,X           D,X,U
F393    Print_Ships     D0      A,B,X           D,X,U
F3AD    Mov_Draw_VLc_a  D0      X       X       D       count y x y x ...
F3B1    Mov_Draw_VL_b   D0      B,X     X       D       y x y x ...
F3B5    Mov_Draw_VLcs   D0      X       X       D       count scale y x ...
F3B7    Mov_Draw_VL_ab  D0      A,B,X   X       D       y x y x ...
F3B9    Mov_Draw_VL_a   D0      A,X     X       D       y x y x ...
F3BC    Mov_Draw_VL     D0      X       X       D       y x y x ...
F3BE    Mov_Draw_VL_d   D0      D,X     X       D       y x y x ...
F3CE    Draw_VLc        D0      X       X       D       count y x y x ...
F3D2    Draw_VL_b       D0      B,X     X       D       y x y x ...
F3D6    Draw_VLcs       D0      X       X       D       count scale y x ...
F3D8    Draw_VL_ab      D0      A,B,X   X       D       y x y x ...
F3DA    Draw_VL_a       D0      A,X     X       D       y x y x ...
F3DD    Draw_VL         D0      X       X       D       y x y x ...
F3DF    Draw_Line_d     D0      A,B     X       D       y x y x ...
F404    Draw_VLp_FF     D0      X       X       D       pat y x ... $01
F408    Draw_VLp_7F     D0      X       X       D       pat y x ... $01
F40C    Draw_VLp_scale  D0      X       X       D       scale pat y x ... $01
F40E    Draw_VLp_b      D0      B,X     X       D       pat y x ... $01
F410    Draw_VLp        D0      X       X       D       pat y x ... $01
F434    Draw_Pat_VL_a   D0      A,X     X       D       y x y x ...
F437    Draw_Pat_VL     D0      X       X       D       y x y x ...
F439    Draw_Pat_VL_d   D0      D,X     X       D       y x y x ...
F46E    Draw_VL_mode    D0      X       X       D       mode y x ... $01
F495    Print_Str       D0      U       U       D,X
F511    Random_3        --              A
F517    Random          --              A
F533    Init_Music_Buf  --                      D,X
F53F    Clear_x_b       --      B,X     D
F542    Clear_C8_RAM    --              D,X
F545    Clear_x_256     --      X       D
F548    Clear_x_d       --      D,X     D
F550    Clear_x_b_80    --      B,X     A,B
F552    Clear_x_b_a     --      A,B,X   B
F55A    Dec_3_Counters  --              X,B
F55E    Dec_6_Counters  --              X,B
F563    Dec_Counters    --      B,X     B
F56D    Delay_3         --              B               30 cycles
F571    Delay_2         --              B               25 cycles
F575    Delay_1         --              B               20 cycles
F579    Delay_0         --              B               12 cycles
F57A    Delay_b         --      B       B               5*B + 10 cycles
F57D    Delay_RTS       --                              5 cycles
F57E    Bitmask_a       --      A       A       X
F584    Abs_a_b         --      A,B     A,B
F58B    Abs_b           --      B       B
F593    Rise_Run_Angle  C8      A,B     A,B
F5D9    Get_Rise_Idx    --      A       A,B     X
F5DB    Get_Run_Idx     --      A       A,B     X
F5EF    Rise_Run_Idx    C8                      D
F5FF    Rise_Run_X      C8      A,B
F601    Rise_Run_Y      C8      A,B
F603    Rise_Run_Len    C8      A,B     A,B
F610    Rot_VL_ab       =C8     A,B,X,U DP,X,U  D       y x y x ...
F616    Rot_VL          =C8     X,U     DP,X,U  D       y x y x ...
F61F    Rot_VL_Mode     C8      A,X,U   X,U     D       mode y x ... $01
F62B    Rot_VL_M_dft    C8      X,U     X,U     D       mode y x ... $01
F65B    Xform_Run_a     C8      A       A       B
F65D    Xform_Run       C8              A       B
F661    Xform_Rise_a    C8      A       A       B
F663    Xform_Rise      C8              A       B
F67F    Move_Mem_a_1    --      A,X,U   A,B
F683    Move_Mem_a      --      A,X,U   A,B
F687    Init_Music_chk  C8      U               D,X,Y,U
F68D    Init_Music      C8      U               D,X,Y,U
F692    Init_Music_dft  C8      U               D,X,Y,U
F7A9    Select_Game     =C8     A,B     DP      D,X,Y
F835    Display_Option  D0      A,Y             D,X,U
F84F    Clear_Score     --      X               D
F85E    Add_Score_a     --      A,X,U           D
F87C    Add_Score_d     --      D,X,U           D
F8B7    Strip_Zeros     --      B,X             D
F8C7    Compare_Score   --      X,U     A       B
F8D8    New_High_Score  --      X,U             X,U,D
F8E5    Obj_Will_Hit_u  --      D,X,Y,U C-flag
F8F3    Obj_Will_Hit    --      D,X,Y,U C-flag
F8FF    Obj_Hit         --      D,X,Y   C-flag
F92E    Explosion_Snd   C8      U               D,X
FF9F    Draw_Grid_VL    D0      X,Y     X,Y     D

Vectrex Programming TOC