Signetics 2650 & 2636 programming/Tutorial code
Tutorial code - Introduction
[edit | edit source]This section of the book contains all the code used in the tutorials.
The code below must be appended to every program before it can be assembled. It contains the equate direcitives that assign labels to all the hardware addresses and related constants. This is done both to avoid repetition and also to ensure consistent labelling of registers throughout this book.
Hardware definitions
[edit | edit source]This is a standard block of assembler directives that give names to constants and memory addresses of all the registers in the system. Notice that some addresses such as $1F00 have several labels. This allows the programmer to use the one most appropriate to the task being performed as an aid to making readable code. For example, if all the PVI registers are being initialised to 0, use pvi; if setting up object 1 shape and position use 'object1' etc.
; HARDWARE DEFINITIONS ; updated 11 Jan 2021 ;============================================================ ; PROCESSOR CONSTANTS ; ------------------- carrybit equ $01 compare equ $02 withcarry equ $08 registerselect equ $10 intinhibit equ $20 stackpointer equ $07 sense equ $80 flag equ $40 ; EFFECTS REGISTER ; ---------------- effects equ $1e80 ; BUTTONS ; -------- player1keys147c equ $1E88 ;player1 keypad, bits: 1,4,7,clear,x,x,x,x player1keys2580 equ $1E89 ;player1 keypad, bits: 2,5,8,0,x,x,x,x player1keys369e equ $1E8A ;player1 keypad, bits: 3,6,9,enter,x,x,x,x player2keys147c equ $1E8C ;player2 keypad, bits: 1,4,7,clear,x,x,x,x player2keys2580 equ $1E8D ;player2 keypad, bits: 2,5,8,0,x,x,x,x player2keys369e equ $1E8E ;player2 keypad, bits: 3,6,9,enter,x,x,x,x keymask123 equ $80 ;top row of keys keymask456 equ $40 keymask789 equ $20 keymaskc0e equ $10 ;bottom row of keys console equ $1E8B ;start and select buttons on console consolestart equ $40 consoleselect equ $80 ; PVI ADDRESSES AND CONSTANTS ; --------------------------- pvi equ $1F00 object1 equ $1F00 shape1 equ $1F00 hc1 equ $1F0A ; hc = Horizontal Coordinate hcd1 equ $1F0B ; hcd = Horizontal Coordinate Duplicate hcb1 equ $1F0B ; hcb = ditto (Signetics datasheet name) vc1 equ $1F0C ; vc = Vertical Coordinate voff1 equ $1F0D ; voff = Vertical Offset vcb1 equ $1F0D ; vcb = ditto (Signetics datasheet name) object2 equ $1F10 shape2 equ $1F10 hc2 equ $1F1A hcd2 equ $1F1B hcb2 equ $1FCB vc2 equ $1F1C voff2 equ $1F1D vcb2 equ $1F1D object3 equ $1F20 shape3 equ $1F20 hc3 equ $1F2A hcd3 equ $1F2B hcb3 equ $1F2B vc3 equ $1F2C voff3 equ $1F2D vcb3 equ $1F2D object4 equ $1F40 shape4 equ $1F40 hc4 equ $1F4A hcd4 equ $1F4B hcb4 equ $1F4B vc4 equ $1F4C voff4 equ $1F4D vcb4 equ $1F4D grid equ $1F80 ; background grid vbars equ $1F80 ; vertical bar definitions hbars equ $1FA8 ; horizontal bar extensions objectsize equ $1FC0 colours12 equ $1FC1 ; colour objects 1,2 colours34 equ $1FC2 ; colour objects 3,4 coloursback equ $1FC6 ; background grid colour / background grid enable / screen colour backgnd equ $1FC6 ; deprecated pitch equ $1FC7 scoreformat equ $1FC3 score12 equ $1FC8 score34 equ $1FC9 objectstatus equ $1FCA ; object-background collision / object complete obj1complete equ $08 obj2complete equ $04 obj3complete equ $02 obj4complete equ $01 collisions equ $1FCB ; VRLE / inter-object collision vrle equ $40 adpot1 equ $1FCC adpot2 equ $1FCD