421:
FLAGS(I)='T ; "'T" is a compiler-provided constant for True OD FOR I=0 TO 8190 ; now run the sieve DO IF FLAGS(I)='T THEN PRIME=I+I+3 K=I+PRIME WHILE K<=8190 DO FLAGS(K)='F ; "'F" is a compiler-provided constant for False K==+PRIME OD COUNT==+1 FI OD TIME=RTCLOK ; get timer reading SDMCTL=34 ; restore screen PRINTF("%E %U PRIMES IN",COUNT) PRINTF("%E %U JIFFIES",TIME) RETURN
34:
478:
Aside from differences in syntax, the main difference between Micro-SPL and BCPL, and the reason for its existence, was that Micro-SPL produced code that was many times faster than the native BCPL compiler. In general, Micro-SPL programs were expected to run about ten times as fast as BCPL, and about
396:
AND FI OR UNTIL = ( ARRAY FOR POINTER WHILE <> ) BYTE FUNC PROC XOR # . CARD IF RETURN + > [ CHAR INCLUDE RSH - >= ] DEFINE INT SET *
569:
reported that the language resembled C closely enough to "routinely convert programs between the two", and approved of its pointer support. The magazine concluded that "Action! is easy to use, quick, and efficient. It can exploit the Atari's full power. Action! puts programming for the Atari in a
420:
BYTE RTCLOK=20, ; addr of sys timer SDMCTL=559 ; DMA control BYTE ARRAY FLAGS(8190) CARD COUNT,I,K,PRIME,TIME PROC SIEVE() SDMCTL=0 ; shut off Antic RTCLOK=0 ; reset the clock to zero COUNT=0 ; init count FOR I=0 TO 8190 ; and flags DO
529:, concluded that Action! was "one of the most valuable development tools ever published for the Atari." He cited the manual as the only weak point of the package, claiming it "suffers from lack of confidence, uncertain organization and a shortage of good, hard technical data."
487:
It was during this period that Parker purchased an Atari computer for use at home. He was disappointed with the lack of development systems for it, which was the impetus for creating Action! Parker considered releasing the system himself, but decided to partner with
264:
for testing code and switching between the editor and compiler, and the run-time library. The run-time library is stored in the cartridge itself. To distribute standalone applications requires a separate run-time package which was sold by OSS as the Action! Toolkit.
507:
compilers available, and Parker decided there was no point in porting Action! to that platform. As the sales of the Atari 8-bit computers wound down in North
America, OSS wound down as well. Late in its history Action! distribution moved from OSS to
512:, but they did little with the language and sales ended shortly after. In a 2015 interview, Parker expressed his surprise in the level of interest in the language continued to receive, suggesting it was greater than it had been in the late 1980s.
397:< " DO LSH STEP / <= ' ELSE MOD THEN & $ ; ELSEIF MODULE TO % ^ EXIT OD TYPE ! @
549:." Laporte praised the editor, noting its split-screen and cut and paste capabilities and describing it as a "complete word processing system that's very responsive." He said that Action! ran about 200 times as fast as
240:
Action! is one of the earlier examples of the OSS SuperCartridge format. Although ROM cartridges for the Atari could support 16 kB, OSS opted for bank-switching 16 kB, organized as four 4 kB blocks,
295:
environments, the Action! editor does not use line numbers. It has a fullscreen, scrolling display capable of displaying two windows, and includes block operations and global search and replace.
565:
benchmark as a test, ten iterations of the sieve completed in 18 seconds in Action!, compared to 10 seconds for assembly and 38 minutes in BASIC. The magazine also lauded the language's editor.
280:. This eliminates the significant overhead associated with stack management, which is especially difficult in the case of the 6502's 256-byte stack. However, this precludes the use of
351:
CARD population=$ 600 ; declare population and store it at address 1536 and 1537 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables
605:
This is the original Action! source as I received it from ICD. It uses the ICD cross assembler which is not included in the zip. It can be easily converted to other formats
191:. Action! is largely a port of Micro-SPL concepts to the Atari with changes to support the 6502 processor and the addition of an integrated fullscreen editor and debugger.
298:
The monitor serves as a debugger, allowing an entire program or individual functions to be run, memory to be displayed and modified, and program execution to be traced.
393:
is any identifier or symbol that the Action! compiler recognizes as something special. It can be an operator, a data type name, a statement, or a compiler directive.
479:
half as fast as good hand-written microcode. In comparison to microcode, they claimed it would take half as long to write and 10% of the time to debug it.
537:
368:
INT veryCold = INT profitsQ1, profitsQ2, ; declaring multiple variables can profitsQ3, profitsQ4 ; span across multiple lines
881:
1062:
1057:
1052:
579:
that "Action! is probably the best language yet for the Atari; it's a bit like C and Pascal, with a dash of Forth. I recommend it."
496:, so this was a natural fit for Action! Sales were strong enough for Parker to make a living off the royalties for several years.
334:
BYTE age= ; declare age and initialize it to the value 21 BYTE leftMargin=82 ; declare leftMargin at address 82
1067:
1037:
172:
16 kB "Super
Cartridges". The runtime library is stored in the cartridge; to make a standalone application requires the
475:
system which the BCPL compiler output. Micro-SPL output the same format, allowing BCPL programs to call Micro-SPL programs.
1047:
145:
1007:
920:
631:
453:
180:
276:. For example, local variables are assigned fixed addresses in memory, instead of being allocated on a stack of
965:
457:
184:
680:
88:
941:
600:
489:
229:
165:
59:
1042:
955:
974:
617:
20:
260:
Action! used this design by breaking the system into four sections, the editor, the compiler, a
950:
561:
in 1985 praised the compilation and execution speed of software written in Action! Using their
504:
292:
253:
between the other three blocks by changing the value in address $ AFFF. This allowed for more
406:
149:
119:
464:
414:
261:
202:
141:
908:
492:(OSS) for sales and distribution. OSS focused on utilities and programming languages like
8:
1001:
157:
862:
456:
and Parker released Micro-SPL in
September 1979. Micro-SPL was intended to be used as a
114:
916:
627:
575:
277:
273:
525:
447:
214:
208:
992:
647:
509:
603:, Alfred (Chopper Commander) Posted Mon Feb 2, 2015 1:38 PM, AtariAge Forums,
542:
520:
439:
372:
222:
169:
1031:
390:
246:
161:
726:
434:
While taking his postgraduate studies, Parker started working part-time at
272:, to provide high performance without needing complex optimizations in the
228:
The assembly language source code for Action! was made available under the
996:
915:. Greensboro, North Carolina: Compute! Publications, Inc. pp. v–vi.
550:
532:
288:
250:
541:. He began the review, "This is the best thing to happen to Atari since
562:
461:
450:
parsing and he had worked on compiler theory during his graduate work.
443:
435:
358:
341:
322:
242:
188:
54:
44:
409:
written in Action!. In order to increase performance, it disables the
1017:
553:, concluding that "This language is like a finely tuned racing car."
472:
312:
281:
219:
126:
1022:
446:
project where he wrote several games for the system. His PhD was in
19:
This article is about the programming language. For other uses, see
623:
493:
1012:
196:
194:
Action! was used to develop at least two commercial products—the
500:
269:
410:
371:
Action! also has ARRAYs, POINTERs and user-defined TYPEs. No
331:
The CHAR keyword can also be used to declare BYTE variables.
153:
33:
760:
758:
557:
546:
468:
362:
345:
326:
254:
755:
663:
661:
268:
Action! constructs were designed to map cleanly to 6502
806:
794:
782:
249:. The lower 4 kB did not change, and system could
1002:
Action! Programming
Language Version 3.6 - Source Code
842:
830:
818:
770:
710:
708:
706:
704:
417:
engine from "stealing" CPU cycles during computation.
743:
731:
658:
168:
starting in 1983. It was one of the company's first
701:
160:of the Atari computers. Action! was distributed on
225:. The language was not ported to other platforms.
873:
1029:
940:Baker, Henry; Parker, Clinton (September 1979).
535:reviewed Action in the May/June 1984 edition of
949:(Technical report). Synapse Computer Services.
879:
381:TYPE CORD= CORD point point.x=42 point.y=23
1004:, by Optimized Systems Software at archive.org
966:"ANTIC Interview 111, Clinton Parker, Action!"
365:integer. Values range from -32,768 to 32,767.
900:
156:, compiles to high-performance code for the
939:
764:
235:
32:
975:"Action! - A new language for the Atari!"
954:
909:"Author's Preface To The Revised Edition"
16:Atari 8-bit computer programming language
972:
906:
848:
714:
667:
615:
348:integer. Values range from 0 to 65,535.
206:client program—and numerous programs in
183:, had previously developed Micro-SPL, a
968:(podcast). Interviewed by Randy Kindig.
1063:Statically typed programming languages
1030:
963:
860:
836:
824:
812:
800:
788:
776:
749:
737:
648:"RAM/ROM Control On An XL/XE Computer"
1058:Programming languages created in 1983
413:graphics coprocessor, preventing its
340:inal is internally represented as an
964:Parker, Clinton (31 December 2015).
357:eger is internally represented as a
329:integer. Values range from 0 to 255.
152:. The language, which is similar to
467:, which was normally programmed in
378:An example of a user-defined TYPE:
218:magazines. The editor inspired the
13:
405:The following is example code for
176:which was sold separately by OSS.
148:written by Clinton Parker for the
146:integrated development environment
14:
1079:
986:
973:Moriarty, Brian (February 1984).
384:
1053:Procedural programming languages
523:, in a February 1984 review for
321:is internally represented as an
933:
854:
400:
94:v3.6 / November 4, 1983
993:Action! (programming language)
981:. No. 16. pp. 54–61.
880:Schneeflock, Ed (March 1985).
720:
673:
640:
609:
594:
545:figured out people would play
311:Action! has three fundamental
1:
1068:Systems programming languages
1038:Atari 8-bit computer software
1008:Action! info at Retrobits.com
861:Laport, Leo (May–June 1984).
582:
306:
257:available for user programs.
601:Action! Source Code - Page 2
587:
515:
458:systems programming language
429:
315:, all of which are numeric.
185:systems programming language
7:
301:
131:16K bank-switched cartridge
71:; 41 years ago
10:
1084:
1048:Optimized Systems Software
490:Optimized Systems Software
482:
424:
230:GNU General Public License
166:Optimized Systems Software
60:Optimized Systems Software
18:
882:"Action! A Poor Man's C?"
863:"Lights, Camera, ACTION!"
125:
113:
109:
87:
83:
65:
53:
43:
31:
1018:Action! reference manual
547:ping-pong on a TV screen
442:. He later moved to the
1023:Effectus cross-compiler
765:Baker & Parker 1979
727:ACTION! in Atariki (PL)
236:Development environment
232:by the author in 2015.
200:productivity suite and
21:Action (disambiguation)
907:Chadwick, Ian (1985).
616:Chadwick, Ian (1983).
573:Ian Chadwick wrote in
570:whole new dimension."
293:Atari Assembler Editor
287:Unlike the integrated
96:; 40 years ago
407:Sieve of Eratosthenes
375:support is provided.
179:Parker, working with
150:Atari 8-bit computers
120:Atari 8-bit computers
465:workstation computer
203:Games Computers Play
142:programming language
158:MOS Technology 6502
28:
471:. The Alto used a
278:activation records
45:Original author(s)
26:
913:Mapping the Atari
619:Mapping the Atari
576:Mapping the Atari
274:one-pass compiler
135:
134:
38:Fullscreen editor
1075:
1043:ALGOL 68 dialect
982:
979:ANALOG Computing
969:
960:
958:
948:
927:
926:
904:
898:
897:
895:
893:
877:
871:
870:
858:
852:
846:
840:
834:
828:
822:
816:
810:
804:
798:
792:
786:
780:
774:
768:
762:
753:
747:
741:
735:
729:
724:
718:
712:
699:
698:
696:
695:
685:
681:"OSS Newsletter"
677:
671:
665:
656:
655:
644:
638:
637:
613:
607:
598:
526:ANALOG Computing
448:natural language
209:ANALOG Computing
140:is a procedural
104:
102:
97:
79:
77:
72:
69:August 1983
36:
29:
25:
1083:
1082:
1078:
1077:
1076:
1074:
1073:
1072:
1028:
1027:
1013:Action! Archive
989:
956:10.1.1.126.6877
946:
936:
931:
930:
923:
905:
901:
891:
889:
878:
874:
859:
855:
847:
843:
835:
831:
823:
819:
811:
807:
799:
795:
787:
783:
775:
771:
763:
756:
748:
744:
736:
732:
725:
721:
713:
702:
693:
691:
683:
679:
678:
674:
666:
659:
646:
645:
641:
634:
626:. p. 103.
614:
610:
599:
595:
590:
585:
518:
510:Electronic Arts
485:
440:printer drivers
432:
427:
422:
403:
398:
387:
382:
369:
352:
335:
330:
309:
304:
238:
174:Action! Toolkit
105:
100:
98:
95:
75:
73:
70:
66:Initial release
39:
24:
17:
12:
11:
5:
1081:
1071:
1070:
1065:
1060:
1055:
1050:
1045:
1040:
1026:
1025:
1020:
1015:
1010:
1005:
999:
988:
987:External links
985:
984:
983:
970:
961:
935:
932:
929:
928:
921:
899:
872:
853:
841:
829:
817:
805:
793:
781:
769:
754:
742:
730:
719:
700:
672:
657:
639:
632:
608:
592:
591:
589:
586:
584:
581:
543:Nolan Bushnell
521:Brian Moriarty
517:
514:
484:
481:
431:
428:
426:
423:
419:
402:
399:
395:
386:
385:Reserved words
383:
380:
373:floating point
367:
350:
333:
308:
305:
303:
300:
237:
234:
223:word processor
133:
132:
129:
123:
122:
117:
111:
110:
107:
106:
93:
91:
85:
84:
81:
80:
67:
63:
62:
57:
51:
50:
49:Clinton Parker
47:
41:
40:
37:
15:
9:
6:
4:
3:
2:
1080:
1069:
1066:
1064:
1061:
1059:
1056:
1054:
1051:
1049:
1046:
1044:
1041:
1039:
1036:
1035:
1033:
1024:
1021:
1019:
1016:
1014:
1011:
1009:
1006:
1003:
1000:
998:
994:
991:
990:
980:
976:
971:
967:
962:
957:
952:
945:
944:
938:
937:
924:
922:0-87455-004-1
918:
914:
910:
903:
888:. p. 273
887:
883:
876:
869:. p. 72.
868:
864:
857:
851:, p. 60.
850:
849:Moriarty 1984
845:
838:
833:
826:
821:
814:
809:
802:
797:
790:
785:
778:
773:
766:
761:
759:
751:
746:
739:
734:
728:
723:
716:
715:Moriarty 1984
711:
709:
707:
705:
689:
688:atariwiki.org
682:
676:
670:, p. 55.
669:
668:Moriarty 1984
664:
662:
653:
649:
643:
635:
633:9780874550047
629:
625:
621:
620:
612:
606:
602:
597:
593:
580:
578:
577:
571:
568:
564:
560:
559:
554:
552:
548:
544:
540:
539:
534:
530:
528:
527:
522:
513:
511:
506:
502:
497:
495:
491:
480:
476:
474:
470:
466:
463:
459:
455:
451:
449:
445:
441:
437:
418:
416:
412:
408:
394:
392:
391:reserved word
379:
376:
374:
366:
364:
360:
356:
349:
347:
343:
339:
332:
328:
324:
320:
316:
314:
299:
296:
294:
290:
285:
283:
279:
275:
271:
266:
263:
258:
256:
252:
248:
247:address space
244:
233:
231:
226:
224:
221:
217:
216:
211:
210:
205:
204:
199:
198:
192:
190:
186:
182:
177:
175:
171:
170:bank-switched
167:
163:
162:ROM cartridge
159:
155:
151:
147:
143:
139:
130:
128:
124:
121:
118:
116:
112:
108:
92:
90:
89:Final release
86:
82:
68:
64:
61:
58:
56:
52:
48:
46:
42:
35:
30:
22:
978:
942:
934:Bibliography
912:
902:
890:. Retrieved
885:
875:
866:
856:
844:
832:
820:
808:
796:
784:
772:
767:, p. 1.
745:
733:
722:
692:. Retrieved
687:
675:
651:
642:
618:
611:
604:
596:
574:
572:
566:
556:
555:
536:
531:
524:
519:
498:
486:
477:
452:
433:
404:
401:Example code
388:
377:
370:
354:
353:
337:
336:
318:
317:
310:
297:
286:
267:
259:
245:onto 8kB of
239:
227:
213:
207:
201:
195:
193:
178:
173:
137:
136:
55:Developer(s)
997:SourceForge
837:Parker 2015
825:Parker 2015
813:Parker 2015
801:Parker 2015
789:Parker 2015
777:Parker 2015
750:Parker 2015
738:Parker 2015
551:Atari BASIC
533:Leo Laporte
454:Henry Baker
438:working on
289:Atari BASIC
251:bank switch
181:Henry Baker
1032:Categories
694:2024-05-24
583:References
563:Byte Sieve
462:Xerox Alto
444:Xerox Alto
436:Xerox PARC
313:data types
307:Data types
189:Xerox Alto
101:1983-11-04
951:CiteSeerX
943:Micro-SPL
652:AtariWiki
588:Citations
516:Reception
473:microcode
430:Micro-SPL
282:recursion
220:PaperClip
892:19 March
815:, 21:30.
803:, 20:00.
791:, 28:00.
624:Compute!
494:BASIC XL
342:unsigned
323:unsigned
302:Language
187:for the
115:Platform
839:, 1:00.
827:, 2:45.
779:, 7:00.
752:, 6:30.
740:, 6:00.
483:Action!
460:on the
425:History
270:opcodes
262:monitor
197:HomePak
138:Action!
99: (
76:1983-08
74: (
27:Action!
953:
919:
867:Hi-Res
690:. 1983
630:
538:Hi-Res
501:IBM PC
359:signed
243:mapped
947:(PDF)
684:(PDF)
411:ANTIC
215:Antic
154:ALGOL
917:ISBN
894:2016
886:BYTE
628:ISBN
567:BYTE
558:BYTE
503:had
499:The
469:BCPL
338:CARD
319:BYTE
291:and
212:and
144:and
127:Size
995:on
415:DMA
363:bit
361:16-
355:INT
346:bit
344:16-
327:bit
255:RAM
164:by
1034::
977:.
911:.
884:.
865:.
757:^
703:^
686:.
660:^
650:.
622:.
389:A
325:8-
284:.
959:.
925:.
896:.
717:.
697:.
654:.
636:.
505:C
103:)
78:)
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.