Knowledge

Action! (programming language)

Source đź“ť

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:.

Index

Action (disambiguation)
Action! fullscreen editor
Original author(s)
Developer(s)
Optimized Systems Software
Final release
Platform
Atari 8-bit computers
Size
programming language
integrated development environment
Atari 8-bit computers
ALGOL
MOS Technology 6502
ROM cartridge
Optimized Systems Software
bank-switched
Henry Baker
systems programming language
Xerox Alto
HomePak
Games Computers Play
ANALOG Computing
Antic
PaperClip
word processor
GNU General Public License
mapped
address space
bank switch

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