Announcement

Collapse

Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

Getting started with Z80 assembly language on an Exidy Sorcerer.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Getting started with Z80 assembly language on an Exidy Sorcerer.

    Hey folks.

    Thanks to dave_m's hard work restoring my systems, I now have an Exidy Sorcerer with CPM floppy drives and I am wanting to get going learning Z80 assembly language.

    I'm a fairly experienced programmer but not with assembler.

    My question is, does anyone have any opinions about the most effective development workflow and development tools for Exidy Sorcerer?

    Am I best off doing the development on an actual machine or on an emulator? Is there an emulator around that is good for doing Sorcerer development? I have seen at least one that does Sorcerer software/games - maybe that's the best place to be doing the development?

    What tools should I use? I can see an assembler on one of the CPM disks that I have - so I guess the raw capability is there for doing assembler, but maybe there are better, more modern options?

    I wondered if maybe I should use one of the modern Windows IDEs that are set up for doing ZX Spectrum Z80 or Amstrad Z80 development/emulation, do the main chunk of development there, and then somehow do the Sorcerer specific code actually on the Sorcerer?

    It looks like it could be really painful to be using the tools from the 1970's and whilst I want to get up to speed I'd like to do it in the most time effective and painless manner.

    Any insights valued. I'm also curious to know if there is anyone really who does any Sorcerer development here in 2018 soon 2019!

    thanks!

    Andrew

    #2
    I've been going round in circles for days with the same questions, trying different emulators then different assemblers with lots of iterations. I won't detail all the steps but in the end I've got the MYZ80 emulator running CP/M 2.2 on an XP machine.

    MYZ80 has IMPORT and EXPORT commands built in for copying to/from the host filesystem so it's been fairly simple to import the Z80ASM assembler plus other tools from here - http://s100computers.com/Software%20...Collection.htm. Notepad++ on the XP box is good for hand editing then it's just a case of IMPORTing the code to MYZ80, assembling to a HEX file then EXPORTing that back to XP. Takes seconds.

    With a cable hooked up to the XP machine's serial port it's a simple matter of booting the Sorcerer to the monitor, typing SE T=2 to set the I/O to 'serial, 1200 baud' then booting CP/M and using PIP to receive the HEX file onto a floppy - PIP B:TEST.HEX=RDR:
    On the XP box I use RealTerm to send the hex file down since it's fully configurable with byte send delay etc. When the code has finished transmitting you type EOF (CTRL-Z) in RealTerm and the Sorcerer writes the disk file which you can then LOAD from CP/M.

    Easy
    www.binarydinosaurs.co.uk - UK home computer history
    Where RIFA capacitors come to die
    facebook.com/binarydinosaurs
    twitter.com/binarydinosaurs

    Comment


      #3
      Development for the Sorcerer is still in my incredible long TODO list but as it's similar to other platforms my recommended setup (of course to cross develop) is something like:

      - Notepad++: Very powerful editor with a lot of plugins and syntax highlighters. Aanyway, there're tons of them out there (UltraEdit, PSPad, ConTEXT, etc.)
      - sjasm Z80 assembler: It has everything you'll need from a macroassembler; but also, a very wide range of tools to choose (pasmo, tniasm, etc.)
      - MESS emulator: The Sorcerer emulation is quite good and it has some nice features like sending commands to the emulated machine right after booting up (not sure if the Sorcerer drivers supports this tho...).

      If you want to try also with C, you can develop more or less easily thanks to Z88DK. It has the Sorcerer as one of their targets and works pretty well.

      Development over the Sorcerer itself could be more a challenge than a pure development task; but it can be also a lot of fun.

      Comment


        #4
        I use TASM and Notepad++ on s PC, then Kermit to transfer the binary to the CP/M machine for test.

        Would love to do it all on the machine but I haven’t found a usable text editor for it (and so one of my projects was a port of vi)..

        Comment


          #5
          Cool!, I've recently seen some vi CP/M ports, (one of them being pure CP/M and the other a MSX-DOS one, very close to the CP/M). The pure CP/M port is still too big when compiled and leaves not too much free mem; but hey, it can be used with sources around 20KB; about the MSX version I can't remember the details, it must be smaller for sure as it only implements part of the original VI features.

          How big is your vi?

          Comment


            #6
            The COM file is 26K. It's a port of STEVIE by the way, not my own work. And really, really, really slooooooooowwwww.....

            Could you post some links to the other CP/M vi clone sources please? I know there's one that Udo Monk was working on, not sure the current state but it's on Github: https://github.com/udo-munk/s

            No idea if it works.

            Comment


              #7
              That's it, it's the Udo Munk's vi port, suposedly it weights about 35KB...

              The other must be faster enough as it runs on MSX machines: MSX-VI. The price to pay is a somewhat limited feature set.

              Comment


                #8
                If it is faster it's because it isn't implementing double buffering like STEVIE does. Those routines are sloooow even when rewritten in machine code. MSX-vi also has no "undo" feature.

                MSX-vi benefits from having the UDP (screen display chip) for output - it might be that its screen memory in text mode can be addressed directly. This would be way faster than going via CONOUT (as STEVIE does).

                For example, on the Superbrain, the screen RAM is memory mapped so you can access it directly. Yet I think the problem (for STEVIE) is the double buffering. Not sure if Udo's s editor does this or not.

                [edit: I had a play with it in the online MSX emulator and yes, it's quicker (much quicker) than STEVIE. However it doesn't implement line wrapping but scrolls everything to the left, so when you start to enter characters after column 80 on a line it does slow down due to screen refresh. It is usable, though.]

                Apologies to the OP for going off topic.
                Last edited by JonB; October 18, 2018, 08:55 AM.

                Comment


                  #9
                  Originally posted by jonb
                  I use TASM and Notepad++ on s PC, then Kermit to transfer the binary to the CP/M machine for test.


                  Last night I discovered one of the few machines not to have a Kermit port is the Sorcerer...
                  www.binarydinosaurs.co.uk - UK home computer history
                  Where RIFA capacitors come to die
                  facebook.com/binarydinosaurs
                  twitter.com/binarydinosaurs

                  Comment


                    #10
                    Originally posted by Witchy View Post
                    Last night I discovered one of the few machines not to have a Kermit port is the Sorcerer...[/COLOR]
                    Reading through SCUA newsletters the go in the Oz was STERM (Serial Terminal) by Bob Stafford (also known for the EzyFile and CADAS databases and porting FIG-FORTH to the Sorcerer). It supports XMODEM and YMODEM.

                    Someone will have a disk somewhere ...

                    Comment


                      #11
                      I have been loaned a disc with STERM on it. The disk was created using the Australian-developed Dreamdisk controller and we are still working to understand the geometry of Dreamdisk discs when the controller is used with a Sorcerer.

                      So far we have been able to retrieve a directory listing using cpmtools which is shown below:

                      Code:
                      C:\cpmtools>cpmls -f sorcerer1 -T dsk jim2.dsk
                      0:
                      -utils.003
                      165.com
                      165.mac
                      166.com
                      166.mac
                      b14.com
                      bright.com
                      bright.lst
                      bright.pic
                      bright2.com
                      cbug.com
                      cir1.dat
                      cir2.dat
                      cir3.dat
                      cm.com
                      compare.com
                      config.com
                      cp.com
                      cpm3cat.lbr
                      crc.com
                      crcklist.crc
                      cref80.com
                      cross.com
                      d.com
                      debug.com
                      demo.dat
                      diff.com
                      disilog.com
                      distap4.com
                      ed.com
                      io5.bak
                      io5.com
                      io5.mac
                      l.com
                      l80.com
                      m80.com
                      mdump.com
                      micromon.com
                      op.com
                      op.mac
                      pic.com
                      ports.dat
                      print.com
                      prn.com
                      prna4.com
                      pset.com
                      screen.dat
                      sd80.com
                      sdraw.$$$
                      sdraw.com
                      sdraw.mac
                      show.com
                      sid.com
                      sp.com
                      sterm.com
                      sterm12.lbr
                      stermf.com
                      subit.com
                      subit.dqc
                      sweep.com
                      sweep.doc
                      tapdis4.com
                      test.com
                      vedit.com
                      vv.com
                      xlate2.com
                      z8a.com
                      The object and source code for STERM (which should be in the .lbr) should prove valuable for transferring other essential Sorcerer specific CP/M software from disk.

                      Examination of the .dsk image in a text editor gives a glimpse of the capabilities of the program:STERM_MAIN_MENU.jpgSTERM_UART.jpg

                      Comment


                        #12
                        May I ask what your sorcerer1 definition contains? Also, do you have a file of the jim2.dsk or jim2.img that you can email me?
                        And is the .dsk just a sector dump of the floppy? Can you use Linux's dd command to read the floppy contents to a file?

                        Assuming you are a member of group floppy......and the floppy is /dev/fd0
                        $dd if=/dev/fd0 of=/home/user/path/to/image/file/jim2.img conv=notrunc

                        Thanks.

                        Larry

                        Comment


                          #13
                          Hi Larry,

                          I emailed you a couple of disk images a while back for your examination, both taken using different tools on my Sorcerer, the flop2pc utility I'd ported and Dave Dunfield's CPT. Did you get them?
                          www.binarydinosaurs.co.uk - UK home computer history
                          Where RIFA capacitors come to die
                          facebook.com/binarydinosaurs
                          twitter.com/binarydinosaurs

                          Comment


                            #14
                            Originally posted by ldkraemer View Post
                            May I ask what your sorcerer1 definition contains? Also, do you have a file of the jim2.dsk or jim2.img that you can email me?
                            And is the .dsk just a sector dump of the floppy? Can you use Linux's dd command to read the floppy contents to a file?

                            Assuming you are a member of group floppy......and the floppy is /dev/fd0
                            $dd if=/dev/fd0 of=/home/user/path/to/image/file/jim2.img conv=notrunc
                            I really appreciate your passion Larry and I know you would add value but to be fair to my collaborators who have already invested so much time I must ask you to give us a little breathing space in which to develop more confidence in our findings

                            Comment


                              #15
                              Originally posted by ldkraemer View Post
                              May I ask what your sorcerer1 definition contains? Also, do you have a file of the jim2.dsk or jim2.img that you can email me?
                              Hi Larry,

                              We believe we have figured out the geometry and have been able to extract all the files listed in the directory higher up in the thread. I don't believe this has been done before for a Dreamdisk floppy controller on the Sorcerer. Unfortunately I can't share the image as it contains some personal files.

                              Definition is below:

                              Code:
                              # Sorcerer Dreamdisk 5.25" DS DD 80T (5.25" DS HD 80T 5x1024 s/t)
                              diskdef sorcerer1
                              seclen 1024
                              cylinders 80
                              sectrk 5
                              heads 2
                              blocksize 2048
                              maxdir 256
                              skew 1
                              skewstart 1
                              datasect 1
                              boottrk 2
                              sidedness 1
                              os 2.2
                              end

                              Comment

                              Working...
                              X