add example action program
This commit is contained in:
parent
80d00ae1c3
commit
c11b09ce3b
@ -3,3 +3,500 @@
|
||||
[**Video Series**](https://rumble.com/playlists/ZLa9d1onaE0)
|
||||
|
||||
This series is ongoing. It began as an attempt to teach myself Action!, but has evolved into a continuous thing. My next extension to this project will involve [Thomas Cherryholmes Fujinet!](https://fujinet.online/) Keep an eye on this page, as I will be adding explanations, code samples, and other resource links here, to support the series.
|
||||
|
||||
---
|
||||
|
||||
**Print the Action! Language Logo**
|
||||
|
||||
<pre class="atari">
|
||||
|
||||
; CIS Notice:
|
||||
;
|
||||
; I am providing the program for you
|
||||
; to look at and maybe help you get
|
||||
; started with ACTION!. It was
|
||||
; written 'quick and dirty' and as
|
||||
; such does not have many comments
|
||||
; and is not the best of code in many
|
||||
; places. Feel free to show it to
|
||||
; anyone you like as long as you keep
|
||||
; the copyright notice.
|
||||
|
||||
; In case you are interested, this is
|
||||
; the company logo for Action
|
||||
; Computer Services (ACS).
|
||||
|
||||
;- Clinton Parker 70435,625
|
||||
|
||||
; PS: Hit ESC to exit program
|
||||
|
||||
|
||||
; Copyright 1983 by Action Computer Services
|
||||
|
||||
; last modified April 13, 1983
|
||||
|
||||
MODULE ; LOGO.ACT
|
||||
|
||||
DEFINE RTI = "$40",
|
||||
PHA = "$48",
|
||||
PLA = "$68",
|
||||
TXA = "$8A",
|
||||
TAX = "$AA",
|
||||
TYA = "$98",
|
||||
TAY = "$A8"
|
||||
|
||||
BYTE start
|
||||
BYTE ARRAY display
|
||||
CARD ARRAY yLoc(96)
|
||||
|
||||
|
||||
PROC NMI()
|
||||
BYTE color, cnt
|
||||
BYTE COLPF1=$D017, WSYNC=$D40A,
|
||||
VCOUNT=$D40B, COLPF2=$D018,
|
||||
COLPF0=$D016
|
||||
BYTE ARRAY col(0)=[$68 $C $96 $38]
|
||||
|
||||
[PHA TXA PHA TYA PHA]
|
||||
|
||||
IF VCOUNT=7 THEN
|
||||
color = start
|
||||
start = start - 1
|
||||
IF (start&$1F)=0 THEN cnt = cnt + 1 FI
|
||||
FI
|
||||
|
||||
color = color - 2
|
||||
WSYNC = 1
|
||||
COLPF0 = color
|
||||
COLPF1 = color
|
||||
COLPF2 = col((cnt + VCOUNT) & 3)
|
||||
[PLA TAY PLA TAX PLA RTI]
|
||||
|
||||
|
||||
PROC Background()
|
||||
BYTE COLBK=$D01A, VCOUNT=$D40B, WSYNC=$D40A
|
||||
|
||||
[PHA TXA PHA TYA PHA]
|
||||
WSYNC = 0
|
||||
IF VCOUNT>50 THEN
|
||||
COLBK = 0
|
||||
ELSE
|
||||
COLBK = $D6
|
||||
FI
|
||||
[PLA TAY PLA TAX PLA RTI]
|
||||
|
||||
|
||||
PROC Init7()
|
||||
BYTE i
|
||||
CARD screen, scrloc=88
|
||||
|
||||
Graphics(23)
|
||||
SetColor(0,2,10)
|
||||
SetColor(1,0,12)
|
||||
SetColor(2,0,12)
|
||||
|
||||
display = scrloc
|
||||
screen = scrloc
|
||||
i = 0
|
||||
WHILE i<96 DO
|
||||
yLoc(i) = screen
|
||||
screen = screen + 40
|
||||
i = i + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
|
||||
PROC Plot7(BYTE x, y)
|
||||
BYTE ARRAY pos, bm(0)=[$C0$30$C$3],
|
||||
cm(0)=[$0 $55 $AA $FF]
|
||||
|
||||
pos = yLoc(y)
|
||||
|
||||
pos(x RSH 2) ==% (bm(x&3)&cm(color))
|
||||
RETURN
|
||||
|
||||
|
||||
PROC VLine(BYTE x, y1, y2)
|
||||
WHILE y1#y2 DO
|
||||
Plot7(x, y1)
|
||||
y1 = y1 + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
|
||||
PROC HLine(BYTE x1, x2, y)
|
||||
WHILE x1#x2 DO
|
||||
Plot7(x1, y)
|
||||
x1 = x1 + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
|
||||
PROC DLine(BYTE x1, x2, y1)
|
||||
BYTE incr
|
||||
|
||||
incr = 1
|
||||
IF x2<x1 THEN incr = $FF FI
|
||||
|
||||
WHILE x1#x2 DO
|
||||
Plot7(x1, y1)
|
||||
x1 = x1 + incr
|
||||
Plot7(x1, y1)
|
||||
y1 = y1 + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
PROC Dot(BYTE x, y)
|
||||
BYTE i
|
||||
|
||||
i = 0
|
||||
WHILE i<4 DO
|
||||
Plot7(x+1, y) Plot7(x+2, y)
|
||||
IF i=1 OR i=2 THEN
|
||||
Plot7(x, y) Plot7(x+3, y)
|
||||
FI
|
||||
y = y + 1
|
||||
i = i + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
PROC Pad(BYTE x, y)
|
||||
BYTE i
|
||||
|
||||
i = 0
|
||||
WHILE i<4 DO
|
||||
Plot7(x, y)
|
||||
Plot7(x+1, y)
|
||||
Plot7(x+2, y)
|
||||
y = y + 1
|
||||
i = i + 1
|
||||
OD
|
||||
RETURN
|
||||
|
||||
|
||||
PROC LineX(BYTE x1, y1, x2, y2)
|
||||
Plot(x1, y1)
|
||||
DrawTo(x2, y2)
|
||||
Plot(x1+1, y1)
|
||||
DrawTo(x2+1, y2)
|
||||
RETURN
|
||||
|
||||
|
||||
PROC LineY(BYTE x1, y1, x2, y2)
|
||||
Plot(x1, y1)
|
||||
DrawTo(x2, y2)
|
||||
; Plot(x1, y1+1)
|
||||
; DrawTo(x2, y2+1)
|
||||
RETURN
|
||||
|
||||
|
||||
PROC Curve(BYTE x, y)
|
||||
; Plot7(x-1, y-1)
|
||||
VLine(x, y-1, y+2)
|
||||
VLine(x+1, y-1, y+2)
|
||||
VLine(x+2, y-2, y+1)
|
||||
y = y - 4
|
||||
VLine(x+3, y, y+5)
|
||||
VLine(x+4, y, y+4)
|
||||
VLine(x+5, y, y+3)
|
||||
Plot7(x+6, y)
|
||||
Plot7(x+6, y+1)
|
||||
RETURN
|
||||
|
||||
|
||||
PROC Draw()
|
||||
BYTE i, j, k
|
||||
CARD x
|
||||
|
||||
; draw fingers
|
||||
i = 0
|
||||
x = 160
|
||||
WHILE i<15 DO
|
||||
j = 0
|
||||
WHILE j<3 DO
|
||||
k = 0
|
||||
WHILE k<4 DO
|
||||
display(x+k) = $55
|
||||
k = k + 1
|
||||
OD
|
||||
x = x + 40
|
||||
j = j + 1
|
||||
OD
|
||||
x = x + 120
|
||||
i = i + 1
|
||||
OD
|
||||
|
||||
; draw the pads
|
||||
i = 64
|
||||
WHILE i<112 DO
|
||||
Pad(i, 22)
|
||||
i = i + 6
|
||||
OD
|
||||
Pad(142, 22)
|
||||
Pad(70, 62)
|
||||
Pad(76, 62)
|
||||
Pad(94, 62)
|
||||
Pad(106, 62)
|
||||
Pad(142, 62)
|
||||
|
||||
; finger 1, 15 connections
|
||||
i = 0
|
||||
WHILE i<4 DO
|
||||
display(204+i) = $AA
|
||||
display(3564+i) = $AA
|
||||
i = i + 1
|
||||
OD
|
||||
Dot(31, 3)
|
||||
Dot(29, 88)
|
||||
|
||||
; finger 2 connection (A3)
|
||||
LineX(16, 11, 44, 8)
|
||||
HLine(44, 105, 8)
|
||||
DLine(105, 107, 8)
|
||||
VLine(107, 10, 23)
|
||||
|
||||
; finger 3 connection (A2)
|
||||
LineX(16, 17, 48, 11)
|
||||
HLine(48, 99, 11)
|
||||
DLine(99, 101, 11)
|
||||
VLine(101, 13, 23)
|
||||
|
||||
; finger 4 connection (A1)
|
||||
LineX(16, 23, 52, 14)
|
||||
HLine(52, 93, 14)
|
||||
DLine(93, 95, 14)
|
||||
VLine(95, 16, 23)
|
||||
|
||||
; finger 5 connection (A0)
|
||||
LineX(16, 29, 56, 17)
|
||||
HLine(56, 87, 17)
|
||||
DLine(87, 89, 17)
|
||||
VLine(89, 19, 23)
|
||||
|
||||
; finger 6 connection (D4)
|
||||
HLine(16, 60, 35)
|
||||
LineY(60, 35, 71, 62)
|
||||
|
||||
; finger 7 connection (D5)
|
||||
HLine(16, 56, 41)
|
||||
DLine(56, 58, 41)
|
||||
VLine(58, 43, 66)
|
||||
DLine(58, 60, 66)
|
||||
HLine(60, 76, 68)
|
||||
DLine(77, 75, 66)
|
||||
|
||||
; finger 8 connection (D2)
|
||||
HLine(16, 34, 47)
|
||||
DLine(34, 58, 47)
|
||||
HLine(58, 79, 71)
|
||||
DLine(80, 78, 70)
|
||||
VLine(80, 60, 70)
|
||||
LineY(80, 60, 71, 25)
|
||||
|
||||
; finger 9 connection (D1)
|
||||
HLine(16, 34, 53)
|
||||
DLine(34, 55, 53)
|
||||
HLine(55, 85, 74)
|
||||
DLine(86, 84, 73)
|
||||
VLine(86, 60, 73)
|
||||
LineY(86, 60, 77, 25)
|
||||
|
||||
; finger 10 connection (D0)
|
||||
HLine(16, 20, 59)
|
||||
DLine(23, 19, 56)
|
||||
HLine(24, 32, 56)
|
||||
DLine(32, 53, 56)
|
||||
HLine(53, 91, 77)
|
||||
DLine(92, 90, 76)
|
||||
VLine(92, 60, 76)
|
||||
LineY(92, 60, 83, 25)
|
||||
|
||||
; finger 11 connection (D6)
|
||||
HLine(16, 24, 65)
|
||||
DLine(27, 23, 62)
|
||||
Dot(26, 60)
|
||||
|
||||
; finger 12 connection (CS)
|
||||
DLine(107, 92, 66)
|
||||
HLine(50, 92, 80)
|
||||
DLine(40, 50, 71)
|
||||
HLine(16, 40, 71)
|
||||
VLine(95, 66, 78)
|
||||
|
||||
; finger 13 connection (+5)
|
||||
Plot(16, 76)
|
||||
DrawTo(50, 86)
|
||||
Plot(16, 77)
|
||||
DrawTo(50, 87)
|
||||
Plot(16, 78)
|
||||
DrawTo(50, 88)
|
||||
HLine(50, 149, 86)
|
||||
HLine(50, 149, 87)
|
||||
HLine(50, 149, 88)
|
||||
Curve(149, 86)
|
||||
i = 0
|
||||
WHILE i<4 DO
|
||||
VLine(153+i, 47, 82)
|
||||
DLine(143+i, 153+i, 37)
|
||||
VLine(143+i, 22, 37)
|
||||
|
||||
HLine(142, 155, 62+i)
|
||||
|
||||
VLine(153+i, 5, 17) ; ground pad
|
||||
|
||||
i = i + 1
|
||||
OD
|
||||
HLine(143, 146, 21)
|
||||
Plot7(141, 63)
|
||||
Plot7(141, 64)
|
||||
Curve(149, 62)
|
||||
HLine(149, 153, 66)
|
||||
VLine(152, 66, 70)
|
||||
Plot7(151, 67)
|
||||
|
||||
; finger 14 connection (cart. select)
|
||||
HLine(16, 35, 82)
|
||||
HLine(16, 38, 83)
|
||||
HLine(16, 41, 84)
|
||||
|
||||
; ground pads
|
||||
Dot(153, 3)
|
||||
Dot(153, 16)
|
||||
HLine(62, 64, 23)
|
||||
HLine(62, 64, 24)
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
PROC Letter(BYTE ARRAY pts, BYTE x, y, delay)
|
||||
BYTE i, dx, dy
|
||||
|
||||
WHILE 1 DO
|
||||
dx = pts^
|
||||
pts = pts + 1
|
||||
dy = pts^
|
||||
pts = pts + 1
|
||||
IF dx=$FF THEN EXIT FI
|
||||
Plot7(x+dx, y+dy)
|
||||
|
||||
;i = 0
|
||||
;WHILE i<delay DO i==+1*1*1 OD
|
||||
OD
|
||||
RETURN
|
||||
|
||||
|
||||
PROC Logo()
|
||||
CHAR CH=$2FC
|
||||
BYTE x, NMIEN=$D40E, COLBK=$D01A
|
||||
CARD j, old, SDLST=$230, VDSLST=$200
|
||||
BYTE i
|
||||
BYTE ARRAY dlist
|
||||
BYTE ARRAY side(0)=[2 0 1 0 0 0 0 1
|
||||
0 2 1 2 2 2 2 3 2 4 1 4 0 4 4 0 4
|
||||
1 4 2 4 3 4 4 6 0 6 1 6 2 6 3 6 4
|
||||
7 0 8 1 8 2 8 3 7 4 10 0 10 1 10
|
||||
2 10 3 10 4 11 0 12 0 11 2 11 4 12
|
||||
4 18 4 18 3 19 2 19 1 20 0 21 1 21
|
||||
2 22 3 22 4 20 2 $FF]
|
||||
BYTE ARRAY copyright(0)=[5 0 4 0 3 0
|
||||
2 0 1 1 0 2 0 3 0 4 0 5 1 6 2 7 3
|
||||
7 4 7 5 7 6 6 7 5 7 4 7 3 7 2 6 1
|
||||
4 2 3 2 2 3 2 4 3 5 4 5 $FF]
|
||||
BYTE ARRAY A(0)=[0 8 1 8 0 7 1 7 0 6
|
||||
1 6 2 6 1 5 2 5 1 4 2 4 1 3 2 3 3
|
||||
3 2 2 3 2 2 1 3 1 3 0 4 0 4 1 5 0
|
||||
5 1 6 1 5 2 6 2 5 3 6 3 7 3 6 4 7
|
||||
4 6 5 7 5 6 6 7 6 8 6 7 7 8 7 7 8
|
||||
8 8 3 5 4 5 5 5 $FF]
|
||||
BYTE ARRAY C(0)=[7 2 6 2 6 1 5 1 5 0
|
||||
4 0 3 0 2 0 2 1 1 1 1 2 0 2 1 3 0
|
||||
3 1 4 0 4 0 5 1 5 0 6 1 6 1 7 2 7
|
||||
2 8 3 8 4 8 5 8 5 7 6 7 6 6 7 6
|
||||
; hier fehlt das Ende
|
||||
$FF]
|
||||
BYTE ARRAY S(0)=[6 2 5 2 5 1 4 1 4 0
|
||||
3 0 2 0 2 1 1 1 0 2 1 2 1 3 2 3 2
|
||||
4 3 4 4 4 4 5 5 5 6 6 5 6 5 7 4 7
|
||||
4 8 3 8 2 8 2 7 1 7 1 6 0 6 $FF]
|
||||
BYTE ARRAY rev(0)=[0 0 0 1 0 2 0 3 0
|
||||
4 0 5 0 6 1 6 1 5 1 4 1 3 1 2 1 1
|
||||
1 0 2 0 3 0 4 1 4 2 3 3 2 3 3 4 4
|
||||
5 4 6 7 0 8 0 7 1 8 1 7 2 8 2 7 3
|
||||
8 3 7 4 8 4 7 5 8 5 7 6 8 6 11 0
|
||||
10 0 9 0 10 3 9 3 11 6 10 6 9 6 14
|
||||
0 15 0 14 1 15 1 14 2 15 2 15 3 16
|
||||
3 15 4 16 4 16 5 16 6 17 6 17 5 18
|
||||
4 18 3 19 2 19 1 19 0 22 5 21 5 21
|
||||
6 22 6 27 6 28 6 27 5 28 5 27 4 28
|
||||
4 28 3 29 3 28 2 29 2 29 1 29 0 30
|
||||
0 30 1 31 2 31 3 32 4 32 5 32 6 29
|
||||
5 30 5 31 5 $FF]
|
||||
|
||||
Init7()
|
||||
color = 2
|
||||
|
||||
NMIEN = $40
|
||||
old = VDSLST
|
||||
VDSLST = Background
|
||||
dlist = SDLST
|
||||
dlist(6) ==% $80
|
||||
dlist(97) ==% $80
|
||||
NMIEN = $C0
|
||||
|
||||
Draw()
|
||||
|
||||
; j = 0
|
||||
; WHILE j<10000 DO j==+1 OD
|
||||
|
||||
color = 3
|
||||
Letter(side, 120, 10, 50)
|
||||
Letter(rev, 105, 75, 50)
|
||||
Letter(copyright, 96, 41, 100)
|
||||
Letter(A, 109, 41, 100)
|
||||
Letter(C, 121, 41, 100)
|
||||
Letter(S, 132, 41, 100)
|
||||
|
||||
j = 0
|
||||
WHILE j<2000 AND CH=$FF DO
|
||||
i = 0
|
||||
WHILE i<100 DO i==+1 OD
|
||||
j = j + 1
|
||||
OD
|
||||
|
||||
NMIEN = $40
|
||||
VDSLST = NMI
|
||||
|
||||
start = 0
|
||||
|
||||
dlist(0) ==% $80
|
||||
dlist(2) ==% $80
|
||||
i = 3
|
||||
WHILE i<101 DO
|
||||
x = dlist(i)
|
||||
dlist(i) = x % $80
|
||||
IF x#$D THEN
|
||||
i = i + 3
|
||||
ELSE
|
||||
i = i + 1
|
||||
FI
|
||||
OD
|
||||
|
||||
NMIEN = $C0
|
||||
|
||||
; Draw()
|
||||
|
||||
CH = $FF
|
||||
WHILE CH#$1C DO
|
||||
; SetColor(4, 0, 4)
|
||||
; COLBK = 4
|
||||
OD
|
||||
|
||||
NMIEN = $40
|
||||
VDSLST = old
|
||||
|
||||
GetD(7)
|
||||
Graphics(0)
|
||||
RETURN
|
||||
|
||||
|
||||
</pre>
|
@ -74,4 +74,6 @@ I have a love-hate relationship with BASIC. It's easy to get started, it's diffi
|
||||
190 PRINT INT(P)
|
||||
200 IF P > 0 THEN 90
|
||||
210 END
|
||||
|
||||
</pre>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user