Jump to content
IGNORED

LADS Assembler


tjb

Recommended Posts

Does anyone know where I might find the Atari version of this assembler. It's the one that is built/described in the Second Book of Machine Language by Richard Mansfield.

 

Thanks,

tjb

Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

 

Not in the books I did. I didn't do those two books though. If you find any, please let me or the site's admin know where they are.

 

Allan

Edited by Allan
Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

True, not to mention you'd need the MLX program to enter it. I was actually thinking of throwing together a perl script to do the same thing. I dunno.

 

tjb

Link to comment
Share on other sites

I'd be more than happy to take a break from my project and do a little typing into MLX (pissed at myself for doing a SAVE #D:CASTLE.M65, when it should have been a SAVE #D:TRAINING.M65, only lost a good chunk of what I've been working on, not to mention my eyes are going buggy trying to encode levels with my custom bitfields)... Something nostalgic about typing in a program that way... Brings back warm and fuzzy memories...

 

I'll try tackling it tonight... If there is any typos in the OCR scan, then MLX will pick it up as the last byte value of every line is the checksum...

Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

True, not to mention you'd need the MLX program to enter it. I was actually thinking of throwing together a perl script to do the same thing. I dunno.

 

tjb

 

If you're planning on writing a PERL script to convert to a binary you may run into some problems as I've discovered a couple of checksum errors so far in 3 lines. One line I was able to figure out by trial and error in MLX, but the other two I'll have to wait to throw those 12 bytes (hopefully finding no more) into the binary with a debugger...

Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

True, not to mention you'd need the MLX program to enter it. I was actually thinking of throwing together a perl script to do the same thing. I dunno.

 

tjb

 

If you're planning on writing a PERL script to convert to a binary you may run into some problems as I've discovered a couple of checksum errors so far in 3 lines. One line I was able to figure out by trial and error in MLX, but the other two I'll have to wait to throw those 12 bytes (hopefully finding no more) into the binary with a debugger...

 

My Perl script flagged a number of lines where the checksum didn't match. I'm going to double check the script. It also flagged a few lines that had scan errors such as:

 

Invalid line: 34958:253,153,024,17v,255,153,129

Invalid line: 35696:1737185,153,201,032,208,040

Invalid line: 36428:032,011,145,173,188,154,01I

Invalid line: 36998:003;048,001,096,169,000,195

Invalid line: 37334:032.230,216,160,000,140,224

Invalid line: 38216:230,204,076,245,148,206;157

Invalid line: 38402:133,203,141,035,146.056,204

Invalid line: 39080:080,08S,083,066,067,083,123

Invalid line: 39446:0455045,045,045,045,045,036

 

I'm hoping the lines that have bad checksums are also caused by scan errors. Since I have the actual book I'm going to try and correct the lines and hopefully build an executable file using the script. As soon as I get a working copy I'll post it.

 

tjb

Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

True, not to mention you'd need the MLX program to enter it. I was actually thinking of throwing together a perl script to do the same thing. I dunno.

 

tjb

 

If you're planning on writing a PERL script to convert to a binary you may run into some problems as I've discovered a couple of checksum errors so far in 3 lines. One line I was able to figure out by trial and error in MLX, but the other two I'll have to wait to throw those 12 bytes (hopefully finding no more) into the binary with a debugger...

 

My Perl script flagged a number of lines where the checksum didn't match. I'm going to double check the script. It also flagged a few lines that had scan errors such as:

 

Invalid line: 34958:253,153,024,17v,255,153,129

Invalid line: 35696:1737185,153,201,032,208,040

Invalid line: 36428:032,011,145,173,188,154,01I

Invalid line: 36998:003;048,001,096,169,000,195

Invalid line: 37334:032.230,216,160,000,140,224

Invalid line: 38216:230,204,076,245,148,206;157

Invalid line: 38402:133,203,141,035,146.056,204

Invalid line: 39080:080,08S,083,066,067,083,123

Invalid line: 39446:0455045,045,045,045,045,036

 

I'm hoping the lines that have bad checksums are also caused by scan errors. Since I have the actual book I'm going to try and correct the lines and hopefully build an executable file using the script. As soon as I get a working copy I'll post it.

 

tjb

 

So far with MLX, all I have is line 35666 & line 35738... You definately want to check your script as these lines weren't flagged by your program, but were flagged by MLX...

Link to comment
Share on other sites

You can find the object code (and the text of the book) online here: http://www.atariarchives.org/2bml/appendix_b.php

 

Simple copy and paste should get it up and running quickly...

 

There are probably a ton of typo/OCR errors... I know there are quite a few in the copy of Mapping the Atari, on the same site.

True, not to mention you'd need the MLX program to enter it. I was actually thinking of throwing together a perl script to do the same thing. I dunno.

 

tjb

 

