Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!bloom-beacon!oberon!cit-vax!ucla-cs!zen!ucbcad!ames!ptsfa!ihnp4!cuae2!killer!elg From: elg@killer.UUCP (Eric Green) Newsgroups: comp.sys.cbm Subject: Re: Commodore Macro Assembler -- long review Message-ID: <1388@killer.UUCP> Date: Sun, 23-Aug-87 04:05:38 EDT Article-I.D.: killer.1388 Posted: Sun Aug 23 04:05:38 1987 Date-Received: Sun, 23-Aug-87 22:38:42 EDT References: <894@edge.UUCP> Organization: Bayou Telecommunications Lines: 73 in article <894@edge.UUCP>, doug@edge.UUCP (Doug Pardee) says: > a) [For those which include an editor] full screen editing: CMA includes > a program they call an editor which simply patches the BASIC editor so > that you can save text de-tokenized without line numbers, and to load > and auto-number unnumbered text. I always used Easy Script to write my Commodore assembler files. In fact, that's the only reason I bought Easy Script (this was way back in the dark ages) -- it produces standard Commodore ASCII files. In reality, any word processor capable of exporting data as a standard Commodore ASCII file, can be used to write Commodore assembler code. > b) Mnemonics, pseudos, and overall syntax conforms to recognized standards: > CMA basically does -- I'm not knowledgeable on the more exotic standards > like macro definition syntax for the 6502. You better bet it does. The assembler documentation is only barely translated from the documentation of the MOS mainframe cross-assembler. I remember being amused by the mainframisms that had escaped the editor. > The monitor supplied is pretty simplistic. I mean, it doesn't even have a > "breakpoint" command. You want breakpoints? Just patch in a 00 byte at the > appropriate spot (after writing down the original contents so you can patch > it back). It also mangles the system vectors such that the only way to exit > the monitor is to do a hard reset; this is unnecessarily primitive. Use a "g e39b" to do a warmstart of BASIC. or whatever 64738 is for a cold start. The problem is that it uses zero page locations that BASIC also uses, FUBAR'ing the BASIC interpreter. But there's no zero page locations that BASIC does NOT use! :-). Actually, I'm surprised you didn't mention the biggest and main drawback of the Commodore assembler -- 6 character labels. Yeah, I know IBM people think 6 characters is enough to write Shakespeare in, but us ordinary folks have trouble thinking up meaningful 6-character label names. Leading to the situation where you have 10 labels in a row named "loop1" "loop2" ... "loop10". 6 significant characters is OK if it allows labels longer, but lops off the excess. But the CMA won't generate code if there's a 7-character label -- it barfs (Bad ARgument Function, for Maclispers :-). That was what led to me getting the Merlin assembler -- it was non-standard, but at least it allowed 12-character labels, and had some rudimentary macro capabilities. The three C-64 assemblers I've had much experience with are CMA, Merlin, and PAL. PAL is a pile of garbage, I can't believe anybody ever paid money for that thing, but Steve Punter's file-transfer code is written with it, so I gotta use it for that. Merlin is non-standard, but usable -- my biggest problem was finding a text editor that'd edit its files (finally, I settled on the full-screen editor that comes with the PROMAL compiler). CMA has that problem with 6-character labels (I prefer "stringmovlp" to "loop23" :-). Although there is a hacked CMA going about that allows 12-character labels (courtesy of the guys at Fiscal Information, who accidently left it on one of their early hard drives when it was shipped -- Xetec markets their hard drive now). The assembler I use now is CASM under the C-Power environment in Commodore-128 mode. It produces relocatable code, and has most of the features of the CBM assembler (minus macros). Nice to only re-assemble one 500-line file instead of having to assemble 3,000 lines spread over 5 files all at one time.... like the C-Power full-screen editor, too. The all-time winner seems to be the assembler that Fred Bowen promised us, a CBM assembler for the 128 mode, which produces relocatable code, AND has all the macro etc. capabilities.... and speed, too (CASM, since it is written in "C", is kinda sluggish, if ya know what I mean). Unfortunately, that's currently vapor-ware (C'mon, Fred, tell QA to hurry up!). We'll have to see... but I do know that my check (well, Bayou Telecommunication's check) is going in the mail as soon as that li'l baby is announced (why not, I've collected just about every other assembler worth collecting!). -- Eric Green elg%usl.CSNET Ollie North for President: {cbosgd,ihnp4}!killer!elg A man we can believe (in). Snail Mail P.O. Box 92191 Lafayette, LA 70509 BBS phone #: 318-984-3854 300/1200 baud