Loading ...
Sorry, an error occurred while loading the content.
 

Bootstrapping a new system from scratch

Expand Messages
  • country_robot
    Over the next several months I plan to bring up a whole 1802 system from elf-equivalent with toggle switches to a system with a full ASCII keyboard, video
    Message 1 of 29 , Apr 22 8:07 PM
      Over the next several months I plan to bring up a whole 1802 system from elf-equivalent with toggle switches to a system with a full ASCII keyboard, video display, and 5-1/4" floppy disks.

      This will all be done using chips readily available in the 1975 to 1985 timeframe, and because it's being done mostly for its aesthetic value as part of a retro-robotic sculpture installation, I'll be adding lager & faster RAM & EPROM chips as would have been done during a project spanning that decade. It will serve as the self-hosted development system for the robot, which will use similar hardware.

      To compress how much time it takes me to recapitulate the natural evolution such a project would have gone through Back In The Day, I'll be cheating (sort of) by using known-working circuits and code from the files section as much as possible. With 20/20 hindsight I'll try to know exactly where I should go next at each stage.

      As a first approximation, I reckon I need to accomplish the following goals, more or less in the order proposed below:


      1) Build Baseline Elf (BE0) system with enough battery-backed RAM to be useful for further development;

      2) Add a hex keypad & write a brain-dead monitor (BDM) program kept in RAM;

      3) Using BDM, write & debug program to burn EPROMs;

      4) Program a BDM EPROM and incorporate into system (now BE1);

      5) Build a cheap-video-style interface for a small (5-1/2") B/W monitor;

      6) Upgrade the BDM to use video monitor & ASCII keyboard for simple line editing;

      7) Add Hex/ASCII dump facility to BDM

      8) Upgrade BDM with single-line assembler/disassembler (no more hand assembly!);

      9) Add cursor-based screen editing capability (now BE2);

      10) Bootstrap EPROM-based Forth kernel;

      11) Write floppy disk I/O primitives;

      12) Write macro assembler in Forth;

      13) Write disk-based screen editor in Forth (now BE3);


      So, it is an ambitious project, but I've done most of the bits and pieces before, though for other processors. Have I missed anything important? Is there an easier or more efficient order folks might suggest? What further stages might I add beyond BE3?

      -Bobby
    • jdrose_8_bit
      That sounds like a really neat project. Are you going to develop a PCB for it or use some other construction technique?
      Message 2 of 29 , Apr 23 6:14 AM
        That sounds like a really neat project.

        Are you going to develop a PCB for it or use some other construction technique?

        --- In cosmacelf@yahoogroups.com, "country_robot" <rlnansel@...> wrote:
        >
        > Over the next several months I plan to bring up a whole 1802 system from elf-equivalent with toggle switches to a system with a full ASCII keyboard, video display, and 5-1/4" floppy disks.
        >
        > This will all be done using chips readily available in the 1975 to 1985 timeframe, and because it's being done mostly for its aesthetic value as part of a retro-robotic sculpture installation, I'll be adding lager & faster RAM & EPROM chips as would have been done during a project spanning that decade. It will serve as the self-hosted development system for the robot, which will use similar hardware.
        >
        > To compress how much time it takes me to recapitulate the natural evolution such a project would have gone through Back In The Day, I'll be cheating (sort of) by using known-working circuits and code from the files section as much as possible. With 20/20 hindsight I'll try to know exactly where I should go next at each stage.
        >
        > As a first approximation, I reckon I need to accomplish the following goals, more or less in the order proposed below:
        >
        >
        > 1) Build Baseline Elf (BE0) system with enough battery-backed RAM to be useful for further development;
        >
        > 2) Add a hex keypad & write a brain-dead monitor (BDM) program kept in RAM;
        >
        > 3) Using BDM, write & debug program to burn EPROMs;
        >
        > 4) Program a BDM EPROM and incorporate into system (now BE1);
        >
        > 5) Build a cheap-video-style interface for a small (5-1/2") B/W monitor;
        >
        > 6) Upgrade the BDM to use video monitor & ASCII keyboard for simple line editing;
        >
        > 7) Add Hex/ASCII dump facility to BDM
        >
        > 8) Upgrade BDM with single-line assembler/disassembler (no more hand assembly!);
        >
        > 9) Add cursor-based screen editing capability (now BE2);
        >
        > 10) Bootstrap EPROM-based Forth kernel;
        >
        > 11) Write floppy disk I/O primitives;
        >
        > 12) Write macro assembler in Forth;
        >
        > 13) Write disk-based screen editor in Forth (now BE3);
        >
        >
        > So, it is an ambitious project, but I've done most of the bits and pieces before, though for other processors. Have I missed anything important? Is there an easier or more efficient order folks might suggest? What further stages might I add beyond BE3?
        >
        > -Bobby
        >
      • David W. Schultz
        ... You can combine all of these steps into one be using an EEPROM like the 28C64. This is large enough to hold a lot of code (it is big enough for fig-FORTH)
        Message 3 of 29 , Apr 23 5:17 PM
          On 04/22/2013 10:07 PM, country_robot wrote:
          >
          > 1) Build Baseline Elf (BE0) system with enough battery-backed RAM to
          > be useful for further development;
          >
          > 2) Add a hex keypad & write a brain-dead monitor (BDM) program kept
          > in RAM;
          >
          > 3) Using BDM, write & debug program to burn EPROMs;
          >
          > 4) Program a BDM EPROM and incorporate into system (now BE1);
          >

          You can combine all of these steps into one be using an EEPROM like the
          28C64. This is large enough to hold a lot of code (it is big enough for
          fig-FORTH) and is easy to program: just write as normal. The chip
          latches the data and times the write cycle internally.

          http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&productId=74827&catalogId=10001&CID=MERCH

          The only trick is that you have to leave it alone for a millisecond or
          so after starting the write. If you are using load mode, you can't press
          the input switch fast enough for it to be a problem. If you are using a
          program then a delay loop is required. If the program is in the EEPROM
          being programmed, then it needs to copy a short write and wait program
          to RAM and execute that.

          For brain dead monitors you could use a variant on ETOPS or EHOPS. Put
          the EEPROM at address 0 and make the first instruction a long branch
          with the BDM right after it. So to execute the BDM, replace the first
          byte of the long jump with a long skip. To have some other program
          execute at reset, make it a long jump again.


          --
          David W. Schultz
          http://home.earthlink.net/~david.schultz
          Returned for Regrooving
        • joshbensadon
          ... Hi David, I think he doesn t want to take any short cuts. I believe his goal is to experience the slow rocky road. I will admit he s got more guts than
          Message 4 of 29 , Apr 23 5:38 PM
            --- In cosmacelf@yahoogroups.com, "David W. Schultz" <david.schultz@...> wrote:
            >
            > On 04/22/2013 10:07 PM, country_robot wrote:
            > >
            > > 1) Build Baseline Elf (BE0) system with enough battery-backed
            > > 2) Add a hex keypad & write a brain-dead monitor (BDM) program
            > > 3) Using BDM, write & debug program to burn EPROMs;
            > > 4) Program a BDM EPROM and incorporate into system (now BE1);
            >
            > You can combine all of these steps into one be using an EEPROM like the
            > 28C64.

            Hi David, I think he doesn't want to take any short cuts. I believe his goal is to experience the slow rocky road. I will admit he's got more guts than me!

            :)J
          • country_robot
            ... think he doesn t want to take any short cuts. I believe his goal is to experience the slow rocky road. I will admit he s got more guts than me! :)J
            Message 5 of 29 , Apr 23 9:56 PM


              --- In cosmacelf@yahoogroups.com, "joshbensadon" wrote:
              > Hi David, I think he doesn't want to take any short cuts.  I believe his goal is to experience the slow rocky road.
              > I will admit he's got more guts than me!
              > :)J


              Now y'all are trying to frighten me :)

              Yes, I am going over the whole rocky road, though with benefit of hindsight I believe it won't have to be slow as well. If any of it gets too hard because of the limitations I force on myself by sticking to parts available in any particular year, I can always move on to parts available the next year. Then, too, while the final artefacts are going to reflect the "history" of their 10-year evolution, I don't have to do all the work in the BEn development environment. 

              For instance, once I demonstrate I can toggle in a few machine language programs of hand-assembled code, I'll start using my PC and a cross assembler and simulator to write the code needed for a hex-keypad monitor; I'll also borrow liberally from existing monitor programs available at the time. I'll keep track of each change I make to my original code so when I finish I can copy the first version of the program with pencil and paper onto a coding form as if I had hand-assembled the code. I'll then erase or cross out subsequent changes, when possible  on the original coding form, move on to a new form only once the old one is sufficiently ugly looking. The end result will look the same as if I had done the whole process by hand.

              I'll also compress the time needed during the EPROM stage by using an EPROM emulator to eliminate the classic burn-crash-burn EPROM cycle; that way I only have to burn the final working program once.

              I haven't decided which parts of this I'll use custom PCBs for. I've got lots of experience doing single- and double-side PCB artwork using drawing programs to make a Postscript  file which is then printed to litho film by a service bureau. Back in the day I even made artwork using tape and Bishop Graphics pad patterns. I'm not sure if such graphics material is still available other than as NOS on ebay.  It might be interesting to do a board by Ye Olde Manual Taping, but I'm skeptical how well original Bishop Graphics materials, especially pad patterns, would work after sitting in a drawer for thirty years.

              If anybody has any of the old layout stuff unused, let me know if the adhesive even allows you to pull up a pad pattern from the carrier sheet and then stick the pattern to mylar. If the stuff still works I might be moved to try one layout just for old time's sake. But just one; I'm not a masochist.

              -Bobby
            • rileym65
              Sounds like you have a fun project ahead of you! This reminds me of when I developed my Micro/Elf along with the Elf/OS system. After building the original
              Message 6 of 29 , Apr 24 7:57 AM
                Sounds like you have a fun project ahead of you!

                This reminds me of when I developed my Micro/Elf along with the Elf/OS system. After building the original Micro/Elf and expansion board, which had a NVRAM as the rom starting at 8000h. I wrote a simple extended version of ETOPS that would allow me to toggle in the serial routines and mini-monitor that I had hand assembled into the NVRAM.

                After annoyances with the toggling it did not take me long at all to develop a hexpad that I used for all further bios work. Over half of my Elf/OS BIOS was written and tested using the NVRAM setup on my Micro/Elf. Once the serial routines and mini-monitor were written, I used a simple terminal program on another computer to do the rest of the work.

                By the time I started working on the Elf/OS kernel itself, I had already added the necessary hardware emulation to my emulator which allowed me to develop the rest of the system in emulation, periodically copying all the code onto my Micro/Elf to verify that everything still worked on the actual hardware.

                At one time my bios had the i/o routines for communicating with the Western Digital 1791 floppy controller, but since I never built the hardware these routines were eventually removed, however the sources for my older bios's are still available, so my floppy code is still available. The biggest problem you are going to have with floppy disks (at least with controllers like the 1791) is that the read loop needs to be super super tight since you have to be able to read the data from the controller as fast as it sends it, those older controllers did not buffer! Same thing with the write loop. So either you need to bump up the clock rate or make sure these two loops execute in the smallest amount of time possible.

                Anyhow, your project reminds me of all the fun I had working on my system from scratch. I wish you good luck and lots of fun!

                Mike


                --- In cosmacelf@yahoogroups.com, "country_robot" <rlnansel@...> wrote:
                >
                > Over the next several months I plan to bring up a whole 1802 system from elf-equivalent with toggle switches to a system with a full ASCII keyboard, video display, and 5-1/4" floppy disks.
                >
                > This will all be done using chips readily available in the 1975 to 1985 timeframe, and because it's being done mostly for its aesthetic value as part of a retro-robotic sculpture installation, I'll be adding lager & faster RAM & EPROM chips as would have been done during a project spanning that decade. It will serve as the self-hosted development system for the robot, which will use similar hardware.
                >
                > To compress how much time it takes me to recapitulate the natural evolution such a project would have gone through Back In The Day, I'll be cheating (sort of) by using known-working circuits and code from the files section as much as possible. With 20/20 hindsight I'll try to know exactly where I should go next at each stage.
                >
                > As a first approximation, I reckon I need to accomplish the following goals, more or less in the order proposed below:
                >
                >
                > 1) Build Baseline Elf (BE0) system with enough battery-backed RAM to be useful for further development;
                >
                > 2) Add a hex keypad & write a brain-dead monitor (BDM) program kept in RAM;
                >
                > 3) Using BDM, write & debug program to burn EPROMs;
                >
                > 4) Program a BDM EPROM and incorporate into system (now BE1);
                >
                > 5) Build a cheap-video-style interface for a small (5-1/2") B/W monitor;
                >
                > 6) Upgrade the BDM to use video monitor & ASCII keyboard for simple line editing;
                >
                > 7) Add Hex/ASCII dump facility to BDM
                >
                > 8) Upgrade BDM with single-line assembler/disassembler (no more hand assembly!);
                >
                > 9) Add cursor-based screen editing capability (now BE2);
                >
                > 10) Bootstrap EPROM-based Forth kernel;
                >
                > 11) Write floppy disk I/O primitives;
                >
                > 12) Write macro assembler in Forth;
                >
                > 13) Write disk-based screen editor in Forth (now BE3);
                >
                >
                > So, it is an ambitious project, but I've done most of the bits and pieces before, though for other processors. Have I missed anything important? Is there an easier or more efficient order folks might suggest? What further stages might I add beyond BE3?
                >
                > -Bobby
                >
              • Lee Hart
                ... Sounds pretty ambitious, but also a lot of fun! I think experience is a key ingredient. If you re doing it for the first time, there is a lot of
                Message 7 of 29 , Apr 24 8:42 PM
                  country_robot wrote:
                  > Over the next several months I plan to bring up a whole 1802 system
                  > from elf-equivalent with toggle switches to a system with a full
                  > ASCII keyboard, video display, and 5-1/4" floppy disks...
                  >
                  > it is an ambitious project, but I've done most of the bits and
                  > pieces before, though for other processors. Have I missed anything
                  > important?

                  Sounds pretty ambitious, but also a lot of fun!

                  I think experience is a key ingredient. If you're doing it for the first
                  time, there is a lot of "exploring" to do. A *lot* of time is spent
                  researching, finding parts, building, debugging, backtracking, etc. If
                  you're doing it a *second* time, and have full knowledge and information
                  from the first, things go much faster! We can help with this.

                  > 1) Build Baseline Elf (BE0) system with enough battery-backed RAM to
                  > be useful for further development;

                  This one is easy. The PE Elf articles are very clear and well debugged.
                  If you're in a hurry, my Membership Card is the same thing on a PC
                  board, with all the parts from one source.

                  > 2) Add a hex keypad & write a brain-dead monitor (BDM) program kept
                  > in RAM;

                  Here you can copy one of the classic Elfs (Quest or Netronics). The
                  Quest had a 32-byte "brain dead" monitor, for example.

                  > 3) Using BDM, write & debug program to burn EPROMs;

                  I can document that for you. The schematic to burn EPROMs on an Elf is
                  almost trivial. Basically, it just adds a 555 timer (to wait-state the
                  1802), and a transistor to switch the high programming voltage on/off.

                  > 4) Program a BDM EPROM and incorporate into system (now BE1);

                  An alternative approach is possible if you're using battery backed up
                  RAM. Simply use it to store your program as you are developing it.

                  > 5) Build a cheap-video-style interface for a small (5-1/2") B/W
                  > monitor;

                  The 1861 is the classic, but they are pretty limited and hard to get.
                  There are in fact a dozen other ways to get video that aren't that much
                  harder. For instance, use a serial terminal (PC running a terminal program).

                  > 6) Upgrade the BDM to use video monitor & ASCII keyboard for simple
                  > line editing;
                  >
                  > 7) Add Hex/ASCII dump facility to BDM
                  >
                  > 8) Upgrade BDM with single-line assembler/disassembler (no more hand
                  > assembly!);
                  >
                  > 9) Add cursor-based screen editing capability (now BE2);
                  >
                  > 10) Bootstrap EPROM-based Forth kernel;

                  If you're heading in the direction of FORTH, many of these steps will
                  happen automatically. Incrementally bring up FORTH (or my old 8TH, which
                  is half the size). Each FORTH "word" you write is a perfectly good
                  subroutine in its own right, callable for general purpose use. When you
                  have dozen of them, you have your brain-dead monitor. When you have a
                  couple dozen, you have a more sophisticated monitor. When you get to 40
                  or so, you have the entire FORTH kernal, and it can bring up the rest of
                  the FORTH system. It is trivial to write an editor or assembler in FORTH.

                  > 11) Write floppy disk I/O primitives;
                  > 12) Write macro assembler in Forth;
                  > 13) Write disk-based screen editor in Forth (now BE3);

                  I don't think I would bother with mechanical disks. The drives you find
                  today are likely to be old and buggy. Disks were also rare on 1802 systems.

                  Aim for memory cartridges instead, like the old video games. With a
                  modern chip inside, you have more memory than an 1802 could ever need
                  anyway!

                  For an operating system, look at ElfOS.

                  --
                  There ain't no rules around here. We're trying to accomplish something!
                  -- Thomas A. Edison
                  --
                  Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                • David W. Schultz
                  ... EEPROM clearly meets the requirement of parts available in the time frame of 1975 to 1985. I don t know when the 28C16 first appeared but I purchased my
                  Message 8 of 29 , Apr 25 4:27 PM
                    On 04/23/2013 07:38 PM, joshbensadon wrote:
                    > Hi David, I think he doesn't want to take any short cuts. I believe
                    > his goal is to experience the slow rocky road. I will admit he's got
                    > more guts than me!
                    >
                    > :)J
                    >

                    EEPROM clearly meets the requirement of parts available in the time
                    frame of 1975 to 1985. I don't know when the 28C16 first appeared but I
                    purchased my stock of 2KX8 52B13s around 1982.

                    --
                    David W. Schultz
                    http://home.earthlink.net/~david.schultz
                    Returned for Regrooving
                  • country_robot
                    ... I ... I first became aware of -- relatively -- inexpensive EEPROMs around 1983-1984, about the same time 28-pin CMOS static RAM chips became commonly
                    Message 9 of 29 , Apr 25 6:09 PM
                      --- In cosmacelf@yahoogroups.com, "David W. Schultz" wrote:
                      >
                      >
                      > EEPROM clearly meets the requirement of parts available in the time
                      > frame of 1975 to 1985. I don't know when the 28C16 first appeared but I
                      > purchased my stock of 2KX8 52B13s around 1982.
                      >
                      > --
                      > David W. Schultz

                      I first became aware of -- relatively -- inexpensive EEPROMs around 1983-1984, about the same time 28-pin CMOS static RAM chips became commonly available. I remember modifying a VIC-20 RAM cartridge for battery backup about that time; it was 8K which I bumped up to 16K by fully populating the board. I somehow never got around to adding write-protection gating for it, so I was forever having to reinitialise the darned thing, which was painful because I was using the Datasette for "mass" storage. A mate of mine had a Rabbit fast-loader cartridge, and I attempted -- and failed -- to relocate the code to operate from my RAM cartridge. I never did find out what the trouble was.

                      I guess I had bigger fish to fry, because my first floppy drive arrived around the same time, too. It was a hulking surplus single-side 8-inch drive I hoped to interface to a Xerox 820 board (also bought surplus, as a bare PCB) so I could run CP/M. The 820 board was about 14 inches square of pure awesomeness that really taught me how to solder. The boards were reputed to have been nickel-plated so they would store well, but that made 'em harder to solder. This was right before Just In Time Manufacturing methodologies made the notion of warehousing components hopelessly old fashioned. I suppose, given that the boards were surplus to begin with and Xerox went on the rocks in the computer market not long after, maybe JIT had something to it.

                      I was as astonished as I could be when the thing worked first time, and I let out a whoop when it displayed (and passed) its power-on self-test on an open-frame TTL monitor -- also surplus.

                      -Bobby
                    • Lee Hart
                      ... That sound about right. There were earlier serial EEPROMs in 8-pin packages, with tiny amounts of storage like 256 bits (not bytes). Intel s first bytewide
                      Message 10 of 29 , Apr 26 10:27 AM
                        country_robot wrote:
                        > I first became aware of -- relatively -- inexpensive EEPROMs around
                        > 1983-1984, about the same time 28-pin CMOS static RAM chips became
                        > commonly available.

                        That sound about right. There were earlier serial EEPROMs in 8-pin
                        packages, with tiny amounts of storage like 256 bits (not bytes).
                        Intel's first bytewide versions appeared in their 1983 data book. Others
                        came out with theirs around the same time.

                        The early ones were a bit screwy. They still needed a high voltage 21v
                        external supply for programming. You had to give it a write command and
                        then wait for 10 msec or so, during which time you could not do anything
                        else. Power consumption was quite high; like 100ma. If you use a real
                        1983 chip, you will have to deal with all these "features".

                        The more recent ones are far easier to use. So you may want to cheat,
                        and use one of them. :-)

                        > modifying a VIC-20 RAM cartridge...
                        > built a Xerox 820 board...

                        Great stuff! Brings back lots of memories.

                        --
                        The greatest pleasure in life is to create something that wasn't there
                        before. -- Roy Spence
                        --
                        Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                      • country_robot
                        ... quite high; like 100ma. If you use a real ... For the development environment I ll stick to period-available parts, though I m not going to try for correct
                        Message 11 of 29 , Apr 27 2:18 AM
                          --- In cosmacelf@yahoogroups.com, Lee Hart wrote:
                          >
                          > country_robot wrote:
                          > > ...
                          > > 1983-1984, about the same time 28-pin CMOS static RAM chips became
                          > > commonly available.
                          >
                          > ...
                          > The early ones were a bit screwy. ...
                          > Power consumption was quite high; like 100ma. If you use a real
                          > 1983 chip, you will have to deal with all these "features".
                          >
                          > The more recent ones are far easier to use. So you may want to cheat,
                          > and use one of them. :-)

                          For the development environment I'll stick to period-available parts, though I'm not going to try for correct date codes. I draw the line there -- unless it's a part that's big, with a highly visible date-code, and it will also be seen in the final installation. (Frankly, I can't think of any such parts, off the top of my head, but you never know.)

                          For the robot itself I am willing to be more flexible when using a part that would normally be hidden from view anyway, if it will save me a lot of grief. Low power, ease of programming/erasing/re-programming, low cost, good availability are all more important in the robot than the desktop.

                          Back to the desktop development environment, though. I'm seriously considering using Group Code Recording for the floppy drives, variants of which Apple and Commodore used for their drives. I'll quote from Wikipedia article:

                          "For the Apple II floppy drive, Steve Wozniak invented a floppy
                          controller which (along with the drive itself) imposed two
                          constraints:
                            • Between any two one bits, there may be a maximum of one zero bit.
                            • Each 8-bit byte must start with a one bit. The simplest
                          scheme to ensure compliance with these limits is to records an
                          extra "clock" transition before each data bit. This scheme is
                          called differential Manchester encoding or FM (Frequency
                          Modulation) or "4 and 4", and allows only 10 256-byte sectors
                          per track to be recorded on a single-density 5¼ floppy.

                          Wozniak realized that a more complex encoding scheme would allow
                          each 8-bit byte on disk to hold 5 bits of useful data rather
                          than 4 bits. This is because there are 34 bytes which have the
                          top bit set and no two zero bits in a row. This encoding scheme
                          became known as "5 and 3" encoding, and allowed 13 sectors per
                          track; it was used for Apple DOS 3.1, 3.2, and 3.2.1, as well as
                          for the earliest version of Apple CP/M. Later, the design of the
                          floppy drive controller was modified to allow a byte on disk to
                          contain up to one pair of zero bits in a row. This allowed each
                          8-bit byte to hold 6 bits of useful data, and allowed 16 sectors
                          per track. This scheme is known as "6 and 2", and was used on
                          Apple Pascal, Apple DOS 3.3 and ProDOS, and later on the 400K
                          and 800K 3½ disks on the Macintosh and Apple II. Apple did not
                          originally call this scheme "GCR", but the term was later
                          applied to it to distinguish it from IBM PC floppies which used
                          the MFM encoding scheme.

                          Independently, Commodore Business Machines created a Group Code
                          Recording scheme for their Commodore 2040 floppy disk drive
                          (launched in the spring of 1979). The relevant constraints on
                          the 2040 drive were that no more than two zero bits could occur
                          in a row, nor more than eight one bits in a row; the drive
                          imposed no special constraint on the first bit in a byte. This
                          allowed the use of a scheme similar to that used in 6250 tape
                          drives. Every 4 bits of data are translated into 5 bits on disk,
                          according to the following table:

                            Nibble  Code   Nibble Code
                                0000  01010   1000  01001
                                0001  01011   1001  11001
                                0010  10010   1010  11010
                                0011  10011   1011  11011
                                0100  01110   1100  01101
                                0101  01111   1101  11101
                                0110  10110   1110  11110
                                0111  10111   1111  10101

                          Note no code starts with two zero bits, nor ends with two zero
                          bits. This ensures that regardless of the input data, the
                          encoded data will never contain more than two zero bits in a
                          row. Also note that with this encoding not more than eight one
                          bits in a row are possible. Therefore Commodore used sequences
                          of ten or more one bits in a row as synchronization mark.

                          This more efficient GCR scheme, combined with an approach at
                          constant bit-density recording by gradually increasing the clock
                          rate (ZCAV) and storing more physical sectors on the outer
                          tracks than on the inner ones (ZBR), enabled Commodore to fit
                          170 KB on a standard single-sided single-density 5.25" floppy,
                          where Apple fit 140 KB (with 6 and 2 GCR) or 114 KB (with 5 and
                          3 GCR) and an FM-encoded floppy held only 88 KB.

                          Similar, the 5.25" floppy drives of the Victor 9000 aka Sirius
                          1, designed by Chuck Peddle, used a combination of 10-bit GCR
                          and constant bit-density recording by gradually decreasing a
                          drive's rotational speed for the outer tracks to achieve
                          formatted capacities of 606 KB (single sided) / 1188 KB
                          (double-sided) on 96 tpi media."

                          (Apologies for such a long quote; I wanted to be sure I got the details right)

                          The first two examples, Apple and Commodore, used the 6502, and information on their code & hardware is readily accessible. My question is: has anyone ever heard of someone trying a similar approach on a 1802 platform? The 1802 has the advantage of having DMA more or less built in, but I'm not sure if a direct translation of either Apple's or Commodore's techniques would be appropriate.

                          In any case, I've just bought an old Apple Disk II (no controller) for experiments. For the robot side, though, I've got something else up my sleeve: I've also bought a (purportedly) working Coleco Adam system, complete with printer. I reckon my fictional 1975-1985 hacker will have had no qualms at all about smooshing an Adam into a sort of FrankenElf.

                          I've been aching to muck around with the Datadrive tape system since I first heard about it. If nothing else, the tape drives will go on the robot, with the drive doors modified so the tapes can be clearly seen operating. It'd be great to use a few old Teac metal reel cassettes in the Datadrives; too bad collectors have driven up their cost beyond sanity on ebay.

                          I don't know what the Datadrives will be doing, exactly, but I'm sure I can come up with something, maybe canned robotics speech segments.

                          -Bobby
                        • joshbensadon
                          Hi Bobby, LoL @ FrankenELF. It s the Home Brew with Hindsight. ... Funny you should bring this up, I m currently working on a project using the Apple disk II.
                          Message 12 of 29 , Apr 27 9:03 AM
                            Hi Bobby,


                            LoL @ FrankenELF. It's the Home Brew with Hindsight.

                            > "For the Apple II floppy drive, Steve Wozniak invented a floppy
                            > controller

                            Funny you should bring this up, I'm currently working on a project using the Apple disk II. Yes, Woz's design of the controller was very creative, using a ROM to create a microcode program.

                            Chapter 9 of "Understanding the Apple II" by Jim Sather gives a very good and detailed technical description of the disk system.

                            > I've also bought a (purportedly) working Coleco Adam system,
                            > complete with printer.

                            Good thing you have the printer. The power supply for the Adam is in the printer. Beware, I have heard that the printer produces some nasty EMI pulses, keep it away from other magnetic media.

                            > I don't know what the Datadrives will be doing, exactly, but I'm sure I
                            > can come up with something, maybe canned robotics speech segments.

                            Let them do what they do best, collect data!

                            :)J
                          • David W. Schultz
                            ... Between rolling my own drive electronics and purchasing a Western Digital 2797 floppy disk controller I know which way I would go. For double density data
                            Message 13 of 29 , Apr 27 9:21 AM
                              On 04/27/2013 04:18 AM, country_robot wrote:
                              > Back to the desktop development environment, though. I'm seriously
                              > considering using Group Code Recording for the floppy drives, variants
                              > of which Apple and Commodore used for their drives. I'll quote from
                              > Wikipedia article:
                              >

                              Between rolling my own drive electronics and purchasing a Western
                              Digital 2797 floppy disk controller I know which way I would go.

                              For double density data the bit rate is 250Kb/sec so you have to handle
                              a byte of data every 32 us. On an 1802 with a 2MHz clock that is once
                              every four 2 cycle instructions.

                              The fastest way to check for data in software is to connect the DRQ pin
                              to an EF line and use a nice short one instruction loop to wait for it.
                              In order to do this you must use interrupts to get you out of the loop.
                              Otherwise connect that pin to another EF line and make it a 2
                              instruction loop.

                              Reading the data requires an input instruction plus a register increment
                              for two more instructions. Finish up with a branch to the beginning. (If
                              really pressed for time as opposed to space, you could unroll this part
                              of the loop.)

                              So that looks like a four instruction read loop as required. But because
                              the actual read rate can vary a bit it would be really nice to have some
                              margin.

                              dloop: B1 dloop
                              INP 1
                              IRX
                              BR dloop

                              Writing data is a three instruction loop because the OUT instruction
                              does the increment of R(X) for you.

                              --
                              David W. Schultz
                              http://home.earthlink.net/~david.schultz
                              Returned for Regrooving
                            • joshbensadon
                              Hi, A local electronics surplus store is having a contest to build a switch that turns on with a single click and off with a double click. No programmable
                              Message 14 of 29 , Apr 27 11:20 AM
                                Hi,

                                A local electronics surplus store is having a contest to build a switch that turns on with a single click and off with a double click. No programmable devices allowed, must all be done through regular logic.

                                It's open to the public. It sounds like a fun challenge, nothing big.

                                I plan to enter, although I don't enter to win, but for the fun.

                                Please see "Starwars Contest.pdf" in the files section.

                                Cheers,
                                Josh
                              • jdrose_8_bit
                                That seems like a lot of fun. Seems fairly simple too. Mr. Hart could design the winning circuit in his sleep. What is the first thing to do. Make the logic
                                Message 15 of 29 , Apr 27 1:43 PM
                                  That seems like a lot of fun.

                                  Seems fairly simple too. Mr. Hart could design the winning circuit in his sleep.

                                  What is the first thing to do. Make the logic truth table?

                                  Operation:

                                  Button Push. LED on.
                                  Button Push. No change.
                                  Button Push. LED off.



                                  Is there something like a 3 position 4017 counter?

                                  1, 2 pins connected to LED and the number 3 pin not.

                                  Each push button would cycle 1 step through the counter.
                                  1 LED, IC, pushbutton and dropping resistor.



                                  --- In cosmacelf@yahoogroups.com, "joshbensadon" <joshbensadon@...> wrote:
                                  >
                                  > Hi,
                                  >
                                  > A local electronics surplus store is having a contest to build a switch that turns on with a single click and off with a double click. No programmable devices allowed, must all be done through regular logic.
                                  >
                                  > It's open to the public. It sounds like a fun challenge, nothing big.
                                  >
                                  > I plan to enter, although I don't enter to win, but for the fun.
                                  >
                                  > Please see "Starwars Contest.pdf" in the files section.
                                  >
                                  > Cheers,
                                  > Josh
                                  >
                                • Lee Hart
                                  ... It does sound entertaining. Part of the fun is that they excluded the automatic knee-jerk first choice of every young engineer by excluding microcomputers.
                                  Message 16 of 29 , Apr 27 8:15 PM
                                    "joshbensadon" wrote:
                                    >> A local electronics surplus store is having a contest to build a
                                    >> switch that turns on with a single click and off with a double
                                    >> click. No programmable devices allowed, must all be done through
                                    >> regular logic.

                                    jdrose_8_bit wrote:
                                    > That seems like a lot of fun. Seems fairly simple too. Mr. Hart could
                                    > design the winning circuit in his sleep.

                                    It does sound entertaining. Part of the fun is that they excluded the
                                    automatic knee-jerk first choice of every young engineer by excluding
                                    microcomputers. It's a classic think-outside-the-box problem! :-)

                                    However, that still leaves you with dozens of ways to do it. I'll bet
                                    you could pick every possible technology (mechanical, pneumatic,
                                    hydraulic, electrical switch, relays, vacuum tubes, neon lamps,
                                    transistors, ICs, even microcomputers *without* a program) and solve the
                                    problem with every single one of them. Even a mad Rube Goldberg / Heath
                                    Robinson solution could do it.

                                    --
                                    Failure is only the opportunity to begin again more intelligently.
                                    -- Henry Ford
                                    --
                                    Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                                  • Charles Richmond
                                    If the double-click is like the double-click of a mouse, then the clicks have to occur within a certain time of each other to count. Otherwise it s just two
                                    Message 17 of 29 , Apr 27 10:48 PM
                                      If the "double-click" is like the double-click of a mouse, then the
                                      clicks have to occur within a certain time of each other to count.
                                      Otherwise it's just two single clicks.

                                      In most GUI systems (Windows, Mac OS, etc.) there is a place to set
                                      the double-click time limit. Now, for this special-purpose digital
                                      circuitry, I'd think that such an adjustment would *not* be
                                      necessary... but I think you still should set a time limit between
                                      clicks for the clicks to count as a double-click.


                                      On Apr 27, 2013, at 3:43 PM, jdrose_8_bit wrote:

                                      > That seems like a lot of fun.
                                      >
                                      > Seems fairly simple too. Mr. Hart could design the winning circuit
                                      > in his sleep.
                                      >
                                      > What is the first thing to do. Make the logic truth table?
                                      >
                                      > Operation:
                                      >
                                      > Button Push. LED on.
                                      > Button Push. No change.
                                      > Button Push. LED off.
                                      >
                                      > Is there something like a 3 position 4017 counter?
                                      >
                                      > 1, 2 pins connected to LED and the number 3 pin not.
                                      >
                                      > Each push button would cycle 1 step through the counter.
                                      > 1 LED, IC, pushbutton and dropping resistor.
                                      >
                                      > --- In cosmacelf@yahoogroups.com, "joshbensadon" <joshbensadon@...>
                                      > wrote:
                                      > >
                                      > > Hi,
                                      > >
                                      > > A local electronics surplus store is having a contest to build a
                                      > switch that turns on with a single click and off with a double
                                      > click. No programmable devices allowed, must all be done through
                                      > regular logic.
                                      > >
                                      > > It's open to the public. It sounds like a fun challenge, nothing
                                      > big.
                                      > >
                                      > > I plan to enter, although I don't enter to win, but for the fun.
                                      > >
                                      > > Please see "Starwars Contest.pdf" in the files section.
                                      > >
                                      > > Cheers,
                                      > > Josh
                                      > >
                                      >
                                      >
                                      > <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial;
                                      > margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid
                                      > #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-
                                      > weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads
                                      > { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-
                                      > mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-
                                      > decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; }
                                      > #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700;
                                      > font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad
                                      > { margin-bottom: 10px; padding: 0 0; } #actions { font-family:
                                      > Verdana; font-size: 11px; padding: 10px 0; } #activity { background-
                                      > color: #e0ecee; float: left; font-family: Verdana; font-size: 10px;
                                      > padding: 10px; } #activity span { font-weight: 700; } #activity
                                      > span:first-child { text-transform: uppercase; } #activity span a
                                      > { color: #5085b6; text-decoration: none; } #activity span span
                                      > { color: #ff7900; } #activity span .underline { text-decoration:
                                      > underline; } .attach { clear: both; display: table; font-family:
                                      > Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach
                                      > div a { text-decoration: none; } .attach img { border: none;
                                      > padding-right: 5px; } .attach label { display: block; margin-
                                      > bottom: 5px; } .attach label a { text-decoration: none; }
                                      > blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-
                                      > size: 13px; font-weight: 700; } .bold a { text-decoration: none; }
                                      > dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p
                                      > span { margin-right: 10px; font-family: Verdana; font-weight:
                                      > 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-
                                      > table div div a { text-decoration: none; } div.attach-table
                                      > { width: 400px; } div.file-title a, div.file-title a:active,
                                      > div.file-title a:hover, div.file-title a:visited { text-decoration:
                                      > none; } div.photo-title a, div.photo-title a:active, div.photo-
                                      > title a:hover, div.photo-title a:visited { text-decoration: none; }
                                      > div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family:
                                      > Verdana; font-size: 10px; font-weight: normal; } .green { color:
                                      > #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; }
                                      > #photos div { float: left; width: 72px; } #photos div div { border:
                                      > 1px solid #666666; height: 62px; overflow: hidden; width: 62px; }
                                      > #photos div label { color: #666666; font-size: 10px; overflow:
                                      > hidden; text-align: center; white-space: nowrap; width: 64px; }
                                      > #reco-category { font-size: 77%; } #reco-desc { font-size:
                                      > 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /*
                                      > border-right: 0px solid #000;*/ margin-right: 2px; padding-right:
                                      > 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial,
                                      > helvetica,clean, sans-serif; *font-size: small; *font: x-small; }
                                      > #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg
                                      > select, input, textarea { font: 99% Arial, Helvetica, clean, sans-
                                      > serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:
                                      > 100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo
                                      > { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; }
                                      > #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; }
                                      > #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-
                                      > reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a
                                      > { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li
                                      > { font-size: 77%; list-style-type: square; padding: 6px 0; } #ygrp-
                                      > sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-
                                      > family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text
                                      > tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-
                                      > right: none !important; } -->

                                      --
                                      +----------------------------------------+
                                      |.....Charles and Francis Richmond.......|
                                      |........................................|
                                      |..plano dot net at aquaporin4 dot com...|
                                      +----------------------------------------+
                                    • William Donnelly
                                      Yes. Otherwise the simplest solution is a 3-throw 3-pole pushbutton switch. That would actually pass their rules (I think), but isn t an ideal solution, and
                                      Message 18 of 29 , Apr 27 11:05 PM
                                        Yes.

                                        Otherwise the simplest solution is a 3-throw 3-pole pushbutton switch.

                                        That would actually pass their rules (I think), but isn't an ideal solution, and
                                        kind of goes against the intrinsic nature of the contest and its ultimate goal. (?)

                                        You could have a tiny rheostat that can be accessed with a tiny flat-blade screwdriver
                                        to set the double-click timeout.

                                        – Bill
                                         
                                        On 4/27/2013 10:48 PM, Charles Richmond wrote:
                                        If the "double-click" is like the double-click of a mouse, then the  
                                        clicks have to occur within a certain time of each other to count.   
                                        Otherwise it's just two single clicks.
                                        
                                        In most GUI systems (Windows, Mac OS, etc.) there is a place to set  
                                        the double-click time limit.  Now, for this special-purpose digital  
                                        circuitry, I'd think that such an adjustment would *not* be  
                                        necessary... but I think you still should set a time limit between  
                                        clicks for the clicks to count as a double-click.
                                        
                                        

                                      • Andrew Wasson
                                        Yes, I was thinking that as well because if our young Jedi can bump the switch once in combat, he could most certainly bump it twice. I thought that rather
                                        Message 19 of 29 , Apr 27 11:45 PM
                                          Yes, I was thinking that as well because if our young Jedi can bump the switch once in combat, he could most certainly bump it twice. I thought that rather than specifically time the double click, I would discard the first off click if the second click didn't occur after a reasonable amount of time. Same sort of idea.

                                          Andrew

                                          On 2013-04-27, at 10:48 PM, Charles Richmond <old_computers@...> wrote:

                                          > If the "double-click" is like the double-click of a mouse, then the
                                          > clicks have to occur within a certain time of each other to count.
                                          > Otherwise it's just two single clicks.
                                          >
                                          > In most GUI systems (Windows, Mac OS, etc.) there is a place to set
                                          > the double-click time limit. Now, for this special-purpose digital
                                          > circuitry, I'd think that such an adjustment would *not* be
                                          > necessary... but I think you still should set a time limit between
                                          > clicks for the clicks to count as a double-click.
                                          >
                                          >
                                          > On Apr 27, 2013, at 3:43 PM, jdrose_8_bit wrote:
                                          >
                                          >> That seems like a lot of fun.
                                          >>
                                          >> Seems fairly simple too. Mr. Hart could design the winning circuit
                                          >> in his sleep.
                                          >>
                                          >> What is the first thing to do. Make the logic truth table?
                                          >>
                                          >> Operation:
                                          >>
                                          >> Button Push. LED on.
                                          >> Button Push. No change.
                                          >> Button Push. LED off.
                                          >>
                                          >> Is there something like a 3 position 4017 counter?
                                          >>
                                          >> 1, 2 pins connected to LED and the number 3 pin not.
                                          >>
                                          >> Each push button would cycle 1 step through the counter.
                                          >> 1 LED, IC, pushbutton and dropping resistor.
                                          >>
                                          >> --- In cosmacelf@yahoogroups.com, "joshbensadon" <joshbensadon@...>
                                          >> wrote:
                                          >>>
                                          >>> Hi,
                                          >>>
                                          >>> A local electronics surplus store is having a contest to build a
                                          >> switch that turns on with a single click and off with a double
                                          >> click. No programmable devices allowed, must all be done through
                                          >> regular logic.
                                          >>>
                                          >>> It's open to the public. It sounds like a fun challenge, nothing
                                          >> big.
                                          >>>
                                          >>> I plan to enter, although I don't enter to win, but for the fun.
                                          >>>
                                          >>> Please see "Starwars Contest.pdf" in the files section.
                                          >>>
                                          >>> Cheers,
                                          >>> Josh
                                          >>>
                                          >>
                                          >>
                                          >> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial;
                                          >> margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid
                                          >> #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-
                                          >> weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads
                                          >> { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-
                                          >> mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-
                                          >> decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; }
                                          >> #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700;
                                          >> font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad
                                          >> { margin-bottom: 10px; padding: 0 0; } #actions { font-family:
                                          >> Verdana; font-size: 11px; padding: 10px 0; } #activity { background-
                                          >> color: #e0ecee; float: left; font-family: Verdana; font-size: 10px;
                                          >> padding: 10px; } #activity span { font-weight: 700; } #activity
                                          >> span:first-child { text-transform: uppercase; } #activity span a
                                          >> { color: #5085b6; text-decoration: none; } #activity span span
                                          >> { color: #ff7900; } #activity span .underline { text-decoration:
                                          >> underline; } .attach { clear: both; display: table; font-family:
                                          >> Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach
                                          >> div a { text-decoration: none; } .attach img { border: none;
                                          >> padding-right: 5px; } .attach label { display: block; margin-
                                          >> bottom: 5px; } .attach label a { text-decoration: none; }
                                          >> blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-
                                          >> size: 13px; font-weight: 700; } .bold a { text-decoration: none; }
                                          >> dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p
                                          >> span { margin-right: 10px; font-family: Verdana; font-weight:
                                          >> 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-
                                          >> table div div a { text-decoration: none; } div.attach-table
                                          >> { width: 400px; } div.file-title a, div.file-title a:active,
                                          >> div.file-title a:hover, div.file-title a:visited { text-decoration:
                                          >> none; } div.photo-title a, div.photo-title a:active, div.photo-
                                          >> title a:hover, div.photo-title a:visited { text-decoration: none; }
                                          >> div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family:
                                          >> Verdana; font-size: 10px; font-weight: normal; } .green { color:
                                          >> #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; }
                                          >> #photos div { float: left; width: 72px; } #photos div div { border:
                                          >> 1px solid #666666; height: 62px; overflow: hidden; width: 62px; }
                                          >> #photos div label { color: #666666; font-size: 10px; overflow:
                                          >> hidden; text-align: center; white-space: nowrap; width: 64px; }
                                          >> #reco-category { font-size: 77%; } #reco-desc { font-size:
                                          >> 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /*
                                          >> border-right: 0px solid #000;*/ margin-right: 2px; padding-right:
                                          >> 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial,
                                          >> helvetica,clean, sans-serif; *font-size: small; *font: x-small; }
                                          >> #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg
                                          >> select, input, textarea { font: 99% Arial, Helvetica, clean, sans-
                                          >> serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:
                                          >> 100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo
                                          >> { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; }
                                          >> #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; }
                                          >> #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-
                                          >> reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a
                                          >> { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li
                                          >> { font-size: 77%; list-style-type: square; padding: 6px 0; } #ygrp-
                                          >> sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-
                                          >> family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text
                                          >> tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-
                                          >> right: none !important; } -->
                                          >
                                          > --
                                          > +----------------------------------------+
                                          > |.....Charles and Francis Richmond.......|
                                          > |........................................|
                                          > |..plano dot net at aquaporin4 dot com...|
                                          > +----------------------------------------+
                                          >
                                          >
                                          >
                                          >
                                          >
                                          >
                                          > ------------------------------------
                                          >
                                          > ========================================================
                                          > Visit the COSMAC ELF website at http://www.cosmacelf.comYahoo! Groups Links
                                          >
                                          >
                                          >
                                        • Kevin
                                          Honestly, this sounds like a job for an analog design.
                                          Message 20 of 29 , Apr 28 9:31 AM
                                            Honestly, this sounds like a job for an analog design.


                                            --- In cosmacelf@yahoogroups.com, "joshbensadon" <joshbensadon@...> wrote:
                                            >
                                            > Hi,
                                            >
                                            > A local electronics surplus store is having a contest to build a switch that turns on with a single click and off with a double click. No programmable devices allowed, must all be done through regular logic.
                                            >
                                            > It's open to the public. It sounds like a fun challenge, nothing big.
                                            >
                                            > I plan to enter, although I don't enter to win, but for the fun.
                                            >
                                            > Please see "Starwars Contest.pdf" in the files section.
                                            >
                                            > Cheers,
                                            > Josh
                                            >
                                          • Lee Hart
                                            ... Let s see... *simplest* solution... Obviously, you can build an alternate-action pushbutton. Push once, it s on. Push again, it s off. Use a mechanism like
                                            Message 21 of 29 , Apr 28 9:39 AM
                                              William Donnelly wrote:
                                              > the simplest solution is a 3-throw 3-pole pushbutton switch.

                                              Let's see... *simplest* solution...

                                              Obviously, you can build an alternate-action pushbutton. Push once, it's
                                              on. Push again, it's off. Use a mechanism like the clicker in a
                                              ballpoint pen, but modify it so it takes 3 clicks to make a cycle. The
                                              cycles would be off-on-on, so it only takes 1 click to turn it on, but 2
                                              clicks to turn off.

                                              If you want a simple electrical solution, build a voltage doubler with
                                              two diodes and two capacitors. The pushbutton connects either 0v or 5v
                                              to the input. Have some sensing circuit that needs more than 5v to turn
                                              on. Pick a load resistor to set the RC time constant for how closely
                                              together the two button pushes have to be.

                                              The sensing circuit can be almost anything; latching relay coil, vacuum
                                              tube, transistor, IC, etc.
                                              --
                                              The principal defect in a storage battery is its modesty. It does not
                                              spark, creak, groan, nor slow down under overload. It does not rotate.
                                              It works where it is, and will silently work up to the point of
                                              destruction without making any audible or visible signs of distress.
                                              -- Electrical Review, 1902
                                              --
                                              Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                                            • jdrose_8_bit
                                              ... That is an interesting idea. It violates the letter of the contest but not the spirit of the contest. Seems like the 1802 would be ideally suited for the
                                              Message 22 of 29 , Apr 28 9:53 AM
                                                --- In cosmacelf@yahoogroups.com, Lee Hart <leeahart@...> wrote:

                                                >
                                                > Part of the fun is that they excluded the
                                                > automatic knee-jerk first choice of every young engineer by excluding
                                                > microcomputers. It's a classic think-outside-the-box problem! :-)
                                                >
                                                > However, that still leaves you with dozens of ways to do it... even microcomputers *without* a program)...
                                                >

                                                That is an interesting idea. It violates the letter of the contest but not the spirit of the contest.

                                                Seems like the 1802 would be ideally suited for the exercise. No program, no RAM, only the 1802 and external components.


                                                --- In cosmacelf@yahoogroups.com, William Donnelly <william@...> wrote:
                                                >
                                                > Yes.
                                                >
                                                > Otherwise the simplest solution is a 3-throw 3-pole pushbutton switch.
                                                >
                                                > That would actually pass their rules (I think)
                                                >

                                                I think so.


                                                --- In cosmacelf@yahoogroups.com, Andrew Wasson <awasson@...> wrote:
                                                >
                                                > Yes, I was thinking that as well because if our young Jedi can bump the switch once in combat, he could most certainly bump it twice. I thought that rather than specifically time the double click, I would discard the first off click if the second click didn't occur after a reasonable amount of time. Same sort of idea.
                                                >


                                                Indeed.

                                                After a relatively small lapse of time, the second setting essentially becomes the defacto ON setting from the perspective of the fencer.

                                                I think it is a very serious oversight by the contest designers to not include that function in the circuit.
                                              • jdrose_8_bit
                                                ... OK. The author of the contest does write but to turn it off, you have to push the button twice in succession. They do not define time limits of
                                                Message 23 of 29 , Apr 28 10:06 AM
                                                  --- In cosmacelf@yahoogroups.com, "jdrose_8_bit" <rarecoinbuyer@...> wrote:

                                                  > --- In cosmacelf@yahoogroups.com, Andrew Wasson <awasson@> wrote:
                                                  > >
                                                  > > Yes, I was thinking that as well because if our young Jedi can bump the switch once in combat, he could most certainly bump it twice.
                                                  >> I thought that rather than specifically time the double click, I would discard the first off click if the second click didn't occur after a reasonable amount of time.
                                                  >>Same sort of idea.
                                                  >
                                                  >
                                                  > I think it is a very serious oversight by the contest designers to not include that function in the circuit.
                                                  >

                                                  OK. The author of the contest does write "but to turn it off, you have to push the button twice in succession."

                                                  They do not define time limits of "succession" but I guess it is implied that the second push must happen in a very short time.
                                                • Lee Hart
                                                  ... For example, hard-wire the data bus for a Long Branch instruction. The pushbutton single-steps the 1802. The 1802 will do a Fetch, Execute, Execute, Fetch,
                                                  Message 24 of 29 , Apr 28 11:12 AM
                                                    >> However, that still leaves you with dozens of ways to do it... even
                                                    >> microcomputers *without* a program)...

                                                    jdrose_8_bit wrote:
                                                    > That is an interesting idea. It violates the letter of the contest
                                                    > but not the spirit of the contest.
                                                    >
                                                    > Seems like the 1802 would be ideally suited for the exercise. No
                                                    > program, no RAM, only the 1802 and external components.

                                                    For example, hard-wire the data bus for a Long Branch instruction. The
                                                    pushbutton single-steps the 1802. The 1802 will do a Fetch, Execute,
                                                    Execute, Fetch, Execute, Execute... machine cycle sequence. So State
                                                    Code output SC0 will be low, high, high, low, high high... Define
                                                    low=off, and high=on and you have a solution. :-)

                                                    --
                                                    The most dangerous enemy of a better solution is an existing one that
                                                    is just good enough. -- Eric S. Raymond
                                                    --
                                                    Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                                                  • Kevin
                                                    But then you would have a program.
                                                    Message 25 of 29 , Apr 28 11:16 AM
                                                      But then you would have a program.

                                                      --- In cosmacelf@yahoogroups.com, Lee Hart <leeahart@...> wrote:
                                                      >
                                                      > For example, hard-wire the data bus for a Long Branch instruction.
                                                    • jdrose_8_bit
                                                      That is an interesting observation. Is the hard wiring basically a ROM program made of discrete components? Or is it a hardware extension of the logic gates
                                                      Message 26 of 29 , Apr 28 11:39 AM
                                                        That is an interesting observation.

                                                        Is the hard wiring basically a ROM program made of discrete components? Or is it a hardware extension of the logic gates built into the microprocessor?


                                                        --- In cosmacelf@yahoogroups.com, "Kevin" <kriceslo@...> wrote:
                                                        >
                                                        > But then you would have a program.
                                                        >
                                                        > --- In cosmacelf@yahoogroups.com, Lee Hart <leeahart@> wrote:
                                                        > >
                                                        > > For example, hard-wire the data bus for a Long Branch instruction.
                                                        >
                                                      • Kevin
                                                        It s both.
                                                        Message 27 of 29 , Apr 28 12:06 PM
                                                          It's both.

                                                          --- In cosmacelf@yahoogroups.com, "jdrose_8_bit" <rarecoinbuyer@...> wrote:
                                                          >
                                                          > That is an interesting observation.
                                                          >
                                                          > Is the hard wiring basically a ROM program made of discrete components? Or is it a hardware extension of the logic gates built into the microprocessor?
                                                          >
                                                          >
                                                          > --- In cosmacelf@yahoogroups.com, "Kevin" <kriceslo@> wrote:
                                                          > >
                                                          > > But then you would have a program.
                                                          > >
                                                          > > --- In cosmacelf@yahoogroups.com, Lee Hart <leeahart@> wrote:
                                                          > > >
                                                          > > > For example, hard-wire the data bus for a Long Branch instruction.
                                                          > >
                                                          >
                                                        • Lee Hart
                                                          ... Yeah, it skirts the edge of the rules. I could see a judge deciding it either way. It s either a 1-instruction program , or just a way to connect logic
                                                          Message 28 of 29 , Apr 28 1:27 PM
                                                            Lee Hart wrote:
                                                            >>> For example, hard-wire the data bus for a Long Branch instruction.

                                                            "Kevin" wrote:
                                                            >> But then you would have a program.

                                                            jdrose_8_bit wrote:
                                                            > Is the hard wiring basically a ROM program made of discrete components? Or is it a hardware extension of the logic gates built into the microprocessor?

                                                            Yeah, it skirts the edge of the rules. I could see a judge deciding it
                                                            either way. It's either a 1-instruction "program", or just a way to
                                                            connect logic gates and flip-flops to achieve the desired result. :-)

                                                            --
                                                            The trouble ain't that there's too many fools, but that lightning ain't
                                                            distributed right. -- Mark Twain
                                                            --
                                                            Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                                                          • Lee Hart
                                                            ... Actually, I think the way to go is to use the 1802 s DMA! -- You never change things by fighting the existing reality. To change something, build a new
                                                            Message 29 of 29 , Apr 28 1:43 PM
                                                              On 4/27/2013 11:21 AM, David W. Schultz wrote:
                                                              > Between rolling my own drive electronics and purchasing a Western
                                                              > Digital 2797 floppy disk controller I know which way I would go.
                                                              >
                                                              > For double density data the bit rate is 250Kb/sec so you have to handle
                                                              > a byte of data every 32 us. On an 1802 with a 2MHz clock that is once
                                                              > every four 2 cycle instructions.
                                                              >
                                                              > The fastest way to check for data in software is to connect the DRQ pin
                                                              > to an EF line and use a nice short one instruction loop to wait for it.

                                                              Actually, I think the way to go is to use the 1802's DMA!
                                                              --
                                                              You never change things by fighting the existing reality. To change
                                                              something, build a new model that makes the existing model obsolete. --
                                                              Buckminster Fuller
                                                              --
                                                              Lee A. Hart, http://www.sunrise-ev.com/LeesEVs.htm
                                                            Your message has been successfully submitted and would be delivered to recipients shortly.