If you're planning on writing a PERL script to convert to a binary you may run into some problems as I've discovered a couple of checksum errors so far in 3 lines. One line I was able to figure out by trial and error in MLX, but the other two I'll have to wait to throw those 12 bytes (hopefully finding no more) into the binary with a debugger...

 

My Perl script flagged a number of lines where the checksum didn't match. I'm going to double check the script. It also flagged a few lines that had scan errors such as:

 

Invalid line: 34958:253,153,024,17v,255,153,129

Invalid line: 35696:1737185,153,201,032,208,040

Invalid line: 36428:032,011,145,173,188,154,01I

Invalid line: 36998:003;048,001,096,169,000,195

Invalid line: 37334:032.230,216,160,000,140,224

Invalid line: 38216:230,204,076,245,148,206;157

Invalid line: 38402:133,203,141,035,146.056,204

Invalid line: 39080:080,08S,083,066,067,083,123

Invalid line: 39446:0455045,045,045,045,045,036

 

I'm hoping the lines that have bad checksums are also caused by scan errors. Since I have the actual book I'm going to try and correct the lines and hopefully build an executable file using the script. As soon as I get a working copy I'll post it.

 

tjb

 

So far with MLX, all I have is line 35666 & line 35738... You definately want to check your script as these lines weren't flagged by your program, but were flagged by MLX...

 

Actually it did flag those lines as having invalid checksums, I just didn't include them:

 

Bad checksum for line: 35666:240,067,201,058,240,063,187 (s\b 183)

Bad checksum for line: 35738:141,186,255,076,104,139,185 (s\b 31)

 

It flagged so many I felt it might be the script so I didn't include them. Here's the full list it generated:

 

Bad checksum for line: 33876:032,248,132,076,104,132,042 (s\b 40)

Invalid line: 34958:253,153,024,17v,255,153,129

Bad checksum for line: 15618:174,208,154,208,009,032,051 (s\b 19)

Bad checksum for line: 35666:240,067,201,058,240,063,187 (s\b 183)

Invalid line: 35696:1737185,153,201,032,208,040

Bad checksum for line: 35738:141,186,255,076,104,139,185 (s\b 31)

Bad checksum for line: 35810:008,170,226,154,240,003,006 (s\b 3)

Bad checksum for line: 35834:002,002,011,145,056,173,157 (s\b 127)

Bad checksum for line: 35972:032,014,145,162,001,032,066 (s\b 6)

Bad checksum for line: 36014:063,141,174,192,154,076,203 (s\b 206)

Bad checksum for line: 36098:002,033,042,145,173,191,044 (s\b 76)

Bad checksum for line: 36212:145,032,005,142,076,169,193 (s\b 173)

Bad checksum for line: 36272:222,154,203,001,096,141,230 (s\b 225)

Bad checksum for line: 36290:154,002,036,145,032,014,095 (s\b 65)

Bad checksum for line: 36226:173,227,154,240,009,173,182 (s\b 82)

Invalid line: 36428:032,011,145,173,188,154,01I

Bad checksum for line: 36536:191,144,153,144,153,032,231 (s\b 233)

Bad checksum for line: 36686:165,136,141,230,154,165,645 (s\b 45)

Bad checksum for line: 36746:032,121,141,258,221,154,021 (s\b 41)

Bad checksum for line: 36958:141,223,154,076,190,143,233 (s\b 253)

Bad checksum for line: 36944:169,046,052,036,145,169,165 (s\b 185)

Bad checksum for line: 36980:169,080,052,016,145,032,101 (s\b 98)

Invalid line: 36998:003;048,001,096,169,000,195

Bad checksum for line: 37022:074,141,104,104,076,220,069 (s\b 109)

Invalid line: 37334:032.230,216,160,000,140,224

Bad checksum for line: 37386:133,135,032,043,136,173,152 (s\b 150)

Bad checksum for line: 37194:192,154,141,187,154,173,251 (s\b 51)

Bad checksum for line: 37550:009,146,208,004,240,013,056 (s\b 26)

Bad checksum for line: 27586:000,133,162,169,002,133,041 (s\b 25)

Bad checksum for line: 37784:201,059,206,003,238,064,157 (s\b 155)

Bad checksum for line: 37802:201,121,176,002,041,095,040 (s\b 38)

Bad checksum for line: 37874:147,169,082,131,203,169,121 (s\b 119)

Bad checksum for line: 38924:000,000,000,000,169,000,049 (s\b 181)

Invalid line: 38216:230,204,076,245,148,206;157

Bad checksum for line: 38288:149,096,133,201,132,204,037 (s\b 35)

Bad checksum for line: 38312:001,141,035,146,172,054,206 (s\b 205)

Bad checksum for line: 38324:173,051,146,141,017,146,106 (s\b 86)

Bad checksum for line: 38316:056,173,047,146,237,053,136 (s\b 116)

