Close
0%
0%

Exploring the Microprofessor

A journey to explore and better understand the Multitech Microprofessor machines in my retro computer collection

Public Chat
Similar projects worth following
The Microprofessor series of educational Z80 single board computers always intrigued me. They were quite popular in the early 80s - computer learning packages including the MPF-1B were advertised even on the subways in my hometown Hamburg / Germany when I was a kid.

I always wanted to own a Multitech (nowadays: Acer) Microprofessor

even in the early 80s. I started my journey into computer programming on a similar system, the Busch 2090 Microtronic: 

At the time the Multitech Microprofessor MPF-1B was becoming popular in my hometown Hamburg / Germany, I was about 12 years old. I then got the Microtronic at the age of 13, and it was certainly a better choice for my juvenile brain. However, the Microprofessor just seemed so much more capable and professional. So much I did realize.

Fast forward ~ 34 years later, I started adding a number of Microprofessors to my collection of retro computers. Since 2016, I added:

  • professor Wichit Sirichote's modern re-implementation, extended version of the MPF-1B, the CPU 80 from his Build your own microcontroller kit series of single board computers 
  • the MPF-1B with printer
  • the MPF-IP ("I" Plus, or 1 Plus?)  with alphanumeric VFD display (!), and printer 
  • and another MPF-IP.

So by now I have 1 MPF-1B, 2 MPF-1P, 2 printers (they are identical expect for their EPROMS - I have one set up for the MPF-1B, and one for the MPF-1P), BASIC and Forth EPROMs for the 1P, and BASIC for the 1B. I also extended the SRAMs of these machines; i.e., my MPF-1B has 8 KBs of SRAM by now.

Here are a few pictures of my two MFP-IP's; one is set up for Forth, the other one for BASIC: 


This Hackaday project is an ongoing documentation of my exploration into the wonderful world of Microprofessor machines.  By now, I have made a number of videos - stay tuned for future updates!


MPF-1B Part 1: Monitor, Z80 machine code, printer, disassembler.


MPF-1B Part 2: Palo Alto TinyBASIC.


A modern, extended version of the MPF-1B Part 3: "CPU 80" by Prof. Wichit Sirichote.



MPF-IP Part 1

  • board overview / review
  • monitor
  • line assembler
  • editor
  • 2pass assembler
  • printer


MPF-IP Part 2: BASIC

  • BASIC installation
  • Ssieve of Erastosthenes
  • prime numbers
  • printer
  • cassette storage
  • ZX81


MPF-IP Part 3: FORTH, Part 1

  • FORTH
  • installation
  • documentation
  • background
  • history
  • comments on meta-programming and comparison to Lisp
  • stack
  • Reverse Polish Notation (RPN)
  • HP calculators
  • basic FORTH operations
  • user-defined words
  • outlook to upcoming videos


MPF-IP Part 4: FORTH, Part 2

  • ." string printing
  • interpreter
  • dictionary / vlist
  • colon (:) compiler
  • bottom-up programming philosophy
  • compound words
  • notes on forward-references and recursion
  • do ... loop
  • iterative definition of factorial
  • relational operators
  • if... else... then


MPF-IP Part 5: FORTH, Part 3 - THE DARK SIDE OF THE FORTH

Well, still no recursive definitions; too much ground needed to be covered first - but next time!

  • The dark side of the Forth
  • FORTH vs LISP
  • under the hood
  • the structure of words
  • dictionary
  • code field
  • parameter field
  • LFA, PFA, CFA
  • ' (TICK)
  • modifying definitions
  • execute
  • variables
  • address interpreter
  • defining words
  • create
  • , (COMMA) 
  • DOES>
  • user-defined defining words

MPF-IP Part 5: FORTH, Part Forth umm 4 - Recursion in FORTH

Finally, we have everything to define recursive words! This is going to be a little bit longer (over an hour), but you will learn the following: 

  • compiling words
  • IMMEDIATE
  • LATEST
  • COMPILE, EXECUTE, LITERAL
  • comma (,)
  • recursive definition of factorial
  • compilation execution: (* ... *)
  • vectored execution
  • indirect recursive definitions: ODD & EVEN
  • LABEL, REC, DEF 
  • FORTH books 
  • Outlook: DOER/MAKE on the Microprofessor

