General Information
Author: Leo Laporte
Language: ACTION!
Compiler/Interpreter: ACTION!
Published: 10/19/83
; Atari LOGO
; Translated from the BASIC
; by Leo Laporte, 10/19/83


PROC fuji()

  BYTE top, bottom, xpos, cntr = [0]

  BYTE ARRAY data = 
  [ 37 41 43 45 46 29 48 35 49 37 50
	 39 51 41 52 43 53 44 54 45 55 46 
	 55 47 56 48 57 48 57 49 58 49 58
	 50 59 50 59 51 59 51 59 52 60 52
	 60 52 60 52 60 52 60 52 60 52 60 ]

  CARD x

  color = 1

  top = 5
  bottom = 61

  FOR xpos = 80 TO 84
	 DO
		Plot(xpos, top)
		Drawto(xpos, bottom)
		Plot(160-xpos, top)
		Drawto(160-xpos, bottom)
	 OD
									
  FOR xpos = 86 TO 115
	 DO
		IF xpos > 90 THEN
		  top = data(cntr) cntr ==+ 1
		FI

		bottom = data(cntr) cntr ==+ 1
	  
		Plot(xpos, top)
		Drawto(xpos, bottom)
		Plot(160-xpos, top)
		Drawto(160-xpos, bottom)
	 OD

RETURN

PROC letters()

	BYTE x,y,i

	CARD cntr=[0]

	BYTE ARRAY atari = [
	  49 55 61 76 81 87 93 104 0
	  48 56 61 76 80 88 93 105 0
	  47 57 61 76 79 89 93 106 0
	  46 58 61 76 78 90 93 107 0
	  45 50 54 59 67 70 77 82 86 91 93 96 103 108 0
	  45 49 55 59 67 70 77 81 87 91 93 96 104 108 0
	  45 48 56 59 67 70 77 80 88 91 93 96 104 108 0
	  45 48 56 59 67 70 77 80 88 91 93 96 104 108 0
	  45 48 56 59 67 70 77 80 88 91 93 96 104 108 0
	  45 48 56 59 67 70 77 80 88 91 93 96 103 108 0
	  45 59 67 70 77 91 93 107 0
	  45 59 67 70 77 91 93 106 0
	  45 59 67 70 77 91 93 105 0
	  45 59 67 70 77 91 93 104 0
	  45 48 56 59 67 70 77 80 88 91 93 96 100 105 0
	  45 48 56 59 67 70 77 80 88 91 93 96 101 106 0
	  45 48 56 59 67 70 77 80 88 91 93 96 102 107 0
	  45 48 56 59 67 70 77 80 88 91 93 96 103 108 0
	  45 48 56 59 67 70 77 80 88 91 93 96 104 109 0
	  45 48 56 59 67 70 77 80 88 91 93 96 105 109 0 1 1 ]

	i = 66
	color = 1

	DO
	  x = atari(cntr) cntr ==+ 1

	  IF x = 0 THEN
		  x = 112
		  y = 115
		  Plot(x,i)
		  Drawto(y,i)
		  i ==+ 1

	  ELSE y = atari(cntr) cntr ==+ 1
		  IF x = 1 AND y = 1 THEN EXIT FI
		  Plot(x,i)
		  Drawto(y,i)
		  IF x = 112 THEN i ==+ 1 FI
	  FI
	OD

RETURN

PROC delay(BYTE time)

  BYTE jifs = 20

  jifs = 0

  DO	
  UNTIL (jifs >= time)
  OD

RETURN


PROC jingle()

  BYTE ARRAY music=
  [ 121  121  121  121 
     91   96  108  121  0 ] 

  BYTE note, cntr = [0]
	
  DO
	 note = music(cntr) cntr ==+ 1
	 IF note = 0 THEN EXIT FI
	 SndRst()
	 Delay(2)
	 Sound(0, note, 10, 8)
	 Delay(8)
  OD
  Delay(12)
  SndRst()

RETURN

PROC scroll()

  BYTE wsync = 54282,
		 vcount = 54283,
		 clr = 53270,
		 ch = 764,
		 cntr, chgclr = [0],
		 incclr, delay

  DO
	 FOR cntr = 1 TO 4 
		 DO
			incclr = chgclr
			FOR delay = 1 TO 9 DO OD
			DO
			  wsync = 0
			  clr = incclr
			  incclr ==+ 1
			UNTIL vcount & 128
			OD
		 OD
	 chgclr ==+ 1
  UNTIL ch <> 255 
  OD

RETURN




PROC main()

  Graphics(23)
  
  fuji()
  letters()
  jingle()
  scroll()

RETURN