Will the real Altair Basic please stand up? - CP/M

This is a discussion on Will the real Altair Basic please stand up? - CP/M ; Well group, Now that I have the serial card running on the Altair, I've addded a Cromemco 8K Bytesaver EPROM card. I burned the control SW for the Bytesaver card onto a 2708 and added a little binary loader in ...

+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 20 of 24

Thread: Will the real Altair Basic please stand up?

  1. Will the real Altair Basic please stand up?

    Well group,

    Now that I have the serial card running on the Altair, I've addded a
    Cromemco 8K Bytesaver EPROM card. I burned the control SW for the Bytesaver
    card onto a 2708 and added a little binary loader in the space that was
    left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    remaining EPROM chips.

    I've been looking around the net and came across binaires for the various
    MITS/M$ Basics @:

    http://www.altairage.com/languages/languages.htm

    I first noticed that the file size of the 4K basic ver 3.2 was 4.95K. As I
    recall, the "K" in relation to the Basic version was the minumum amount of
    ram required to run it. And 4.95K is definitely > 4K (or perhaps around
    3.8K) I also noticed that the binary didn't match the source given in:

    http://www.interact-sw.co.uk/altair/index2.html

    The right machine code was there in the binary, it was just moved around and
    a lot of other junk was in the way. For example, the code that should start
    @ 0000h according to the source was @ 1139h in the binary.

    The Altair Age site also mentions a MBL loader program, but curiously does
    not have it to download.

    Is the MBL more than just a simple Binary Loader? Does it load the binary
    in a non-sequential fashion, moving it around? And the big question: Does
    anyone have a "straight" binary of 4K Basic, or a copy of MBL?

    -John



  2. Re: Will the real Altair Basic please stand up?

    First, I am not sure if the these Basic interpreters will run from ROM.
    They may have variables and code mixed together.

    Second, the versions of them that you find online may be (probably are)
    stored in "hex" format rather than pure binary. This will more than
    double the size of the file (that is, a 2K program stored in hex will be
    a bit larger than 4k in size).

    [MBL could stand for "MITS Binary Loader"]


    John Crane wrote:
    > Well group,
    >
    > Now that I have the serial card running on the Altair, I've addded a
    > Cromemco 8K Bytesaver EPROM card. I burned the control SW for the Bytesaver
    > card onto a 2708 and added a little binary loader in the space that was
    > left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    > remaining EPROM chips.
    >
    > I've been looking around the net and came across binaires for the various
    > MITS/M$ Basics @:
    >
    > http://www.altairage.com/languages/languages.htm
    >
    > I first noticed that the file size of the 4K basic ver 3.2 was 4.95K. As I
    > recall, the "K" in relation to the Basic version was the minumum amount of
    > ram required to run it. And 4.95K is definitely > 4K (or perhaps around
    > 3.8K) I also noticed that the binary didn't match the source given in:
    >
    > http://www.interact-sw.co.uk/altair/index2.html
    >
    > The right machine code was there in the binary, it was just moved around and
    > a lot of other junk was in the way. For example, the code that should start
    > @ 0000h according to the source was @ 1139h in the binary.
    >
    > The Altair Age site also mentions a MBL loader program, but curiously does
    > not have it to download.
    >
    > Is the MBL more than just a simple Binary Loader? Does it load the binary
    > in a non-sequential fashion, moving it around? And the big question: Does
    > anyone have a "straight" binary of 4K Basic, or a copy of MBL?
    >
    > -John
    >
    >

    ** Posted from http://www.teranews.com **

  3. Re: Will the real Altair Basic please stand up?



    "John Crane" wrote in message
    news:R86dndoPZMz1XPrVnZ2dnUVZ_judnZ2d@pghconnect.c om...
    > Well group,


    > Is the MBL more than just a simple Binary Loader? Does it load the
    > binary in a non-sequential fashion, moving it around? And the big
    > question: Does anyone have a "straight" binary of 4K Basic, or a copy of
    > MBL?


    Tape include more than just the interpreter. They also include a full
    loader
    that dynamically replaces than the small one toggled in.

    The MBL loads a loader off the tape which them does the final load.
    Here's a site that give the details of the various loaders:

    http://www.solivant.com/altair_bootloaders/

    If you download the Altair32 emulator, you'll get the tape images
    which have the loader included.

    Tom Lake

    ** Posted from http://www.teranews.com **

  4. Re: Will the real Altair Basic please stand up?


    "Tom Lake" wrote in message
    news:92953$48680f42$29105@news.teranews.com...
    >
    >
    > "John Crane" wrote in message
    > news:R86dndoPZMz1XPrVnZ2dnUVZ_judnZ2d@pghconnect.c om...
    >> Well group,

    >
    >> Is the MBL more than just a simple Binary Loader? Does it load the
    >> binary in a non-sequential fashion, moving it around? And the big
    >> question: Does anyone have a "straight" binary of 4K Basic, or a copy of
    >> MBL?

    >
    > Tape include more than just the interpreter. They also include a full
    > loader
    > that dynamically replaces than the small one toggled in.
    >
    > The MBL loads a loader off the tape which them does the final load.
    > Here's a site that give the details of the various loaders:
    >
    > http://www.solivant.com/altair_bootloaders/
    >
    > If you download the Altair32 emulator, you'll get the tape images
    > which have the loader included.
    >
    > Tom Lake
    > ** Posted from http://www.teranews.com **



    Wow!

    Excellent research work, Tom.

    Thanks.

    -John



  5. Re: Will the real Altair Basic please stand up?


    "Barry Watzman" wrote in message
    news:d7fba$48680d59$27254@news.teranews.com...
    > First, I am not sure if the these Basic interpreters will run from ROM.
    > They may have variables and code mixed together.
    >


    Very true. That's why I'm going to burn them into EPROMs with a little
    loader that copies them into RAM before running. The software for the
    Cromemco 8K Bytesaver card I'm using has routines to do that as well as
    program the chips.


    > Second, the versions of them that you find online may be (probably are)
    > stored in "hex" format rather than pure binary. This will more than
    > double the size of the file (that is, a 2K program stored in hex will be a
    > bit larger than 4k in size).
    >



    Nope, They are pure binary. The double file size thing due to 2 ASCII chars
    per byte was the first thing I checked. Tom Lake's reply identifies the
    culprit - a second loader that's punched into the tapes - it takes over
    after the "finger-friendly" one to do the real work of loading the software
    with some minimal error checking.

    I wrote a monitor for my Altair that has Xmodem transfers direct to memory,
    so I only need the true "Basic Binary" itself, not the one with the embeded
    second loader and it's associated overhead data. But it looks like I'll do
    it the old fashioned way - at least the first time - to get the code into
    ram. Then I'll burn it into some EPROMs from there.


    > [MBL could stand for "MITS Binary Loader"]
    >
    >
    > John Crane wrote:
    >> Well group,
    >>
    >> Now that I have the serial card running on the Altair, I've addded a
    >> Cromemco 8K Bytesaver EPROM card. I burned the control SW for the
    >> Bytesaver card onto a 2708 and added a little binary loader in the space
    >> that was left. My goal is to put Altair BASIC (4K ver 3.2) onto some of
    >> the remaining EPROM chips.
    >>
    >> I've been looking around the net and came across binaires for the various
    >> MITS/M$ Basics @:
    >>
    >> http://www.altairage.com/languages/languages.htm
    >>
    >> I first noticed that the file size of the 4K basic ver 3.2 was 4.95K. As
    >> I recall, the "K" in relation to the Basic version was the minumum amount
    >> of ram required to run it. And 4.95K is definitely > 4K (or perhaps
    >> around 3.8K) I also noticed that the binary didn't match the source
    >> given in:
    >>
    >> http://www.interact-sw.co.uk/altair/index2.html
    >>
    >> The right machine code was there in the binary, it was just moved around
    >> and a lot of other junk was in the way. For example, the code that should
    >> start @ 0000h according to the source was @ 1139h in the binary.
    >>
    >> The Altair Age site also mentions a MBL loader program, but curiously
    >> does not have it to download.
    >>
    >> Is the MBL more than just a simple Binary Loader? Does it load the
    >> binary in a non-sequential fashion, moving it around? And the big
    >> question: Does anyone have a "straight" binary of 4K Basic, or a copy of
    >> MBL?
    >>
    >> -John

    > ** Posted from http://www.teranews.com **




  6. Re: Will the real Altair Basic please stand up?

    On Jun 29, 9:39 pm, "John Crane" wrote:
    > "Tom Lake" wrote in message
    >
    > news:92953$48680f42$29105@news.teranews.com...
    >
    >
    >
    >
    >
    > > "John Crane" wrote in message
    > >news:R86dndoPZMz1XPrVnZ2dnUVZ_judnZ2d@pghconnect.c om...
    > >> Well group,

    >
    > >> Is the MBL more than just a simple Binary Loader? Does it load the
    > >> binary in a non-sequential fashion, moving it around? And the big
    > >> question: Does anyone have a "straight" binary of 4K Basic, or a copy of
    > >> MBL?

    >
    > > Tape include more than just the interpreter. They also include a full
    > > loader
    > > that dynamically replaces than the small one toggled in.

    >
    > > The MBL loads a loader off the tape which them does the final load.
    > > Here's a site that give the details of the various loaders:

    >
    > >http://www.solivant.com/altair_bootloaders/

    >
    > > If you download the Altair32 emulator, you'll get the tape images
    > > which have the loader included.

    >
    > > Tom Lake
    > > ** Posted fromhttp://www.teranews.com**

    >
    > Wow!
    >
    > Excellent research work, Tom.
    >
    > Thanks.
    >
    > -John



    Hi John
    Do consider that some of the variables used by the BASIC may exist
    in the same address space as the loaded code. You'll need to look
    for these and point them someplace else.
    I've not looked at the code but just be on the lookout.
    Dwight

  7. Re: Will the real Altair Basic please stand up?

    On Sun, 29 Jun 2008 18:31:53 -0400, Barry Watzman
    wrote:

    >First, I am not sure if the these Basic interpreters will run from ROM.
    > They may have variables and code mixed together.


    They were not Romable for runtime but you could put an image in rom
    and copy it to ram then run it.

    FYI: Netronics Explorer8085 had MS rom basic that did run from rom
    (8k of 2716s).

    >
    >Second, the versions of them that you find online may be (probably are)
    >stored in "hex" format rather than pure binary. This will more than
    >double the size of the file (that is, a 2K program stored in hex will be
    >a bit larger than 4k in size).


    Also the Three BASICs offered were:

    4K that used most of the 4K ram (3.2k or so).
    8K that used near as I can remember about 7k
    12K extended (non disk) that used up most of 12K.

    The Altair version were all ram based and not runable from rom
    though many did copy them to rom for fast copy to ram.

    >[MBL could stand for "MITS Binary Loader"]>


    That would be my bet.

    The best basic to put in the roms is likely LLL BASIC
    or maybe PT 5K BASIC. I suggest LLL as its available in source
    and was ment for rom and PT5K as it was better than any of the 4K
    basics and smaller than most of the 8K flavors.

    Allison
    >
    >John Crane wrote:
    >> Well group,
    >>
    >> Now that I have the serial card running on the Altair, I've addded a
    >> Cromemco 8K Bytesaver EPROM card. I burned the control SW for the Bytesaver
    >> card onto a 2708 and added a little binary loader in the space that was
    >> left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    >> remaining EPROM chips.
    >>
    >> I've been looking around the net and came across binaires for the various
    >> MITS/M$ Basics @:
    >>
    >> http://www.altairage.com/languages/languages.htm
    >>
    >> I first noticed that the file size of the 4K basic ver 3.2 was 4.95K. As I
    >> recall, the "K" in relation to the Basic version was the minumum amount of
    >> ram required to run it. And 4.95K is definitely > 4K (or perhaps around
    >> 3.8K) I also noticed that the binary didn't match the source given in:
    >>
    >> http://www.interact-sw.co.uk/altair/index2.html
    >>
    >> The right machine code was there in the binary, it was just moved around and
    >> a lot of other junk was in the way. For example, the code that should start
    >> @ 0000h according to the source was @ 1139h in the binary.
    >>
    >> The Altair Age site also mentions a MBL loader program, but curiously does
    >> not have it to download.
    >>
    >> Is the MBL more than just a simple Binary Loader? Does it load the binary
    >> in a non-sequential fashion, moving it around? And the big question: Does
    >> anyone have a "straight" binary of 4K Basic, or a copy of MBL?
    >>
    >> -John
    >>
    >>

    >** Posted from http://www.teranews.com **



  8. Re: Will the real Altair Basic please stand up?

    > The Altair version were all ram based and not runable from rom
    > though many did copy them to rom for fast copy to ram.


    MITS did put out a ROM version of 12K BASIC, though.

    Tom Lake


    ** Posted from http://www.teranews.com **

  9. Re: Will the real Altair Basic please stand up?

    On Tue, 1 Jul 2008 04:49:18 -0400, "Tom Lake"
    wrote:

    >> The Altair version were all ram based and not runable from rom
    >> though many did copy them to rom for fast copy to ram.

    >
    >MITS did put out a ROM version of 12K BASIC, though.


    That was way later. The "extended basic" which wasn't common
    due to cost was easily a year earlier and nearly concurrent with
    the release of disk extended basic. OF course at that time to run it
    you likely spent over 400-600$ for 32K worth of ram.

    Allison

    >
    >Tom Lake
    >
    >
    >** Posted from http://www.teranews.com **



  10. Re: Will the real Altair Basic please stand up?

    Hello, John!

    I was surprised by your endeavour. You may remember that I have disassembled
    a few programming languages running under CP/M. My main tools are MAC and
    SID. The only difference is that the MITS Altair BASIC versions that I have
    disassembled load at 0000H (not Good Old 0100H). That's why I wrote (and
    published in the comp.os.cpm Newsgroup) a HEXBIN utility, enabling me to
    create those BIN files under CP/M (it is the comp.os.cpm Newsgroup,
    remember?).

    There were dozens of versions of MITS Altair BASIC, including "Extended
    Version", "Disk Version" (which later became "CP/M BASIC" Version 4.41
    before becoming our MBASIC Version 5.21), and one which could interest you:
    "RST-less Version". That is to say: to shorten the code, the most often used
    subroutines were coded as Intel 8080 RST interrupts. Of course, it was a bad
    idea that Gary Kildall did not made. After a while, they recognized this,
    and set apart one RST for users, then made a "RST-less Version" (before the
    "Disk Version" and "CP/M Version") for people needing more than one
    interrupt.

    > Now that I have the serial card running on the Altair, I've addded a
    > Cromemco 8K Bytesaver EPROM card. I burned the control SW for the

    Bytesaver
    > card onto a 2708 and added a little binary loader in the space that was
    > left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    > remaining EPROM chips.


    I understand that you have one Altair? In this case, would you mind
    commenting (in English: the problem is that I am French and not an
    electronician, so have no idea how to comment it in English) my disassembly
    of the initialization routine for the MITS 8800? Then, you could change it
    to suit your own system. (I have still another question regarding one
    mysterious I/O port of the MITS 8800.)

    > Is the MBL more than just a simple Binary Loader? Does it load the

    binary
    > in a non-sequential fashion, moving it around? And the big question: Does
    > anyone have a "straight" binary of 4K Basic, or a copy of MBL?


    Well, I got all the versions that I disassembled from the Web site of Peter
    Schorn, and I can confirm that they correspond to the 80% disassembly
    available on the Web. (Altair 4K BASIC and Altair 8K BASIC were generated
    from one single file with conditionals.)

    From what I have read (all those old MITS manuals), the 2 most popular
    versions were paper tape version (for the ASR-33 Teletype) and a cassette
    tape version (for the ACR). All the versions that I have disassembled had
    CLOAD and CSAVE commands (but, now that I have the source code, I could
    produce a version without them, if you would not mind getting it as an Intel
    HEX file).

    If you have any question...

    Yours Sincerely,
    Mr. Emmanuel Roche, France




  11. Re: Will the real Altair Basic please stand up?

    On Tue, 1 Jul 2008 21:16:01 +0200, "Mr. Emmanuel Roche, France"
    wrote:

    >Hello, John!
    >
    >I was surprised by your endeavour. You may remember that I have disassembled
    >a few programming languages running under CP/M. My main tools are MAC and
    >SID. The only difference is that the MITS Altair BASIC versions that I have
    >disassembled load at 0000H (not Good Old 0100H). That's why I wrote (and
    >published in the comp.os.cpm Newsgroup) a HEXBIN utility, enabling me to
    >create those BIN files under CP/M (it is the comp.os.cpm Newsgroup,
    >remember?).
    >
    >There were dozens of versions of MITS Altair BASIC, including "Extended
    >Version", "Disk Version" (which later became "CP/M BASIC" Version 4.41
    >before becoming our MBASIC Version 5.21), and one which could interest you:
    >"RST-less Version". That is to say: to shorten the code, the most often used
    >subroutines were coded as Intel 8080 RST interrupts. Of course, it was a bad
    >idea that Gary Kildall did not made. After a while, they recognized this,
    >and set apart one RST for users, then made a "RST-less Version" (before the
    >"Disk Version" and "CP/M Version") for people needing more than one
    >interrupt.


    It wasn't till MITS (AKA Micro Soft) 8K basic hit 3.5x that it was
    useful and relatively bug free.

    I'd asked Billy about that once at a show and the answer was both as
    stated and also it made creating a rom version very difficult as most
    users of romed version wanted it at the end or near the top of memory.
    For example Netronics had 8K MS BASIC in ROM at 0xC000
    For the Explorer8085 system. I have that version.

    >
    >> Now that I have the serial card running on the Altair, I've addded a
    >> Cromemco 8K Bytesaver EPROM card. I burned the control SW for the

    >Bytesaver
    >> card onto a 2708 and added a little binary loader in the space that was
    >> left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    >> remaining EPROM chips.

    >
    >I understand that you have one Altair? In this case, would you mind
    >commenting (in English: the problem is that I am French and not an
    >electronician, so have no idea how to comment it in English) my disassembly
    >of the initialization routine for the MITS 8800? Then, you could change it
    >to suit your own system. (I have still another question regarding one
    >mysterious I/O port of the MITS 8800.)


    I found the mystery port. PIO with terminal on it (I used a SWTP TVT
    modded for 64x16 and a SWTP keyboard). I'd forgotten that odd
    port as I was one of the few that did that. Everyone else used the
    SWTP with a serial baord and a serial interface for the terminal.
    The PIO had the same status bis as SIO and could be at the same
    address if there wasn't a SIO. I had forgotten it till the other
    day when digging for a old FDC I found the PIO card with my notes
    describing how to mod it from the terminal configuration to a Eprom
    programmer.

    Also I think programming system II allowed for the status switches
    or monitor command to push data to the parallel port for a "high speed
    printer" such as the Centronics 101 for program listings.

    >> Is the MBL more than just a simple Binary Loader? Does it load the

    >binary
    >> in a non-sequential fashion, moving it around? And the big question: Does
    >> anyone have a "straight" binary of 4K Basic, or a copy of MBL?

    >
    >Well, I got all the versions that I disassembled from the Web site of Peter
    >Schorn, and I can confirm that they correspond to the 80% disassembly
    >available on the Web. (Altair 4K BASIC and Altair 8K BASIC were generated
    >from one single file with conditionals.)
    >
    >From what I have read (all those old MITS manuals), the 2 most popular
    >versions were paper tape version (for the ASR-33 Teletype) and a cassette
    >tape version (for the ACR). All the versions that I have disassembled had
    >CLOAD and CSAVE commands (but, now that I have the source code, I could
    >produce a version without them, if you would not mind getting it as an Intel
    >HEX file).


    Or CLOAD and CSAVE can port data to an alternate place or storage
    means. There was a patch to use it with a Percom cassette interface
    card that worked much better than the ACR.

    Allison


    >
    >If you have any question...
    >
    >Yours Sincerely,
    >Mr. Emmanuel Roche, France
    >
    >



  12. Re: Will the real Altair Basic please stand up?

    Hello, Dwight!

    A few weeks ago, I wrote you.

    Following your message in this thread, I rewrote you...

    But I am still receving no answer.

    So, "Do you read me"?

    Yours Sincerely,
    Mr. Emmanuel Roche, France




  13. Re: Will the real Altair Basic please stand up?


    "Mr. Emmanuel Roche, France" wrote in message
    news:486a8259$0$931$ba4acef3@news.orange.fr...
    > Hello, John!
    >
    > I was surprised by your endeavour. You may remember that I have
    > disassembled
    > a few programming languages running under CP/M. My main tools are MAC and
    > SID. The only difference is that the MITS Altair BASIC versions that I
    > have
    > disassembled load at 0000H (not Good Old 0100H). That's why I wrote (and
    > published in the comp.os.cpm Newsgroup) a HEXBIN utility, enabling me to
    > create those BIN files under CP/M (it is the comp.os.cpm Newsgroup,
    > remember?).
    >
    > There were dozens of versions of MITS Altair BASIC, including "Extended
    > Version", "Disk Version" (which later became "CP/M BASIC" Version 4.41
    > before becoming our MBASIC Version 5.21), and one which could interest
    > you:
    > "RST-less Version". That is to say: to shorten the code, the most often
    > used
    > subroutines were coded as Intel 8080 RST interrupts. Of course, it was a
    > bad
    > idea that Gary Kildall did not made. After a while, they recognized this,
    > and set apart one RST for users, then made a "RST-less Version" (before
    > the
    > "Disk Version" and "CP/M Version") for people needing more than one
    > interrupt.
    >


    All excellent suggestions, thank you. But I want this system to be a
    "historical snapshot" of sorts, running 4K ram with 4K Basic. Once it's all
    checked out as good, I'm mothballing it and a few spare S-100 cards for the
    grandkids. I know it's buggy, that that's the was it was (is).

    For my real work, I have an IMSAI system running ZCPR 3 with dual 8" drives
    and a 20Mb hard disk loaded with CP/M goodies. In case anyone is wondering
    that hard drive weighs in at 90lbs! I had to reinforce the table. I also
    have an Altair 8800B running MS Basic (the actual ROM version, on a MITS ROM
    card). So, I do know that Billy, at some point, got around to making it
    ROMable.


    >> Now that I have the serial card running on the Altair, I've addded a
    >> Cromemco 8K Bytesaver EPROM card. I burned the control SW for the

    > Bytesaver
    >> card onto a 2708 and added a little binary loader in the space that was
    >> left. My goal is to put Altair BASIC (4K ver 3.2) onto some of the
    >> remaining EPROM chips.

    >
    > I understand that you have one Altair? In this case, would you mind
    > commenting (in English: the problem is that I am French and not an
    > electronician, so have no idea how to comment it in English) my
    > disassembly
    > of the initialization routine for the MITS 8800? Then, you could change it
    > to suit your own system. (I have still another question regarding one
    > mysterious I/O port of the MITS 8800.)


    Sure, I'll give you my comments, just post the code. But what is the code
    supposed to initialize? If you're talking about ports, is it a UART init
    routine?
    >
    >> Is the MBL more than just a simple Binary Loader? Does it load the

    > binary
    >> in a non-sequential fashion, moving it around? And the big question:
    >> Does
    >> anyone have a "straight" binary of 4K Basic, or a copy of MBL?

    >
    > Well, I got all the versions that I disassembled from the Web site of
    > Peter
    > Schorn, and I can confirm that they correspond to the 80% disassembly
    > available on the Web. (Altair 4K BASIC and Altair 8K BASIC were generated
    > from one single file with conditionals.)
    >
    > From what I have read (all those old MITS manuals), the 2 most popular
    > versions were paper tape version (for the ASR-33 Teletype) and a cassette
    > tape version (for the ACR). All the versions that I have disassembled had
    > CLOAD and CSAVE commands (but, now that I have the source code, I could
    > produce a version without them, if you would not mind getting it as an
    > Intel
    > HEX file).



    Hex file would be great, thanks. Got lotsa' loaders laying around
    >
    > If you have any question...
    >
    > Yours Sincerely,
    > Mr. Emmanuel Roche, France
    >
    >
    >




  14. Re: Will the real Altair Basic please stand up?

    Hello, John!

    > (...) I also
    > have an Altair 8800B running MS Basic (the actual ROM version, on a MITS

    ROM
    > card). So, I do know that Billy, at some point, got around to making it
    > ROMable.


    MITS 4K Altair BASIC Version 3.2 contains a few places where a value is
    "POKEd" (in English: self-modifying code). That's why it needs to be run in
    RAM.

    > > I understand that you have one Altair? In this case, would you mind
    > > commenting (in English: the problem is that I am French and not an
    > > electronician, so have no idea how to comment it in English) my
    > > disassembly
    > > of the initialization routine for the MITS 8800? Then, you could change

    it
    > > to suit your own system. (I have still another question regarding one
    > > mysterious I/O port of the MITS 8800.)

    >
    > Sure, I'll give you my comments, just post the code. But what is the code
    > supposed to initialize? If you're talking about ports, is it a UART init
    > routine?



    ;--------------------------------
    BasicSize:
    ;--------------------------------

    db 00h,00h,00h,00h ; Forgotten ? (10 bytes)
    db 00h,00h,00h,00h
    db 00h,00h

    ;--------------------------------

    Init:
    lxi h,MinimumMemory
    sphl
    shld stack$top
    in 01h
    mvi c,0ffh
    lxi d,ConfigIOcode
    push d
    lda Boundary4K
    mov b,a
    in SenseSw ; Did the user input something?
    rar
    jc Init1
    ani 0000$1100b ; 12
    jz Init2
    mvi b,10h ; 16
    Init1:
    mov a,b
    Init2:
    sta OUTportInit
    in SenseSw
    ral
    ral
    mvi b,20h ; " "
    j$0d4b:
    lxi d,0ca02h ; ?
    rc
    ral
    mov b,e
    dcr e
    rc
    ral
    jc j$0d6f
    mov b,e
    lxi d,0c280h ; ?
    ral
    rnc
    ral
    mvi a,03h ; 3
    call co0d8b
    dcr a
    adc a
    add a
    add a
    inr a
    call co0d8b
    stc
    jmp j$0d4b

    j$0d6f:
    xra a
    call co0d8b
    call co0d87
    call co0d87
    mov c,e
    cma
    call co0d87
    mvi a,04h ; 4
    dcr m
    call co0d8b
    dcr m
    dcr m
    dcr m
    co0d87:
    lxi h,OUTportInit
    inr m
    co0d8b:
    db 0d3h ; = Intel 8080 OUT xxh opcode
    OUTportInit:
    db 10h
    ret

    ;--------------------------------

    ConfigIOcode:
    mov h,d
    mov l,b
    shld INmask00h
    mov a,h
    ani 1100$1000b
    mov h,a
    shld TSTmask00h
    xchg
    shld OUTmask00h
    lda OUTportInit
    sta INport00h
    sta TSTport00h
    inr a
    sta INport01h
    add c
    sta OUTport00h
    inr a
    sta OUTport01h

    ; MEMORY SIZE?

    lxi h,0ffffh ; = 64K bytes...
    shld current$line
    call NewLine
    lxi h,szMemorySize
    call PrintString
    call InputLineWithQmark
    rst 2
    ora a
    jnz UserSuppliedMemSize
    lxi h,UnusedMemory
    FindMemTopLoop:
    inx h
    mvi a,37h ; = "7"
    mov m,a
    cmp m
    jnz DoneMemSize
    dcr a
    mov m,a
    cmp m
    jz FindMemTopLoop
    jmp DoneMemSize

    UserSuppliedMemSize:
    lxi h,LineBuffer2
    call LineNumberFromStr
    ora a
    jnz SNerr
    xchg
    dcx h
    DoneMemSize:
    dcx h
    push h

    ; TERMINAL WIDTH?

    GetTerminalWidth:
    lxi h,szTerminalWidth
    call PrintString
    call InputLineWithQmark
    rst 2
    ora a
    jz DoOptionalFunctions
    lxi h,LineBuffer2
    call LineNumberFromStr
    mov a,d
    ora a
    jnz GetTerminalWidth
    mov a,e
    cpi MinimumWidth
    jc GetTerminalWidth
    sta USwidth ; POKE new user-supplied width
    CalcTabBrkSize:
    sui TabSize
    jnc CalcTabBrkSize
    adi TabSize*2
    cma
    inr a
    add e
    sta LastTab

    ; WANT SIN, RND, SQR?

    DoOptionalFunctions:
    lxi h,VariousAddresses
    OptionalFunLoop:
    rst 6
    lxi d,szWantSin ; "WANT SIN?"
    rst 4
    jz DontWantSin
    rst 6
    xthl
    call PrintString
    call InputLineWithQmark
    rst 2
    pop h
    cpi upY ; "Y"
    DontWantSin:
    pop d
    jz InitProgramBase
    cpi upN ; "N"
    jnz DoOptionalFunctions
    rst 6
    xthl
    lxi d,IllFun
    mov m,e
    inx h
    mov m,d
    pop h
    jmp OptionalFunLoop

    InitProgramBase:
    xchg
    mvi m,00h
    inx h
    shld program$base
    xthl
    lxi d,MinimumMemory
    rst 4
    jc OutOfMemory
    pop d
    sphl
    shld stack$top
    xchg
    call CheckEnoughMem
    mov a,e
    sub l
    mov l,a
    mov a,d
    sbb h
    mov h,a
    lxi b,0fff0h ; = 65520
    dad b
    call NewLine
    call PrintINT
    lxi h,szVersionInfo ; xxxxx BYTES FREE, etc
    call PrintString
    lxi h,PrintString
    shld w01fd
    call NewToo
    lxi h,main
    shld w0002
    pchl

    ;--------------------------------

    VariousAddresses:

    dw BasicSize ; = 3351 bytes

    dw szWantSin
    dw SinLoc
    dw Sin

    dw szWantRnd
    dw RndLoc
    dw Rnd

    dw szWantSqr
    dw SqrLoc
    dw Sqr

    ;--------------------------------
    ; Why use 80h to signal the end of the string,
    ; if all messages end with a 00h?

    szWantSin:
    db 'WANT SI','N'+80h
    db 00h

    szWantRnd:
    db 'WANT RN','D'+80h
    db 00h

    szWantSqr:
    db 'WANT SQ','R'+80h
    db 00h

    szTerminalWidth:
    db 'TERMINAL WIDT','H'+80h
    db 00h

    szVersionInfo:
    db ' BYTES FRE','E'+80h
    db CRchar
    db CRchar
    db 'BASIC VERSION 3.','2'+80h
    db CRchar
    db '[4K VERSION',']'+80h
    db CRchar
    db 00h

    szMemorySize:
    db 'MEMORY SIZ','E'+80h
    db 00h

    ;--------------------------------

    UnusedMemory:
    ds 30 ; Need at least 30 bytes of RAM to run...
    MinimumMemory:

    ;--------------------------------

    ORG 0fffh
    Boundary4K:

    ;--------------------------------

    END ; Not a CP/M COMmand file

    Yours Sincerely,
    Mr. Emmanuel Roche, France




  15. Re: Will the real Altair Basic please stand up?


    "Mr. Emmanuel Roche, France" wrote in message
    news:486c0a70$0$854$ba4acef3@news.orange.fr...
    > Hello, John!
    >
    >> (...) I also
    >> have an Altair 8800B running MS Basic (the actual ROM version, on a MITS

    > ROM
    >> card). So, I do know that Billy, at some point, got around to making it
    >> ROMable.

    >
    > MITS 4K Altair BASIC Version 3.2 contains a few places where a value is
    > "POKEd" (in English: self-modifying code). That's why it needs to be run
    > in
    > RAM.
    >
    >> > I understand that you have one Altair? In this case, would you mind
    >> > commenting (in English: the problem is that I am French and not an
    >> > electronician, so have no idea how to comment it in English) my
    >> > disassembly
    >> > of the initialization routine for the MITS 8800? Then, you could change

    > it
    >> > to suit your own system. (I have still another question regarding one
    >> > mysterious I/O port of the MITS 8800.)

    >>
    >> Sure, I'll give you my comments, just post the code. But what is the
    >> code
    >> supposed to initialize? If you're talking about ports, is it a UART init
    >> routine?

    >
    >
    > ;--------------------------------
    > BasicSize:
    > ;--------------------------------
    >
    > db 00h,00h,00h,00h ; Forgotten ? (10 bytes)
    > db 00h,00h,00h,00h
    > db 00h,00h
    >
    > ;--------------------------------
    >
    > Init:
    > lxi h,MinimumMemory
    > sphl
    > shld stack$top
    > in 01h
    > mvi c,0ffh
    > lxi d,ConfigIOcode
    > push d
    > lda Boundary4K
    > mov b,a
    > in SenseSw ; Did the user input something?
    > rar
    > jc Init1
    > ani 0000$1100b ; 12
    > jz Init2
    > mvi b,10h ; 16
    > Init1:
    > mov a,b
    > Init2:
    > sta OUTportInit
    > in SenseSw
    > ral
    > ral
    > mvi b,20h ; " "
    > j$0d4b:
    > lxi d,0ca02h ; ?
    > rc
    > ral
    > mov b,e
    > dcr e
    > rc
    > ral
    > jc j$0d6f
    > mov b,e
    > lxi d,0c280h ; ?
    > ral
    > rnc
    > ral
    > mvi a,03h ; 3
    > call co0d8b
    > dcr a
    > adc a
    > add a
    > add a
    > inr a
    > call co0d8b
    > stc
    > jmp j$0d4b
    >
    > j$0d6f:
    > xra a
    > call co0d8b
    > call co0d87
    > call co0d87
    > mov c,e
    > cma
    > call co0d87
    > mvi a,04h ; 4
    > dcr m
    > call co0d8b
    > dcr m
    > dcr m
    > dcr m
    > co0d87:
    > lxi h,OUTportInit
    > inr m
    > co0d8b:
    > db 0d3h ; = Intel 8080 OUT xxh opcode
    > OUTportInit:
    > db 10h
    > ret
    >
    > ;--------------------------------
    >
    > ConfigIOcode:
    > mov h,d
    > mov l,b
    > shld INmask00h
    > mov a,h
    > ani 1100$1000b
    > mov h,a
    > shld TSTmask00h
    > xchg
    > shld OUTmask00h
    > lda OUTportInit
    > sta INport00h
    > sta TSTport00h
    > inr a
    > sta INport01h
    > add c
    > sta OUTport00h
    > inr a
    > sta OUTport01h
    >
    > ; MEMORY SIZE?
    >
    > lxi h,0ffffh ; = 64K bytes...
    > shld current$line
    > call NewLine
    > lxi h,szMemorySize
    > call PrintString
    > call InputLineWithQmark
    > rst 2
    > ora a
    > jnz UserSuppliedMemSize
    > lxi h,UnusedMemory
    > FindMemTopLoop:
    > inx h
    > mvi a,37h ; = "7"
    > mov m,a
    > cmp m
    > jnz DoneMemSize
    > dcr a
    > mov m,a
    > cmp m
    > jz FindMemTopLoop
    > jmp DoneMemSize
    >
    > UserSuppliedMemSize:
    > lxi h,LineBuffer2
    > call LineNumberFromStr
    > ora a
    > jnz SNerr
    > xchg
    > dcx h
    > DoneMemSize:
    > dcx h
    > push h
    >
    > ; TERMINAL WIDTH?
    >
    > GetTerminalWidth:
    > lxi h,szTerminalWidth
    > call PrintString
    > call InputLineWithQmark
    > rst 2
    > ora a
    > jz DoOptionalFunctions
    > lxi h,LineBuffer2
    > call LineNumberFromStr
    > mov a,d
    > ora a
    > jnz GetTerminalWidth
    > mov a,e
    > cpi MinimumWidth
    > jc GetTerminalWidth
    > sta USwidth ; POKE new user-supplied width
    > CalcTabBrkSize:
    > sui TabSize
    > jnc CalcTabBrkSize
    > adi TabSize*2
    > cma
    > inr a
    > add e
    > sta LastTab
    >
    > ; WANT SIN, RND, SQR?
    >
    > DoOptionalFunctions:
    > lxi h,VariousAddresses
    > OptionalFunLoop:
    > rst 6
    > lxi d,szWantSin ; "WANT SIN?"
    > rst 4
    > jz DontWantSin
    > rst 6
    > xthl
    > call PrintString
    > call InputLineWithQmark
    > rst 2
    > pop h
    > cpi upY ; "Y"
    > DontWantSin:
    > pop d
    > jz InitProgramBase
    > cpi upN ; "N"
    > jnz DoOptionalFunctions
    > rst 6
    > xthl
    > lxi d,IllFun
    > mov m,e
    > inx h
    > mov m,d
    > pop h
    > jmp OptionalFunLoop
    >
    > InitProgramBase:
    > xchg
    > mvi m,00h
    > inx h
    > shld program$base
    > xthl
    > lxi d,MinimumMemory
    > rst 4
    > jc OutOfMemory
    > pop d
    > sphl
    > shld stack$top
    > xchg
    > call CheckEnoughMem
    > mov a,e
    > sub l
    > mov l,a
    > mov a,d
    > sbb h
    > mov h,a
    > lxi b,0fff0h ; = 65520
    > dad b
    > call NewLine
    > call PrintINT
    > lxi h,szVersionInfo ; xxxxx BYTES FREE, etc
    > call PrintString
    > lxi h,PrintString
    > shld w01fd
    > call NewToo
    > lxi h,main
    > shld w0002
    > pchl
    >
    > ;--------------------------------
    >
    > VariousAddresses:
    >
    > dw BasicSize ; = 3351 bytes
    >
    > dw szWantSin
    > dw SinLoc
    > dw Sin
    >
    > dw szWantRnd
    > dw RndLoc
    > dw Rnd
    >
    > dw szWantSqr
    > dw SqrLoc
    > dw Sqr
    >
    > ;--------------------------------
    > ; Why use 80h to signal the end of the string,
    > ; if all messages end with a 00h?
    >
    > szWantSin:
    > db 'WANT SI','N'+80h
    > db 00h
    >
    > szWantRnd:
    > db 'WANT RN','D'+80h
    > db 00h
    >
    > szWantSqr:
    > db 'WANT SQ','R'+80h
    > db 00h
    >
    > szTerminalWidth:
    > db 'TERMINAL WIDT','H'+80h
    > db 00h
    >
    > szVersionInfo:
    > db ' BYTES FRE','E'+80h
    > db CRchar
    > db CRchar
    > db 'BASIC VERSION 3.','2'+80h
    > db CRchar
    > db '[4K VERSION',']'+80h
    > db CRchar
    > db 00h
    >
    > szMemorySize:
    > db 'MEMORY SIZ','E'+80h
    > db 00h
    >
    > ;--------------------------------
    >
    > UnusedMemory:
    > ds 30 ; Need at least 30 bytes of RAM to run...
    > MinimumMemory:
    >
    > ;--------------------------------
    >
    > ORG 0fffh
    > Boundary4K:
    >
    > ;--------------------------------
    >
    > END ; Not a CP/M COMmand file
    >
    > Yours Sincerely,
    > Mr. Emmanuel Roche, France
    >
    >
    >





    ;================================================= =====
    ;================================================= =====

    Emmanuel,

    This is the init routine for Altair BASIC. I thought you were talking about
    some other code. There is a disaassembly out there:

    http://www.interact-sw.co.uk/altair/index2.html

    But I can at least clear up a few questions you posed in the code snippet:

    1)
    in SenseSw ; Did the user input something?

    In Altair Basic, the init routine reads the sense switches to determine the
    I/O configuration. Does the user have an SIO-A, a 2SIO?, etc. These
    different I/O cards use different UARTS, and different 8080 I/O ports for
    communication. For example, My Altair 8800 has an SIO-A card, so I would
    run Basic with switch A14 up and the others down.

    2)
    ; Why use 80h to signal the end of the string,
    ; if all messages end with a 00h?

    If you look at the code, he's not putting an 80h before the terminating 00h.
    He's adding 80H to the last char; effectively setting the MSB high. I read
    somewhere that Altair Basic uses the high bit for a special purpose (anybody
    know the details of this?). And that's supposedly the reason you have to
    run your terminal emulator in 7bit mode.


    In other news, I finally finished the Altair project. I found a BIN
    (non-tape) version of Basic 3.2 (4K) out on a simulator site. Burned it
    into some 2708s I had laying around, added a new command to my Altair
    Monitor, and voila! From the Monitor, I can load Basic in 2 keystrokes; a
    little routine copies it from the EPROMS sitting in high memory down to RAM
    @ 0000, then jumps to it and you're in. I kept the MBL tape loader in the
    Monitor too, just in case

    -John



  16. Re: Will the real Altair Basic please stand up?

    On Fri, 11 Jul 2008 16:36:05 -0500, "John Crane" wrote:

    >
    >"Mr. Emmanuel Roche, France" wrote in message
    >news:486c0a70$0$854$ba4acef3@news.orange.fr...
    >> Hello, John!
    >>


    ---------->>>>>>>>>>>>>>>Huge snippage>>>>>>>>>>>>>>>

    >>

    >;================================================= =====
    >
    >Emmanuel,
    >
    >This is the init routine for Altair BASIC. I thought you were talking about
    >some other code. There is a disaassembly out there:
    >
    >http://www.interact-sw.co.uk/altair/index2.html
    >
    >But I can at least clear up a few questions you posed in the code snippet:
    >
    >1)
    > in SenseSw ; Did the user input something?
    >
    >In Altair Basic, the init routine reads the sense switches to determine the
    >I/O configuration. Does the user have an SIO-A, a 2SIO?, etc. These
    >different I/O cards use different UARTS, and different 8080 I/O ports for
    >communication. For example, My Altair 8800 has an SIO-A card, so I would
    >run Basic with switch A14 up and the others down.
    >
    >2)
    >; Why use 80h to signal the end of the string,
    >; if all messages end with a 00h?
    >
    >If you look at the code, he's not putting an 80h before the terminating 00h.
    >He's adding 80H to the last char; effectively setting the MSB high. I read
    >somewhere that Altair Basic uses the high bit for a special purpose (anybody
    >know the details of this?). And that's supposedly the reason you have to
    >run your terminal emulator in 7bit mode.
    >


    All reserved words {print, input, and so on} were tokenized to a byte
    value.

    >
    >In other news, I finally finished the Altair project. I found a BIN
    >(non-tape) version of Basic 3.2 (4K) out on a simulator site. Burned it
    >into some 2708s I had laying around, added a new command to my Altair
    >Monitor, and voila! From the Monitor, I can load Basic in 2 keystrokes; a
    >little routine copies it from the EPROMS sitting in high memory down to RAM
    >@ 0000, then jumps to it and you're in. I kept the MBL tape loader in the
    >Monitor too, just in case


    That was likely a version that was on tape (paper or audio)
    originally. I did that with mine because the ACR was flakey on
    a good day and tended to worse. So I loaded it and instead of
    letting it init I halted the machine and wrote it out to a 9600 baud
    phase encoded interface that wrote to a saturation (rather than audio)
    tape drive (Redactron). The result was near 100% read write
    reliability and hugely faster (under 10sec) load. Many others
    did the same using Tarbell tape interface, wrote it to Eprom
    or punched it as block checksummed binary paper tape
    that would load faster and/or stop on error. Still have a tape
    but the hardware to load/read it is long gone.


    Allison
    >
    >-John
    >



  17. Re: Will the real Altair Basic please stand up?


    wrote in message
    news:75nf74pqifc9m5hul85ni3unna8mso2ecf@4ax.com...

    > That was likely a version that was on tape (paper or audio)
    > originally. I did that with mine because the ACR was flakey on
    > a good day and tended to worse. So I loaded it and instead of
    > letting it init I halted the machine and wrote it out to a 9600 baud
    > phase encoded interface that wrote to a saturation (rather than audio)
    > tape drive (Redactron). The result was near 100% read write
    > reliability and hugely faster (under 10sec) load. Many others
    > did the same using Tarbell tape interface, wrote it to Eprom
    > or punched it as block checksummed binary paper tape
    > that would load faster and/or stop on error. Still have a tape
    > but the hardware to load/read it is long gone.
    >
    >
    > Allison
    >>
    >>-John
    >>


    Allison,

    Sounds like you had some fun! I was thinking of doing the same to get the
    binary image, but luckily I came across the BIN file out there and it saved
    me a couple of steps in the process. I've heard the 88-ACR cards were
    really flakey; glad I'm not tinkering with one of those. I have a Tarbell
    card, supposedly more reliable and faster, and I was thinking of using it.
    But it looks like I'll have to patch Altair Basic, not to mention install
    another motherboard section and fight the "battle of the wires" because I'm
    out of slots.

    I've been thinking of playing around with paper tapes. I see modern,
    hobbyist style tape readers on ebay every so often. But I'd need a punch
    too, and I haven't seen one of those in a while. And I have too much on my
    plate to try to get an old Teletype up and running again.

    -John



  18. Re: Will the real Altair Basic please stand up?

    On Jul 11, 4:36*pm, "John Crane" wrote:
    > "Mr. Emmanuel Roche, France" wrote in messagenews:486c0a70$0$854$ba4acef3@news.orange.fr ...
    >

    [snipped]
    > ; Why use 80h to signal the end of the string,
    > ; if all messages end with a 00h?
    >
    > If you look at the code, he's not putting an 80h before the terminating 00h.
    > He's adding 80H to the last char; effectively setting the MSB high. *I read
    > somewhere that Altair Basic uses the high bit for a special purpose (anybody
    > know the details of this?). *And that's supposedly the reason you have to
    > run your terminal emulator in 7bit mode.
    >

    I don't know about that.
    But, using the high bit of a character to signal the end of the
    string, was common enough, back when, byte counting counted. C wastes
    a null character to signal the end of the string.

    Steve

    > In other news, *I finally finished the Altair project. *I found a BIN
    > (non-tape) version of Basic 3.2 (4K) out on a simulator site. *Burned it
    > into some 2708s I had laying around, added a new command to my Altair
    > Monitor, and voila! *From the Monitor, I can load Basic in 2 keystrokes; a
    > little routine copies it from the EPROMS sitting in high memory down to RAM
    > @ 0000, then jumps to it and you're in. I kept the MBL tape loader in the
    > Monitor too, just in case
    >
    > -John- Hide quoted text -
    >
    > - Show quoted text -



  19. Re: Will the real Altair Basic please stand up?

    On Sat, 12 Jul 2008 14:30:44 -0500, "John Crane" wrote:

    >
    > wrote in message
    >news:75nf74pqifc9m5hul85ni3unna8mso2ecf@4ax.com...
    >
    >> That was likely a version that was on tape (paper or audio)
    >> originally. I did that with mine because the ACR was flakey on
    >> a good day and tended to worse. So I loaded it and instead of
    >> letting it init I halted the machine and wrote it out to a 9600 baud
    >> phase encoded interface that wrote to a saturation (rather than audio)
    >> tape drive (Redactron). The result was near 100% read write
    >> reliability and hugely faster (under 10sec) load. Many others
    >> did the same using Tarbell tape interface, wrote it to Eprom
    >> or punched it as block checksummed binary paper tape
    >> that would load faster and/or stop on error. Still have a tape
    >> but the hardware to load/read it is long gone.
    >>
    >>
    >> Allison
    >>>
    >>>-John
    >>>

    >
    >Allison,
    >
    >Sounds like you had some fun! I was thinking of doing the same to get the


    Yes I did. I was an early adoptor aka bleeding edge. I got to learn
    and cope with early bugs, timing issues, flaky DRAM, and also
    approaches to how to get an IO and storage system going.

    >binary image, but luckily I came across the BIN file out there and it saved
    >me a couple of steps in the process. I've heard the 88-ACR cards were
    >really flakey; glad I'm not tinkering with one of those. I have a Tarbell
    >card, supposedly more reliable and faster, and I was thinking of using it.
    >But it looks like I'll have to patch Altair Basic, not to mention install
    >another motherboard section and fight the "battle of the wires" because I'm
    >out of slots.


    The 88ACR made a fine serial card sans the modem piggy back card.
    I still use it in one of the S100 machines. Percom also made a
    cassette interface card that wasn't as fast as Tarbell or as popular
    but it worked well.. the Persom would interface with fewer code
    changes (change from the SIOB status and data to an 8251).

    I wonder if you Altair will get the flakies when you extend the bus,
    mine did. Ended up putting in a wamco terminated bus card.
    Back then the industry was new and many were still trying to figure
    out what worked without overkill.

    Allison

    >I've been thinking of playing around with paper tapes. I see modern,
    >hobbyist style tape readers on ebay every so often. But I'd need a punch
    >too, and I haven't seen one of those in a while. And I have too much on my
    >plate to try to get an old Teletype up and running again.
    >
    >-John
    >



  20. Re: Will the real Altair Basic please stand up?

    On Sat, 12 Jul 2008 18:23:23 -0700 (PDT), s_dubrovich@yahoo.com wrote:

    >On Jul 11, 4:36*pm, "John Crane" wrote:
    >> "Mr. Emmanuel Roche, France" wrote in messagenews:486c0a70$0$854$ba4acef3@news.orange.fr ...
    >>

    >[snipped]
    >> ; Why use 80h to signal the end of the string,
    >> ; if all messages end with a 00h?
    >>
    >> If you look at the code, he's not putting an 80h before the terminating 00h.
    >> He's adding 80H to the last char; effectively setting the MSB high. *I read
    >> somewhere that Altair Basic uses the high bit for a special purpose (anybody
    >> know the details of this?). *And that's supposedly the reason you have to
    >> run your terminal emulator in 7bit mode.
    >>

    >I don't know about that.
    >But, using the high bit of a character to signal the end of the
    >string, was common enough, back when, byte counting counted. C wastes
    >a null character to signal the end of the string.
    >


    Your also right on that. Saved a byte for every string.

    Allison


    >Steve
    >
    >> In other news, *I finally finished the Altair project. *I found a BIN
    >> (non-tape) version of Basic 3.2 (4K) out on a simulator site. *Burned it
    >> into some 2708s I had laying around, added a new command to my Altair
    >> Monitor, and voila! *From the Monitor, I can load Basic in 2 keystrokes; a
    >> little routine copies it from the EPROMS sitting in high memory down to RAM
    >> @ 0000, then jumps to it and you're in. I kept the MBL tape loader in the
    >> Monitor too, just in case
    >>
    >> -John- Hide quoted text -
    >>
    >> - Show quoted text -



+ Reply to Thread
Page 1 of 2 1 2 LastLast