MPF-IP Part 6: FORTH, Part 5 - DOER/MAKE

The pinnacle of my Forth exploration - as promised, we are developing a simplified version of the infamous DOER / MAKE constructs from Leo Brodie's "Thinking Forth" book for the Microprofessor, and demonstrate its application by implementing yet another recursive version of the factorial function. Since DOER / MAKE is using the return stack to pass control we are also spending some time discussing flow of control via the return stack, as well...

Read more »

  • The Final FORTH Video is Available - DOER / MAKE on the Microprofessor

    Michael Wessel03/13/2022 at 07:45 0 comments

    As promised, we finally reached the end of our Forth exploration - Goodbye!

  • DOER / MAKE, ;AND and UNDO on the Microprofessor

    Michael Wessel03/12/2022 at 02:26 0 comments

    So, my whole Forth-learning endeavor started about 3 months ago when I couldn't wrap my head around how to write a recursive version of the Factorial function with the Microprofessor Forth. I quickly found Leo Brodie's excellent forthward-thinking "THINKING FORTH" book, and learned that this can be a use-case for DOER/MAKE. However, none of the 6 printed versions from the Appendix in the book would work out-of-the box on the Microprofessor, and what was worse, I only understood 20% of it! Having a PhD in computer science with quite a bit of background in programming languages, I couldn't accept this defeat by a > 50 year old language on an almost 40 year piece of Z80 hardware. So I had to figure it out, and it really took me down the FORTH rabbithole.

    I became serious about learning FORTH. Starting with Brodie's other excellent book, "Starting FORT", the meager MPF-IP Forth manual, and a lot of experiments and Trial&Error, here I am, 3 months later, with a fully functional version of DOER, MAKE, &AND, and UNDO!

    I will make one more MPF-IP Forth video in which I am going to share my findings - but here is already the code and examples as an exclusive preview to the upcoming video ;-) 

    Or, more readable: 

    : NOTHING ;
    : DOER CREATE ' NOTHING , DOES> @ >R ;
    VARIABLE MARKER 
    : (MAKE) R> DUP 2+ DUP 2+ SWAP @ 4 + ! @ ?DUP IF >R THEN ;  
    : MAKE COMPILE (MAKE) HERE MARKER ! 0 , ; IMMEDIATE
    : ;AND COMPILE EXIT HERE MARKER @ ! ; IMMEDIATE
    : UNDO ' NOTHING <COMPILE> ' ! ;

    If you have no idea what that means, why it looks like an Ancient Alien Language, or what it is good for, then maybe it will motivate you to learn FORTH yourself! It is very rewarding once you figure it out.

    Or watch my videos if you'd like to learn more about defining and compiling words, vectored execution, and similar black magic Death Star the Dark Side of the FORTH kind of stuff!

    Here is a use-case. However, direct recursive definitions (words) are only one possible application for (the vectored execution of) DOER/MAKE (but the one I was after for):

    DOER FAC 
    : SETUP MAKE FAC DUP 1 > IF DUP 1- FAC * THEN ; 
    SETUP
    3 FAC . -> 6  

     Or, even indirect recursion is possible:  

    DOER ODD
    DOER EVEN
    
    : SETUPODD  MAKE ODD  DUP 2 < IF ELSE 1- EVEN THEN ; 
    : SETUPEVEN MAKE EVEN DUP 2 < IF 1 SWAP - ELSE 1- ODD THEN ;
    
    SETUPODD
    SETUPEVEN 
    
    10 EVEN . -> 1
    10 ODD  . -> 0
    11 EVEN . -> 0
    11 ODD  . -> 1

    The Brodie book gives this example (slightly adjusted by myself), which also demonstrates :AND and UNDO:

    DOER JOE  
    : SETUPJOE MAKE JOE ." HI JOE " ;
    SETUPJOE
    JOE -> HI JOE
    
    FORGET SETUPJOE
    : SETUPJOE MAKE JOE ." HELLO JOE " 
                        ;AND ." NOW! ";
    SETUPJOE -> NOW!  
    JOE -> HELLO JOE 
    UNDO JOE
    JOE ->  

    Stay tuned for the video soon! 

  • FORTH on the MPF-IP - Part 4 - Compiler Extensions & Recursion

    Michael Wessel02/27/2022 at 04:09 0 comments

    This time we are covering enough of FORTH to finally succeed at defining recursive words. The video is a bit longer this time (~1 hour), but it is done! If you want to learn how to extend the colon compiler by means of IMMEDIATE / compiling words, how to use COMPILE, LITERAL, and COMMA, and how to execute FORTH at compile time, then this video is for you. I also cover vectored execution, which lets you deal with forward references. We'll discuss various ways to implement a recursive version of the factorial function, and used self-defined defining and compiling words such as LABEL and REC to implement indirect recursion, using the classic ODD / EVEN example. I conclude by giving you some literature pointers and book recommendations. Maybe there will be one more (really final) video, in which I am going to share my version of the "standard" DOER / MAKE constructs - it wasn't easy to port this from Brodie's "Thinking FORTH"to the Microprofessor, so it is worth sharing. Next time though! So stay tuned for one more final video...

  • FORTH on the MPF-IP - Part 3 - The Dark Side of the FORTH

    Michael Wessel02/21/2022 at 17:43 0 comments

    I know, I promised that I would demonstrate how to define (indirect) recursive words in this video, but the truth is - too much ground needs to be covered first, it would be incomprehensible otherwise! So, here we are going with the first "under the hood" video of the FORTH - THE DARK SIDE OF THE FORTH:

  • FORTH on the MPF-IP - Part 2

    Michael Wessel02/13/2022 at 23:47 0 comments

    Here is my 2nd MPF-IP FORTH video; this time, we are taking a closer look at FORTH, and continue our exploration with do... loops, if else then, and write an iterative version of the factorial function - stay tuned for the next video!

  • News from @x48x4b - machine & Sargon chess code

    Michael Wessel02/13/2022 at 23:44 0 comments

    I got another message from @x48x4b regarding his Microprofessor and the Sargon chess program; he writes: 

    "This is my machine from the 1980ies, in today's working condition: https://www.mycloud.ch/s/S00E8C2E8289DDE0E50B95028DFF9DB989ABBE58C10 It is an MPF-IP with the stock accessory boards IOM-MPF-IP and EPB-MPF-IP and 16k RAM. On the bread board section, I have installed an additional PIO, 4 motor drivers and 2 A/D converters. This was done in the 1980ies, to be used withe my Fischertechnik robot. Today, the accessory boards can occasionally be found on Ebay. The Sargon code for my MPF-IP is here: https://www.mycloud.ch/s/S007B47874D00053B738BFE0EA9720BCA96DFA769F "


    I take the freedom to post hist machine here - what a setup!! A dream Microprofessor: 

  • FORTH on the MPF-IP - Part 1 (FORTH Basics)

    Michael Wessel02/06/2022 at 19:14 0 comments

    Alright, that took a while... confident by now enough in my knowledge of the FORTH I am to attempt to present & demo it :-) 

    This is part 1 of ~ 3 parts that I am planning. Originally, I only wanted to define a recursive "factorial" word! That took me down the rabbit hole - from dictionaries, immediate words, over defining to compiling words - finally, I managed to implement CALL as well as DOER/MAKE. It'll take 2 more videos until we get there.

    For now, here are the basics: FORTH background & history, installation, documentation & book, comments on meta-programming and "Forth in Forth", the stack, RPN (Reverse Polish Notation), HP calculators, simple user-defined words.  Enjoy and stay tuned to hear more about this ingenious "alien" programming language on the MPF-IP! 

  • x48x4b is running Sargon Chess on his MPF-IP!

    Michael Wessel02/03/2022 at 19:46 0 comments

    Very cool info from @x48x4b - he ported the classic Sargon Chess to his MPF-IP as a Covid project. Just quoting his messages from the chat; this is too cool to be forgotten and left unnoticed in the chat, so turning this into a Log entry. @x48x4b wrote:

    "An MPF-IP (with accessory boards) can be used to run a chess program, to see how, check out the following mkv-video (watch it on VLC):

    https://www.mycloud.ch/s/S000DB711BCA0EE2949ADD0A240A68026A2650D987D

    I had to modify the memory organisation and took out the video section. The original Sargon was installed on a Wavemate Jupiter III. This had a Z80. But e.g. it had a video board, which my MPF does not have. Instead I wrote a routine to direct the output to the serial interface. What I did not change at all are the chess algorithms. My current version uses x1d2d bytes excluding stack. I will tidy it up and post it somewhen.

    It is the original IOM-MPF-IP experimental board from Multitech with a 8250 UART, a Zilog CTC and a bread board area. There are also sockets to add 3x2 kByte static RAM and other stuff. I purchased it in the 1980ies to drive my Fischertechnik Robot. Later the MPF-IP and the IOM-MPF-IP were stored away for more than 35 years on our attic. In the Corona lock down time, I reactivated it to have some fun. The reactivation turned out to be challenging because some of the chips had to be replaced, and some of the electrical contacts were bad. The goal of the project was to run the original Sargon chess program from Dan and Kathe Spracklen, which actually succeeded."


    Looking forward to the code being released!

    Sadly, my 2 MPF-IPs only have 4 KBs of SRAM each, and no expansion boards besides the printer. I just ordered some SRAM chips. Maybe I am going to build my own extension board with additional SRAM, speech synth, and UART. Will see! But first I need to get the Forth videos out... soon!


  • MPF-IP BASIC Demo - Prime Numbers on the MPF-IP!

    Michael Wessel01/22/2022 at 23:35 0 comments

    My next video about the MPF-IP is online! This time, I am demonstrating the BASIC by computing prime numbers with the sieve of Erastosthenes. Also, I pulled the cassette recorder from the garage, so this is going to be fun too. Next, I am comparing the MPF-IP's BASIC performance with the ZX-81, running the same program. Which machine is going to be faster - ZX81 or MPF-IP?

  • Attention - Your MPF-IP BASIC ROM IMAGE from the Internet is bad!

    Michael Wessel01/19/2022 at 19:26 4 comments

    Preparing for my demo video of the MPF-IP BASIC, another Microprofessor MPF-IP enthusiast I was chatting with on another forum just complained that his BASIC wouldn't print properly beyond 18 characters, and that certain BASIC statements documented in the manual don't work (SON, SOFF).

    I said, what do you mean? My BASIC just works fine, no issues with the printer, and SON / SOFF work flawlessly!

    He then pointed me to the BASIC ROM image he was using: 

    https://electrickery.hosting.philpem.me.uk/comp/mpf1/doc/MPF-IPlusBasicROM.zip

    I grabbed it and burned an EPROM, and indeed - this version must be a prior version and has these issues! For printouts, you'll have to limit yourself to 18 characters per line, else your printout looks as follows:

    Now, my original BASIC ROM is indeed working fine, has SON / SOFF, and printing works fine beyond 18 characters: 

    Seems the MPF-IP BASIC got a major update. There is no obvious version number encoded in the ROM image (at least not in ASCII).

    Comparing the ROMs a bit, I see that they even omitted the READY prompt in order to accommodate the patches and SON & SOFF... the new version goes to 0x1ff8, whereas the "buggy" version has 0x1ff3 as last address. So a few bytes more. They really used almost all of the 8 KBs in the 2764!

