aegroup@tekigm.UUCP (Dennis Ward) (11/20/85)
> In the November 1985 issue of A.N.A.L.O.G. magazine, on pp 33-37/60-62, there > is a program for a game called "Sneak Attack" which apparently is programmed > in "Action!" language. I have heard of Action! before, but do not know too > much about it. My questions are: does this require an "Action! cartridge > in the Atari or does it utilize BASIC? If you use BASIC, how do you enter it > in the computer without line numbers? If it requires an "Action!" language > cartridge, who makes same? Is the funny spacing required, and if so do you > have to follow exactly the indentations or merely indent the proper lines > appropriately? Maybe this is rather basic, but basically, I only have used > BASIC. Thanks in advance, > --Bill-- By judicious reading of the advertisements in Antic and A.N.A.L.O.G. magazines, I was able to partially answer my own questions. Action! is a cartridge available from O.S.S. and presumeably is another distinct computer language. However, I am still griped that the original article did not make this clear and I am still uncertain as to why the odd spacing of the lines. The indentation number of spaces does not seem to follow a logical pattern. (I thought that each succeeding indentation was another 2 spaces, but then I found some at 4 spaces, etc.) (Flame on) What is the advantage of Action! over BASIC, Pascal or C? Does it fit in one of these "families" of languages or is it a new one? Why we have such a proliferation of languages anyway? I'm still trying to learn AB,MBII and BXE/BXL, familiarizing myself with C, let along trying to learn Pascal and Action! (Flame off) Thanks, --Bill-- ***Just an "over-the-hill apprentice hacker" (in the legal sense)***
ln63fcv@sdcc7.UUCP (Who ) (11/24/85)
> By judicious reading of the advertisements in Antic and A.N.A.L.O.G. magazines, > I was able to partially answer my own questions. Action! is a cartridge > available from O.S.S. and presumeably is another distinct computer language. > However, I am still griped that the original article did not make this clear > and I am still uncertain as to why the odd spacing of the lines. The > indentation number of spaces does not seem to follow a logical pattern. (I > thought that each succeeding indentation was another 2 spaces, but then I found > some at 4 spaces, etc.) > > (Flame on) > What is the advantage of Action! over BASIC, Pascal or C? Does it fit in one > of these "families" of languages or is it a new one? Why we have such a > proliferation of languages anyway? I'm still trying to learn AB,MBII and > BXE/BXL, familiarizing myself with C, let along trying to learn Pascal and > Action! > (Flame off) > > Thanks, > --Bill-- > > ***Just an "over-the-hill apprentice hacker" (in the legal sense)*** The advantages of Action! over other languages are many. In its basic syntax it is like a combination of c and pascal. The fact that the entire language resides in a 16k bank switched cart(thereby looking like 8k to the computer) gives a programmer more memory. The best feature is definitely its speed. Action! is taylored for the 6502 enviroment and it shows. The one pass com- piler is extremely fast and the resultant code is compact and fast. Homepack is programmed in Action and when they ported it over to the Commodore, they also programmed that in Action to, though I don't remember exactly what they did. I once tried implementing an 80 column emulator in Action and was quite impressed with the results though I realized machine language was the only way to go for something like that that uses lots of processor time. I also decided that any big programming tasks I ever would do in the future would either be written in Action or machine language. Scott Weisman !sdcsvax!sdcc7!ln63fcv (If you see any opinions in here, they are probably mine; if they aren't, then I didn't write them. That means one of two things, nobody wrote them or Lectroids from planet Ten wrote them. I tend to think the latter, or none at all.)
ravi@mcnc.UUCP (Ravi Subrahmanyan) (11/25/85)
>From: aegroup@tekigm.UUCP (Dennis Ward) >Subject: Re: Action! Programming > >By judicious reading of the advertisements in Antic and A.N.A.L.O.G. magazines, >I was able to partially answer my own questions. Action! is a cartridge >available from O.S.S. and presumeably is another distinct computer language. >However, I am still griped that the original article did not make this clear >(etc....) > >(Flame on) >What is the advantage of Action! over BASIC, Pascal or C? Does it fit in one >of these "families" of languages or is it a new one? Why we have such a >proliferation of languages anyway? I'm still trying to learn AB,MBII and >BXE/BXL, familiarizing myself with C, let along trying to learn Pascal and >Action! > > I guess the key question here is "what Pascal, or C ?". When Action came out, the only C widely available was Deep Blue C, which was hardly complete, and Atari Pascal was a horror requiring 2 drives and lots of patience.. Action! was like a breath of fresh air, especially because of the incredible *environment* it provided: a halfway decent editor, monitor, compiler, all in one 16K cartridge that was only 8K on an XL machine; not bad at all, in spite of the rather weird bugs that cropped up now and then. And above all, *SPEED*, man, (read person if so inclined), that baby could cruise.... the edit-compile-run cycle is one of the best I've seen, a comparison with Basic would be like P-system and Turbo for the (forgiveness, O Holy Ones) PC. So, give a nice, weird product its due, one that gave me infinite joy when my buddy's PC was beaten by a lowly 1200XL. (nostalgia.. guess I'll go brush the dust off 'Cyborg' tonight) -ravi ---------------------------------------------------------------------
hr@uicsl.UUCP (11/25/85)
RE: "..and I am still uncertain as to why the odd spacing of the lines... ...What is the advantage of Action! over BASIC, Pascal or C?..." Spaces are ignored in ACTION! except as separators. I don't remember the article, but sometimes these programs are scrunched to fit the magazine's column width. ACTION! is a compiled language designed for the Atari. It is much faster than BASIC and probably faster than about any language other than assembler. It also comes with a screen editor. ACTION! has been out for a few years. Anyone who is a regular reader of either ANTIC or ANALOG has heard of it. One of them ran a short tutorial series on it a while back. I just wish there were more ACTION! programs in the magazines. harold ravlin {ihnp4,pur-ee}!uiucdcs!uicsl!hr
oyster@uwmacc.UUCP (Vicious Oyster) (11/25/85)
<eat> The following information was given to me by the former chairman of the local user group's languages SIG: In order to run an program written in Action!, you have to either have the Action! cartridge plugged in, or you have to have purchased special software (another $99?) to tweak it into stand-alone executable mode, i.e. in order for anyone else to run your Action! programs. Since I don't have first-hand information on this, and haven't seen anything about it in any other follow-ups, could somebody with an Action! package confirm or deny this? - Joel ({allegra,ihnp4,seismo}!uwvax!uwmacc!oyster)
Felton.PA@XEROX.ARPA (11/27/85)
I have been using ACTION! for large programming projects for two years now and find it to be far and away the best development environment for the Atari 8-bit computers. ACTION! is a block structured langauge similar to Pascal and C. My best guess as to why Clint Parker (the creator of ACTION!) decided to invent a new language instead of using Pascal and C is that he had his own ideas about what a programming environment on an Atari computer should be like and he didn't want to compromise them for the sake of limited compatability. After all, the idea was to unleash the power of the Atari (e.g. allow assembly language control in a high level environment). This could hardly be done by porting C programs from another environment. The advantage of ACTION! over BASIC could hardly be enumerated in a short message. The primary advantages are: run time speed, structured syntax, accessability to advanced Atari features (DLI's, P/M graphics, etc.). The indentation in an ACTION! program is used purely for readability of the source code. The particular spacing for any given program is based solely on the desires of the programmer that wrote it. John Felton I have no connection with ACTION! or O.S.S. except as a happy customer.
mroddy@enmasse.UUCP (Mark Roddy) (11/27/85)
> <eat> > In order to run an program written in Action!, you have to either have the > Action! cartridge plugged in, or you have to have purchased special software > (another $99?) to tweak it into stand-alone executable mode, i.e. in order > for anyone else to run your Action! programs. > Right, either you need the cartridge, or the software must have been compiled with the runtime package. However, the price of the run time package wasn't $99.00. Actually, you don't need the runtime package to run software compiled with the runtime package, there is lots of PD software written in action and compiled for use by the general public. There is also some commercial stuff, such as Homepac, developed using action. It is the best 6502 development environment around, and is well worth the investment. -- Mark Roddy Net working, Just reading the news. (harvard!talcott!panda!enmasse!comm!mark)
jenkin@utai.UUCP (Michael Jenkin) (11/27/85)
> >(Flame on) >What is the advantage of Action! over BASIC, Pascal or C? Does it fit in one >of these "families" of languages or is it a new one? Why we have such a >proliferation of languages anyway? I'm still trying to learn AB,MBII and >BXE/BXL, familiarizing myself with C, let along trying to learn Pascal and >Action! >(Flame off) Action! is a compact, powerful, structured language. It can easily be used to write sophisticated code taking advantage of specialized system hardware. It compiles quickly, and can be used to generate stand-alone applications. Action! is available as a cartridge from O.S.S. The cartridge takes up 8K of user memory, but contains (I think) 24K worth of code inside. It consists of three different programs (1) a full screen editor. (2) a compiler (3) a run-time support package In addition, O.S.S. offers a stand-alone run-time package (both for commercial and private release), and a toolkit of useful packages. It is possible to write very complicated programs in ACTION!. I have written both an 80 column software card in ACTION! as well as a number of graphics games. In action it is possible to write dli, vbi, and interrupts attached to other system timers. There are a number of bugs in the cartridge, but they have been quite well documented in Analog magazine. To give you an idea of the flavour and power of the machine, I have enclosed a very simple game (the idea of which was stolen from an Analog game which was published in 6502 code). You are a rabbit, and your job is to pick up numbers that appear on the screen. In addition, you have a gun which can be used to shoot the numbers (you don't get any points for them), and to shoot at the walls which will close in on you. You will need a joystick in port #1 to play the game. About ACTION!. Spacing is up to you, the compiler doesn't care. There are a number of tricks in the following code. The first CARD array is allocated memory last, so the address of "last" will contain the first usable memory location. This game builds its own screen and allocates space for the display list, players, etc. Declarations of the form CARD x=$FFFF declare x as a CARD (16 bit unsigned) allocated at memory location $FFFF, while CARD x=[$FFFF] declares x as a CARD with initial value $FFFF. Note that routines can be coded the same way (see SETVBV for example). All declarations are static, and subroutines are not recursive. Code blocks can be included (SAVETEMPS and GETTEMPS are code blocks) to allow machine code to be included in-line. SAVETEMPS and GETTEMPS save the ACTION! registers for interrupt routines. ;---------- cut here ------------ ;* ;* ;* harvey.act - based on an Analog game ;* of the same name. ;* (c) 1985 Michael Jenkin ;* ;* compile with lower case on ;* CARD ARRAY last(2) BYTE ARRAY pm,misl,plr0, plr1, plr2, plr3,dl,sline,rnum, snum,disp,ctbl(3)=[$10 $50 $90], vtbl(3),atbl(3),byloc(2),bxloc(2), metro(2)=[38 41],winc(4),shotx(4), shoty(4),sincx(4),sincy(4), gomsg=['g 'a 'm 'e 0 0 'o 'v 'e 'r],psmsg=['p 'r 'e 's 's 0 0 's 't 'a 'r 't],RTCLOK(3)=$0012, stblx(4)=[$01 $FF 0 0], stbly(4)=[0 0 $01 $FF], harlf1(12)=[0 0 $12 $0A $3C $74 $3C $1C $1E $3E $3F $7E], harlf2(12)=[0 0 $0B $0A $3C $74 $3C $1C $1E $3E $3F $7E], harrt1(12)=[0 0 $48 $50 $3C $2E $3C $38 $78 $7C $FC $7E], harrt2(12)=[0 0 $D0 $50 $3C $2E $3C $38 $78 $7C $7C $EF], harfr1(12)=[0 0 $42 $24 $3C $14 $3C $18 $3C $7E $7E $E7], harfr2(12)=[0 0 $42 $24 $3C $28 $3C $18 $3C $7E $7E $E7], hardn1(12)=[0 0 $44 $24 $3C $14 $3C $18 $3C $7E $FE $07], hardn2(12)=[0 0 $22 $24 $3C $28 $3C $18 $3C $7E $7F $E0], harup1(12)=[0 0 $44 $24 $3C $3C $3C $18 $3C $66 $FE $07], harup2(14)=[0 0 $22 $24 $3C $3C $3C $18 $3C $66 $7F $E0 0 0], mismsk(4)=[$03 $0C $30 $C0], M0PF(4),HPOSM0(4)=$D004 BYTE lives,HPOSP2=$D002,HPOSP3=$D003, harx, hary,SDMCTL=$022F, GRACTL=$D01D,PMBASE=$D407, COLOR2=$02C6,COLOR3=$02C7, COLOR4=$02C8,PCOLR0=$02C0, PCOLR1=$02C1,PCOLR2=$02C2, PCOLR3=$02C3,strigf,tim2st, tictoc,AUDF1=$D200,vol1, HITCLR=$D01E,diesw,vol2, IRQEN=$D20E,GPRIOR=$026F, CONSOL=$D01F,VCOUNT=$D40B, WSYNC=$D40A,COLBK=$D01A, RANDOM=$D20A,AUDC1=$D201, AUDC2=$D203,AUDC4=$D207, AUDC3=$D205,poplt,popft, P0PF=$D004,POPL=$D00C, nsound,freq3,AUDF3=$D204, AUDF2=$D202,ATRACT=$004D, xtemp,ytemp,STICK0=$0278, STRIG0=$0284,HPOSP0=$D000 CARD CDTMV1=$0218,CDTMV2=$021A, CDTMA1=$0226,CDTMA2=$0228 CARD ARRAY pk1(11),pk2(11) DEFINE SAVETEMPS="[$A2 7 $B5 $A8 $48 $CA $10 $FA]", GETTEMPS="[$A2 0 $68 $95 $A8 $E8 $E0 8 $D0 $F8]", XITVBV="[$4C $E462]" PROC SETVBV=$E45C(BYTE areg,xreg,yreg) PROC DLinit() CARD sdlist=$0230 BYTE i BYTE POINTER k pm = (last + $0FFF) & $F000 misl = pm + $180 plr0 = misl + $80 plr1 = plr0 + $80 plr2 = plr1 + $80 plr3 = plr2 + $80 dl = plr3 + $80 sline = dl + 24 rnum = sline + 8 snum = rnum + 8 disp = snum + 4 FOR i = 0 TO 3 DO dl(i) = $70 OD dl(4) = $47 dl(5) = disp & $FF dl(6) = disp RSH 8 FOR i = 7 TO 15 DO dl(i) = $07 OD dl(16) = $70 dl(17) = $70 dl(18) = $46 dl(19) = sline & $FF dl(20) = sline RSH 8 dl(21) = $41 dl(22) = dl & $FF dl(23) = dl RSH 8 SDLIST = dl k = "RABBITS:3 SCORE:0000" FOR i = 0 TO 19 DO k ==+ 1 sline(i) = k^ + $A0 OD Zero(disp,200) RETURN PROC pkinit() pk1(0) = harrt1 pk1(1) = harrt1 pk1(2) = harrt1 pk1(3) = 0 pk1(4) = harlf1 pk1(5) = harlf1 pk1(6) = harlf1 pk1(7) = 0 pk1(8) = hardn1 pk1(9) = harup1 pk1(10)= harfr1 pk2(3) = 0 pk2(0) = harrt2 pk2(1) = harrt2 pk2(2) = harrt2 pk2(3) = 0 pk2(4) = harlf2 pk2(5) = harlf2 pk2(6) = harlf2 pk2(7) = 0 pk2(8) = hardn2 pk2(9) = harup2 pk2(10)= harfr2 RETURN PROC Putnum(BYTE n) BYTE x, y, RANDOM=$D20A DO x = RANDOM IF x < 200 AND disp(x) = 0 THEN EXIT FI OD DO y = RANDOM & $0F IF y < 10 THEN EXIT FI OD disp(x) = y % ctbl(n) atbl(n) = x vtbl(n) = y RETURN PROC Eranum(BYTE n) BYTE x x = atbl(n) disp(x) = 0 RETURN PROC vbgmovr() BYTE n BYTE POINTER j AUDC1 = 0 AUDC2 = 0 AUDC3 = 0 AUDC4 = 0 CDTMV1 = 0 CDTMV2 = 0 j = gomsg FOR n = 0 TO 9 DO disp(85+n) = j^ j ==+ 1 OD j = psmsg FOR n = 0 TO 11 DO disp(144+n) = j^ j ==+ 1 OD RETURN PROC vbwalls() IF winc(0) <> 0 THEN winc(0) ==- 1 IF byloc(0) > 30 THEN byloc(0) ==- 1 FI FI IF winc(1) <> 0 THEN winc(1) ==- 1 IF byloc(1) <= 204 THEN byloc(1) ==+ 1 FI FI IF winc(2) <> 0 THEN winc(2) ==- 1 HPOSP2 = bxloc(0) IF bxloc(0) > 39 THEN bxloc(0) ==- 1 FI FI IF winc(3) <> 0 THEN winc(3) ==- 1 HPOSP3 = bxloc(1) IF bxloc(1) < 208 THEN bxloc(1) ==+ 1 FI FI RETURN PROC vbplayer() BYTE d,x CARD pic xtemp = 0 ytemp = 0 IF STICK0 <> $0F AND (RTCLOK(2) & $07) <> 0 THEN AUDF2 = $10 VOL2 = $04 FI d = STICK0 - 5 IF (RTCLOK(2) RSH 3 & 1) = 1 THEN pic = pk1(d) ELSE pic = pk2(d) FI d = STICK0 FOR x = 0 TO 3 DO IF (d & 1) = 0 THEN xtemp = stblx(3-x) ytemp = stbly(3-x) FI d = d RSH 1 OD IF POPLT = $0C THEN rnum(0) ==- 1 lives ==- 1 diesw ==+ 1 FI IF (POPLT & $04) <> 0 THEN harx ==+ 1 xtemp = 0 FI IF (POPLT & $08) <> 0 THEN harx ==- 1 xtemp = 0 FI IF (byloc(0) + 2) RSH 1 = hary THEN rnum(0) ==- 1 lives ==- 1 diesw ==+ 1 FI IF (hary + 10) * 2 = byloc(1) THEN rnum(0) ==- 1 lives ==- 1 diesw ==+ 1 FI harx ==+ xtemp HPOSP0 = harx hary ==+ ytemp MoveBlock(plr0+hary,pic,14) RETURN PROC vbgun() BYTE t,x,n,shots=[0] t = strigf strigf = STRIG0 IF strigf = 0 AND (xtemp % ytemp) <> 0 THEN FREQ3 = $40 AUDC3 = $04 shots ==+ 1 x = shots & 3 sincx(x) = xtemp * 2 sincy(x) = ytemp * 2 shotx(x) = harx + 3 shoty(x) = hary + 8 FI Zero(misl,$80) FOR x = 0 TO 3 DO IF (sincx(x) % sincy(x)) <> 0 THEN shoty(x) ==+ sincy(x) IF shoty(x)*2+2 >= byloc(1) THEN sincx(x) = 0 sincy(x) = 0 winc(1) ==+ 8 FI IF shoty(x)*2-10 <= byloc(0) THEN sincx(x) = 0 sincy(x) = 0 winc(0) ==+ 8 FI t = shoty(x) misl(t) ==% mismsk(x) misl(t+1) ==% mismsk(x) t = M0PF(x) n = 0 DO IF (t&1) = 1 THEN eranum(n) putnum(n) EXIT FI t = t RSH 1 N ==+ 1 IF N = 4 THEN EXIT FI OD shotx(x) ==+ sincx(x) HPOSM0(x) = shotx(x) IF shotx(x) >= bxloc(1) THEN sincx(x) = 0 sincy(x) = 0 winc(3) ==+ 8 FI IF shotx(x)-6 <= bxloc(0) THEN sincx(x) = 0 sincy(x) = 0 winc(2) ==+ 8 FI FI OD t = 0 FOR x = 0 TO 3 DO t ==% sincx(x) % sincy(x) OD IF t = 0 THEN AUDC3 = 0 FI FOR t = 0 TO 2 DO IF P0PF RSH 1 = 1 THEN eranum(t) x = vtbl(t) putnum(t) n = 3 snum(n) ==+ x DO IF snum(n) > '9 +$A0 THEN snum(n) = '0 +$A0 IF n = 0 THEN EXIT ELSE n ==- 1 FI ELSE EXIT FI OD FI OD RETURN PROC vb() BYTE n SAVETEMPS IF diesw <> 0 AND lives = 0 THEN vbgmovr() GETTEMPS XITVBV FI poplt = POPL popft = P0PF IF nsound > 0 THEN nsound ==- 1 AUDC4 = (nsound RSH 1) % $A0 FI IF vol1 > 0 THEN vol1 ==- 1 AUDC1 = vol1 % $C0 FI IF vol2 > 0 THEN vol2 ==- 1 AUDC2 = vol2 % $80 FI freq3 = freq3 * 4 AUDF3 = freq3 IF diesw <> 0 THEN diesw ==+ 1 PCOLR0 ==+ 2 AUDF2 = PCOLR0 * 8 AUDC2 = $88 GETTEMPS XITVBV FI vbwalls() ATRACT = 0 vbplayer() vbgun() HITCLR = 0 GETTEMPS XITVBV PROC t1() SAVETEMPS IF tim2st <> 2 THEN tim2st ==- 1 FI CDTMV1 = 256 rnum(0) = vtbl(0) + $A0 GETTEMPS RETURN PROC t2() SAVETEMPS CDTMV2 = tim2st byloc(0) ==+ 1 byloc(1) ==- 1 bxloc(0) ==+ 1 HPOSP2 = bxloc(0) bxloc(1) ==- 1 HPOSP3 = bxloc(1) tictoc ==! 1 AUDF1 = metro(tictoc) vol1 = $08 GETTEMPS RETURN PROC init() BYTE i, GPRIOR = $026F rnum(0) = '3+$A0 lives = 3 FOR i = 0 TO 3 DO snum(i) = '0+$A0 OD FOR i = 0 TO 2 DO putnum(i) OD Zero(disp,200) RETURN PROC play() BYTE i GPRIOR = $04 byloc(0) = 40 byloc(1) = 196 bxloc(0) = 60 bxloc(1) = 184 HPOSP2 = 60 HPOSP3 = 184 harx = 122 hary = 55 SDMCTL = $2E GRACTL = 3 PMBASE = pm RSH 8 COLOR2 = $96 COLOR3 = $48 PCOLR0 = $18 PCOLR1 = $98 PCOLR2 = $34 PCOLR3 = $C4 strigf = 1 SETVBV(7,VB RSH 8, VB & $FF) CDTMA1 = t1 CDTMA2 = t2 CDTMV1 = 256 HITCLR = 0 diesw = 0 tictoc = 0 vol1 = 0 vol2 = 0 IRQEN = 0 FOR i = 0 TO 2 DO winc(i) = 0 shotx(i) = 0 shoty(i) = 0 sincx(i) = 0 sincy(i) = 0 OD Zero(plr0,$80) Zero(plr1,$80) SetBlock(plr2,$0080,$FF) SetBlock(plr3,$0080,$FF) RETURN PROC MAIN() BYTE i=[0],a,b,n BYTE ARRAY grp2(4)=$D00F pkinit() DLINIT() init() play() DO i = (i + 1) & 1 a = byloc(i) RSH 1 b = byloc(i) & 1 WHILE VCOUNT <> a DO OD IF b = 1 THEN WSYNC = 1 FI COLBK = RANDOM & $F6 FOR n = 0 TO 9 DO grp2(i) = 0 WSYNC = 1 COLBK = RANDOM & $F6 OD COLBK = COLOR4 IF (consol & 1) = 0 THEN DLINIT() init() play() ELSEIF lives <> 0 AND diesw <> 0 THEN play() FI OD RETURN -- -- Michael Jenkin University of Toronto USENET: {decvax,ihnp4,allegra}!utcsri!utai!jenkin CSNET: jenkin@Toronto BELL: 416-978-7321
ln63fkn@sdcc7.UUCP (Paul van de Graaf) (11/28/85)
In article <1731@uwmacc.UUCP> oyster@uwmacc.UUCP (Vicious Oyster) writes: > In order to run an program written in Action!, you have to either have the >Action! cartridge plugged in, or you have to have purchased special software >(another $99?) to tweak it into stand-alone executable mode, i.e. in order >for anyone else to run your Action! programs. > >... [C]ould somebody with an Action! package confirm or deny this? Yes, you either need the cartridge or the run-time package (~ $30.00). I'm working on a program in Action! which adds the run-time package copied from your cartridge to the end of an Action! executable, and patches all the calls to the run-time library. This project has a somewhat low priority, but I should get it finished by the end of the year. I'll either put it in the public domain, or sell it to Analog. Don't see how you could have come up with a price of $99 for the Action! cartridge, I got mine for $59.00. Shop around! Paul van de Graaf sdcsvax!sdcc7!ln63fkn U. C. San Diego
oyster@uwmacc.UUCP (Vicious Oyster) (11/29/85)
In article <192@sdcc7.UUCP> ln63fkn@sdcc7 writes: >Don't see how you could have come up with a price of $99 for the Action! >cartridge, I got mine for $59.00. Shop around! > I think I got the $99 from adding in the cost of the run-time thing. It was over a year ago that I was considering buying it, so my memory is admittedly hazy. I wasn't trying to scare anybody away from Action! Honest! Incidentally, now that I have had a good chance to find out what a royal pain it is to use either assembler or cheap C "compilers", I'm once again considering buying Action!. I'd be interested in hearing about the program you mentioned. I'd also be interested in your experiences with selling it to Analog, if you decide to go that route. One more question I have about Action!: is it a true source-->machine code compiler, or does it translate to p-code a la Deep Blue C? - Joel ({allegra,ihnp4,seismo}!uwvax!uwmacc!oyster)