Action Computer Services Logo

[ Table Of Contents ] | [ Disk Image ]



This program, Action Logo, comes from the atariwiki.org website. 


; CIS NOTICE:
                
; I AM PROVIDING THE PROGRAM FOR YOU
; TO LOOK AT AND MAYBE HELP OU 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



Comments

Popular posts from this blog

Superhop ACTION!

ANALOG MAN

Guessing Game 1