View all 12 project logs

Enjoy this project?

Share

Discussions

R Hormann wrote 5 days ago point

@x48x4b  What a great series. I've recently bougt a MPF-IP with the IOM-MPF-IP experimental board from Multitech myself and would like to experiment more with it. It came however without documentation so I'm struggling. Do you have a copy of the documentation that you can share?

  Are you sure? yes | no

Mitsuru Yamada wrote 02/14/2022 at 07:37 point

Thanks for introducing Microprofessor series.  I had never heard of this board computer those days, because the only board computers available in the stores in my country at that time were those made by several large domestic electrical manufacturers.  The RPN notation also used in the FORTH language almost eliminates the need for parsing, so I used it in the floating-point interpreter I built myself last year. 

  Are you sure? yes | no

Michael Wessel wrote 02/02/2022 at 20:48 point

@x48x4b that's great, thanks for sharing - did Sargon chess require a lot of modifications? Would be great if you could upload the code with your mods somewhere. So how much RAM does it need? It might be a nice DIY exercise to build an expansion board for the MPF.... with extra SRAM, RS232, and maybe speech.

  Are you sure? yes | no

x48x4b wrote 02/03/2022 at 06:39 point

I had to modify the memory organisation and took out the video section. The original Sargon was installed on a Wavemate Jupiter III. This had a Z80. But e.g. it had a video board, which my MPF does not have. Instead I wrote a routine to direct the output to the serial interface. What I did not change at all are the chess algorithms. My current version uses x1d2d bytes excluding stack. I will tidy it up and post it somewhen.

  Are you sure? yes | no