Bad checksum for line: 38342:146,141,039,146,171,048,123 (s\b 121)

Bad checksum for line: 38172:039,146,240,022,032,067,006 (s\b 62)

Invalid line: 38402:133,203,141,035,146.056,204

Bad checksum for line: 38414:173,052,146,131,204,141,095 (s\b 93)

Bad checksum for line: 36438:048,146,237,052,146,141,040 (s\b 88)

Bad checksum for line: 38636:012,231,148,096,032,246,253 (s\b 233)

Bad checksum for line: 38720:061,146,133,204,056,171,069 (s\b 67)

Bad checksum for line: 38804:169,007,103,131,032,025,133 (s\b 103)

Bad checksum for line: 38876:162,076,003,128,175,062,056 (s\b 58)

Bad checksum for line: 38906:087,147,169,004,133,130,155 (s\b 152)

Bad checksum for line: 33924:003,169,032,157,069,003,189 (s\b 53)

Bad checksum for line: 38906:080,157,073,003,169,007,001 (s\b 227)

Bad checksum for line: 38942:157,066,003,002,002,145,179 (s\b 149)

Bad checksum for line: 39026:084,080,066,067,083,066,051 (s\b 48)

Invalid line: 39080:080,08S,083,066,067,083,123

Bad checksum for line: 39176:088,033,067,076,086,075,230 (s\b 177)

Bad checksum for line: 39200:000,002,000,002,004,004,004 (s\b 44)

Bad checksum for line: 39290:248,120,186,154,184,334,224 (s\b 68)

Bad checksum for line: 39404:000,000,000,000,000,000,216 (s\b 236)

Invalid line: 39446:0455045,045,045,045,045,036

Bad checksum for line: 39458:194,242,225,238,227,212,112 (s\b 92)

Bad checksum for line: 39476:229,000,212,238,220,229,165 (s\b 156)

 

 

Obviously this needs to be verified so I would take it with a grain of salt. You might see how it compares with MLX however.

I would think it would be the script. Surely there aren't that many errors!

 

tjb

Link to comment
Share on other sites

Well I made some progress. It seems the errors spit out by my script are real according to the book. After correcting them I can create a binary load file but when I try to load it into Atari800Win+ it crashes. I'm sure it's something I did wrong. Still working on it...

 

tjb

Link to comment
Share on other sites

Well it seems the listing at AtariArchives was missing a line. Since the address of each line should be six bytes ahead of the last it was easy to modify my perl script to report when an address was incorrect. I then typed in the missing line. At present I have a binary load file but after I load it control immediately returns to DOS. My script adds a block for 736,737 to provide a run address of 32768. Any suggestions? I'll attach the binary so that maybe someone can eyeball it to see if they see anything obvious? BTW, I had to rename the file from .com to .txt so I would be allowed to upload it.

 

Thanks,

tjb

 

lads.txt

Link to comment
Share on other sites

At present I have a binary load file but after I load it control immediately returns to DOS. My script adds a block for 736,737 to provide a run address of 32768. Any suggestions? I'll attach the binary so that maybe someone can eyeball it to see if they see anything obvious? BTW, I had to rename the file from .com to .txt so I would be allowed to upload it.

 

That run address can't be right. Location 32768 just contains an RTS, which is why it returns to DOS immediately. Location 32769 contains a "JMP $92CB", and $92CB also contains an RTS... I tried setting the run address to $8004 (32772), which is the first bit of code that doesn't immediately return to DOS, but it just locks up...

 

(time passes while I mess with it...)

 

OK, it looks like your script added a stray byte, $60, first byte after the 6-byte header. The binary you posted has 6853 bytes of object code... MLX uses 6-byte lines, and 6853 isn't divisible by 6... but 6852 is. Since an RTS at $8000 doesn't make sense (the book says the entry point is $8000), I just used a hex editor to remove that one byte, adjusted the ending address in the header down by 1, loaded the file, and got "LADS Ready."

 

I wrote, assembled, and ran a 3-line program with it, and it seems to work fine.

 

Here's the edited binary (zipped to make the forum software happy): lads.zip

  • Like 1
Link to comment
Share on other sites

At present I have a binary load file but after I load it control immediately returns to DOS. My script adds a block for 736,737 to provide a run address of 32768. Any suggestions? I'll attach the binary so that maybe someone can eyeball it to see if they see anything obvious? BTW, I had to rename the file from .com to .txt so I would be allowed to upload it.

 

That run address can't be right. Location 32768 just contains an RTS, which is why it returns to DOS immediately. Location 32769 contains a "JMP $92CB", and $92CB also contains an RTS... I tried setting the run address to $8004 (32772), which is the first bit of code that doesn't immediately return to DOS, but it just locks up...

 

(time passes while I mess with it...)

 

OK, it looks like your script added a stray byte, $60, first byte after the 6-byte header. The binary you posted has 6853 bytes of object code... MLX uses 6-byte lines, and 6853 isn't divisible by 6... but 6852 is. Since an RTS at $8000 doesn't make sense (the book says the entry point is $8000), I just used a hex editor to remove that one byte, adjusted the ending address in the header down by 1, loaded the file, and got "LADS Ready."

 

I wrote, assembled, and ran a 3-line program with it, and it seems to work fine.

 

Here's the edited binary (zipped to make the forum software happy): lads.zip

 

Cool, thanks! We now have a working copy of LADS!

 

tjb

Link to comment
Share on other sites

Cool, thanks! We now have a working copy of LADS!

 

The acid test would be to use that copy of LADS to assemble the LADS source from the book. If it works, and if the object code is the same, we know it's a "golden" copy of LADS.

 

Looks like the source code is scattered throughout the book... and probably full of OCR errors, too :(

 

The other way to prove it's correct would be for someone who has the book to print a decimal dump (6 bytes per line) and compare each line of the dump to the MLX code in the book... but man, that would be tedious. It's 1142 lines of MLX, if we knew 5 or 10 people who owned the book, we could split the job up and have everyone verify a chunk of the code... but I don't have a copy of it (wanted it *real* bad back in the day though).

Link to comment
Share on other sites

Cool, thanks! We now have a working copy of LADS!

 

The acid test would be to use that copy of LADS to assemble the LADS source from the book. If it works, and if the object code is the same, we know it's a "golden" copy of LADS.

 

Looks like the source code is scattered throughout the book... and probably full of OCR errors, too :(

 

The other way to prove it's correct would be for someone who has the book to print a decimal dump (6 bytes per line) and compare each line of the dump to the MLX code in the book... but man, that would be tedious. It's 1142 lines of MLX, if we knew 5 or 10 people who owned the book, we could split the job up and have everyone verify a chunk of the code... but I don't have a copy of it (wanted it *real* bad back in the day though).

 

So far I've been using MLX and only ran into two lines of problems...

Link to comment
Share on other sites

Cool, thanks! We now have a working copy of LADS!

 

The acid test would be to use that copy of LADS to assemble the LADS source from the book. If it works, and if the object code is the same, we know it's a "golden" copy of LADS.

 

Looks like the source code is scattered throughout the book... and probably full of OCR errors, too :(

 

The other way to prove it's correct would be for someone who has the book to print a decimal dump (6 bytes per line) and compare each line of the dump to the MLX code in the book... but man, that would be tedious. It's 1142 lines of MLX, if we knew 5 or 10 people who owned the book, we could split the job up and have everyone verify a chunk of the code... but I don't have a copy of it (wanted it *real* bad back in the day though).

 

So far I've been using MLX and only ran into two lines of problems...

 

Are you typing in it from the book or from what is posted at Atari Archives?

 

tjb

Link to comment
Share on other sites

  • 3 years later...

My original Lads disk is no longer viable, so I found this thread and ultimately the posted .Zip of the LADS.COM -- thanks!

 

But out of curiosity, I tried to make a working copy from the MLX Lads Data file, and thus far, no success. So I was wondering -- was anyone ever to make a working version of Lads via MLX and the Atari Archives data? When I load the data into MLX, everything appears to go fine, but LADS just dies after loading the resulting binary file. Doing a byte compare, the MLX-generated program is different than the Lads.com posted here. (?)

 

Maybe my copy of MLX is at fault, so I'll try another copy of MLX, but in the meantime, did anyone else have success with MLX?

 

-Larry

Link to comment
Share on other sites

FWIW -- After working with this a bit, I believe I see the problem. The Atari LADS: MLX Format (as posted at Atari Archives) is identical to the data as shown in the book. Unfortunately, that is designed to be typed in in the form

 

byte,byte,byte,byte,byte,byte,"checksum". (Note that the address and colon is generated by MLX)

 

If you type in a few lines and SAVE them, it SAVEs the bytes of data without the checksums.

But if you try to LOAD the data file from Atari Archives (at the very least), the included addresses & checksums in the data definitely create errors in the BLOAD file. In order to be able to use the data from Atari Archives, you would need to get rid of everything except the data bytes.

 

Hence the use of scripts or some type of parsing, say in BASIC.

 

So the short answer (I believe) is it can't be done with MLX and the data file -- without typing the whole thing in.

 

-Larry

Link to comment
Share on other sites

  • 5 years later...
  • 5 years later...

If you're still looking for a copy of LADS, I have one, it seems to be working in an emulator.  I can't seem to get the paperclip icon below to work, though, so I'm not sure how to attach it.  I have a file called LADS.OBJ which I can load using DOS and I get the "LADS Ready." prompt.  I also have an .ATR image of the disk it came on with a number of (I believe) sample programs.

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...