RetroRetrospective – Fun today with yesterday’s gear……..
Archive for the ‘Programming’ Category

  Yes, you read that correctly – AppleWin for the Mac.  Well, not quite.  It is the same current release of AppleWin for Windows users, what I’ve done is use WineBottler to package up the download into a self contained app that uses Wine to provide the Windows API support. If you don’t want to compile Wine yourself, there are pre-compiled Wine installers on the WineBottler download page. So, why would I want to do this on my MacPro? That’s a very good question.  Most of the time I use Virtual ][ to emulate an Apple][, but when rebuilding my development environment to the MacPro I could find my license key, and as I was doing clean installs of my software that became a bit of a problem, so I’ve emailed and asked if it would be possible to retrieve my license keys (fingers crossed that comes through), but back to this story.

Way back in the day on of my favourite programming tools was Nibble BASIC from the Nibble Magazine.  It allowed you to write Applesoft programs without line numbers, and added additional commands such as If/ElseIf/Else, and Loop/EndLoop, as well as Goto and Gosub labels rather than using line numbers. I added extra commands such as Repeat/Until and While/EndWhile, and “Turtle” like graphic commands. In a previous RetroChallenge I was going to re-write Nibble BASIC in itself, but my project this time is to write an external “compiler” to take an enhanced Applesoft like script and convert it to run on an Apple][. My target script is a version of the traditional “Hello World” program below: # RetroChallenge 2016/10 # Hello World Program my String$  = “Hello World” my Counter% = 10 my Count%   = 1 my Co%      = 2 my Characters_Per_Line = 40 home for i = 1 to Counter%    Co% = centre_text(Characters_Per_line,String$) next  Print “String$ [“;String$;”]” PRINT “Counter%>”;Counter% ?     “Count%  >”;Count% print “Co%     >”;Co% sub centre_text    my line_size = shift    my text$     = shift    my start_character = int(len(text$)/2))    htab start_character : print text$ return(start_character) So, in a nutshell, declared variables with full name support, not just up to the first two characters, called subroutines passing and returning  values (no recursion support) , and case insensitive commands. If time permits, I’ll add additional Applesoft commands to the parser.

. . . Also known as Retro Procrastination: Things Achieved: Sorted out back section of the 8Bit Bunker Laid 2 boxes of carpet squares (10 sqm) in tidied up area Setup Lounge on carpeted area Setup very retro CRT TV to watch the tennis Cleared and setup second desk to provide work-space for  RetroChallenge programming Things Not Achieved: RetroChallenge programming Stay tuned for further Retro Procrastination Updates.

Thought I’d get a jump on the rewriting of S-Basic in S-Basic by dumping the S-Basic Applesoft code to a text file, then reformatting it as S-Basic, then running it through S-Basic5.3 on my disk image. Great idea, but . . . . . The code is just too unstructured.  Too many unexpected terminations within a routine using a GOTO that drops you part way into another routine.  Arrrrrrrrgh! I love structure, indenting, flow control, so looks like I’ve got to do it myself then. So back to my original plan of writing from scratch using the Applesoft listing as a guide only.

OK, so it’s summer here in Australia, so what is this “Winter Warmup” thing.  2014WW is the Retrochallenge and to quote the site: “In a nutshell, the RetroChallenge is a loosely disorganised gathering of RetroComputing enthusiasts who collectively do stuff with old computers for a month. The event is very much open to interpretation… individuals set there own challenges, which can range from programming to multimedia work; hardware restoration to exploring legacy networking… or just plain dicking around. It really doesn’t matter what you do, just so long as you do it. While the RetroChallenge has its competitive side, it’s not really a contest… it’s more like global thermonuclear war — everyone can play, but nobody really wins.”

There is a new podcast coming from the Retrobits family by Earl Evans for all us  ‘ancient’ programmers.  Called “?NEXT WITHOUT FOR” it aims to discuss retro programming languages and systems, as well as new tools for current systems for creating programs to run on the old iron. This got me thinking and remembering, that back in the 80’s and 90’s I used a mainframe document generation system called DCF (Document Composition Facility and as well as a GML (Generalised Markup Language) extension it had quite a powerful scripting language itself. One inadequacy that I encountered early on using DCF, was that there was very little loop control/processing available, so I created my own FOR/NEXT command, and to celebrate Earl’s new  “?NEXT WITHOUT FOR” podcast, I’ve decided to post the code for my FOR and NEXT commands.

I was tidying up my desk and found my copy of “Creating Adventure Games On Your Computer” by Tim Hartnell, I’d recently purchased off AbeBooks, and the little voice in the back of my head said, “This is it.  This is the Macrosoft project you’ve been looking for.”

October 26th, 2012

My First Macrosoft Program

No Comments, Apple2, Programming, by Michael.

The time had come. Time to use the Macrosoft programming language for my MindCraft Assembler. Time to realise I’d forgotten more about ProDOS than I’d thought! Tried booting the Macrosoft disk image on my Virtual][ emulator, only to find that it is not a bootable disk. What’s going on here? Tried the Assembler disk, and that booted up fine. Surely I couldn’t have been supplied a faulty disk image. Surely not? Desperate times call for desperate means . Yes, time to read the manual. (Technical types are permitted to cringe)

October 2nd, 2012

Programming my Apple //c

2 Comments, Apple2, Programming, by Michael.

I’ve been wanting to get back into programming on my Apple //c for quite a while now, but didn’t want to go back to AppleSoft.  Back in the 80s I was an avid reader of the Nibble Magazine, and remember a series of advertisements for an assembler macro extension programming language.