x48x4b wrote 02/10/2022 at 07:32 point

This is my machine from the 1980ies, in todays working condition: https://www.mycloud.ch/s/S00E8C2E8289DDE0E50B95028DFF9DB989ABBE58C10 It is an MPF-IP with the stock accessory boards IOM-MPF-IP and EPB-MPF-IP and 16k RAM, On the bread board section, I have installed an additional PIO, 4 motor drivers and 2 A/D converters. This was done in the 1980ies, to be used withe my Fischertechnik robot.Today, the accessory boards can occasionally be found on Ebay.

The Sargon code for my MPF-IP is here:

https://www.mycloud.ch/s/S007B47874D00053B738BFE0EA9720BCA96DFA769FB 

  Are you sure? yes | no

x48x4b wrote 01/26/2022 at 16:42 point

An MPF-IP (with accessory boards) can be used to run a chess program, to see how, check out the following mkv-video (watch it on VLC):

https://www.mycloud.ch/s/S000DB711BCA0EE2949ADD0A240A68026A2650D987D

  Are you sure? yes | no

Michael Wessel wrote 02/02/2022 at 17:23 point

@x48x4b, very cool! What kind of expansion board is that? And it seems it has RS232 terminal? Is that a DIY board? And has extra RAM?

  Are you sure? yes | no

