59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
{-----------------------------------------------------------------------+
 | 
						|
|                                                                       |
 | 
						|
|       Reset Gigatron (pseudo) hardware                                |
 | 
						|
|                                                                       |
 | 
						|
+-----------------------------------------------------------------------}
 | 
						|
 | 
						|
gcl0x
 | 
						|
 | 
						|
{ Setup video }
 | 
						|
[def
 | 
						|
  { Setup video indirection table }
 | 
						|
  $100 p= {videoTable}
 | 
						|
  $800 q= {frame}
 | 
						|
  [do
 | 
						|
    q>,  p. p<++          { Y[i] = 8..127}
 | 
						|
    0    p. p<++          {dX[i] = 0}
 | 
						|
    q>++ q  if>0loop]
 | 
						|
 | 
						|
  ret
 | 
						|
] SetupVideo=
 | 
						|
 | 
						|
{ Play a note on one channel
 | 
						|
  High byte is channel, low byte is note (should be even)
 | 
						|
  Reset the oscillators and channel variables }
 | 
						|
[def {SetupChannel}
 | 
						|
  i= 255| 255^ $fa| p=          {Pointer to channel struct}
 | 
						|
  i<, i=                        {Extract note}
 | 
						|
  0 p. p<++                     {.wavA}
 | 
						|
  3 p. p<++                     {.wavX: 0 "Noise", 1 Triangle, 2 Pulse, 3 Sawtooth}
 | 
						|
  \notesTable i+ 0? p. p<++     {.keyL}
 | 
						|
  \notesTable i+ 1? p. p<++     {.keyH}
 | 
						|
  p. p<++                       {.oscL}
 | 
						|
  p.                            {.oscH}
 | 
						|
  ret
 | 
						|
] SetupChannel=
 | 
						|
 | 
						|
{ Setup a G-major chord with 4 channels but don't play it yet }
 | 
						|
[def {SetupAudio}
 | 
						|
  push
 | 
						|
  $158 {1: G-3} SetupChannel!
 | 
						|
  $270 {2: G-4} SetupChannel!
 | 
						|
  $378 {3: B-4} SetupChannel!
 | 
						|
  $47e {4: D-5} SetupChannel!
 | 
						|
  pop ret
 | 
						|
] SetupAudio=
 | 
						|
 | 
						|
{ Now it is safe to call functions }
 | 
						|
SetupAudio!
 | 
						|
SetupVideo!
 | 
						|
 | 
						|
{ Load and start main program }
 | 
						|
\Loader2 \sysArgs0= $200 \vLR= \SYS_Exec_88 \sysFn= 88!
 | 
						|
 | 
						|
{-----------------------------------------------------------------------+
 | 
						|
|                                                                       |
 | 
						|
+-----------------------------------------------------------------------}
 | 
						|
 |