x48x4b wrote 02/02/2022 at 17:53 point

It is the original IOM-MPF-IP experimental board from Multitech with a 8251 UART, a Zilog CTC and a bread board area. There are also sockets to add 3x2 kByte static RAM and other stuff. I purchased it in the 1980ies to drive my Fischertechnik Robot. Later the MPF-IP and the IOM-MPF-IP were stored away for more than 35 years on our attic. In the Corona lock down time, I reactivated it to have some fun. The reactivation turned out to be challenging because some of the chips had to be replaced, and some of the electrical contacts were bad. The goal of the project was to run the original Sargon chess program from Dan and Kathe Spracklen, which actually succeeded.

  Are you sure? yes | no

Bob S. wrote 01/19/2022 at 15:11 point

This was a great little learning tool back in the 80's. I had a Tandy Model I and bought this MP to brush up on Z80 assembly. It is a fun tool to work with. I had loaned mine out in 1989 and just recently found one for a good price on Ebay. Needed a PIO chip and Jumpers added. I also made a small preamp for the cassette input so that I could record programs with a PC or cheap digital hand-held recorder that didn't have the appropriate output level. Worked well. Still fun to tinker with and a good platform for problem solving.

I always thought a PIC processor (8bit) version of this kind of thing would be nice... with the keyboard and display, etc. Haven't really found one...

  Are you sure? yes | no

Michael Wessel wrote 01/19/2022 at 16:03 point

Bob, yes, I think they are highly effective for Z80 machine language bare metal programming. And unlike some other CPU trainers in my collection they are well-documented and have useful firmware routines for input and output. I also love that it doesn't matter when you crash the machine - hit reset, your program is still there, and continue! No need to save and re-load your work all the time. At some point I'd like to create a speech synth expansion for it. Enjoy your microprofessor!

  Are you sure? yes | no

Ken Yap wrote 01/18/2022 at 01:43 point

Thanks for documenting this series. I never had one but vaguely remember seeing ads for it. Looking forward to watching your videos. 👍

  Are you sure? yes | no

Michael Wessel wrote 01/18/2022 at 01:59 point

Thank you! Yes they are really neat little machines!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates