Tuesday, November 20, 2018

Something old for something newish

Every so often I build using 8085 or a member of the Z80 family and I tend to run CP/M usually V2.2 on it as a OS.  This is the reason why and it still hold true to this day.

Looking at Grant Searle's  and Lee Hart's pages made me think of this.

http://searle.hostei.com/grant/cpm/index.html

http://www.sunrise-ev.com/z80.htm


Why CP/M?

For most OS and hardware the classification is vendor specific or not. Examples of vendor specific is Apple 6502 based systems programs didn't run on Commodore systems without significant modification while the CPU was identical the surrounding OS support and hardware tended to differ sometimes greatly.  In the Z80 would a good example was TRS80, it ran an OS unique to that machine and only on that machine or possibly a handmade clone with copies on the Roms.  There is not a thing wrong with this is you want to clone a system.

CP/M however was totally different because it ran on many machines based on the heirs of 8080, or put differently if a program runs under CP/M-80 on an 8080 then some machine with a Z80 and CP/M installed will run it and likely faster.  CP/M didn't care if the CPU was 8080, 8085, Z80, Z180, Z280 or even NSC800 as they at the base binary level of 8080 were the same.   What CP/M did was make the hardware look the same by abstraction in a new for the time section of code called the BIOS. Different machines could and likely had different BIOS to deal with NEC or WD floppy controller or maybe even a built from TTL controller and also same for the different serial devices (SIO, 8251, USART, ACE, 6850). 

This standardization allow program portability for things like all manner of programming languages, Multiplan, Dbase, Wordstar, as well as programming editors, debuggers, and both cross and native assemblers to run on nearly any CP/M system that had reasonable ram usually 48K, enough storage and for some IO(terminal) that was compatible (mostly editors).  This allowed a great deal of software to be made and distributed much of it free as well as commercial.

So, CP/M as modules!

CP/M is basically three modules, CCP (command control processor) or what we call the user interface to the system.  The program interface is the BDOS Basic Disk Operating system, its the set of APIs to read and write files print to the printer and handle basic console IO.  The last already mentioned is the BIOS, it takes a standardized interface and turns it into real IO.

The only one written by the developer is the BIOS for a specific machine.  The whole of the machine specific IO and storage system is defined here.

The BDOS is a 3.5K chunk of code that was early on a black box with a matching relocator if needed now the source is easily available and can be assembled for any address.  This is largely the same for the CCP, early on it was a 2K lump with a relocator.  With time it was also rewritten from scratch as ZCPR or CCPR as an improved user interface.

How the blocks are used.

The system used to be loaded from non file system parts of the disk known as system tracks.  The boot ROM would load about 2-4k (the BIOS) to high memory and then jump to the ColdBoot where the BIOS code would set up devices and also initialize page 0 (the first 256 bytes of ram) with vectors as needed.  After doing that the system does a WarmBoot where the rest of the system is loaded including the BDOS and CCP. CP/M assume the CCP is overlaid by applications and can even accommodate overlaying the BDOS and will reload both after a warm boot.  That is done to allow most all of the ram to be available to applications.

I'll stop here and point out that in the early days System tracks stored this that image but with larger Eproms it was possible to copy from Eprom to memory that being far faster than floppy or disk in general and for small floppies made about 8k of space available for storage.  The other assumption is CP/M only cares that storage is block addressable and not if its disk, tape, Ram, or Flash.  Another feature is the loaded version can even load a improved version so an improved CP/M can be a file that can be edited and assembled for test on the system with the ability to recover.


Functions:

CCP allow doing basic operations like directory, loading, saving, erasing, or executing files.  DOS largely used the same command line interface and the history of that form of command reaches back to PDP-11 RT-11.

The BDOS allow for functions like open a file, read a file test for file presence and also allocating space to a file.  Other functions are get a char from terminal putting one to the terminal and testing for a char waiting among others (about 40 in all).

The BIOS can be used directly if one needs to write to a block of disk that is not part of the file system or even edit the file system directly.  For that there are set Track, Set sector, Read and write a block (usually logical sector).  Also the serial and printer ports are handled at the IN and OUT level.  Its features is it was written to a standard specification as needed by the BDOS and it also made for likely the most widely varied code that all performed a standardized set of tasks.

The history of CP/M is that it begat PC-DOS aka MSdos which for the early years even supported the same FCB structure for files.  Its legacy is in the idea of a BIOS to make disparate hardware look similar if not the same. to the applications.  But its greater impact was a software industry be it freeware, shareware or commercial paid code that could be used on a wider population of machines no matter who made it.  That level of functionality and advancing performance or disks and CPU in the z80 space kept it on the map till the late 80s and in some case mid 90s.  It remained so because the cost of computers is not only hardware though it was significant.   For once who made the machine did not determine if you were locked to a software vendor and code that was good on an old machine will still remain useful on newer hardware.



Tuesday, September 11, 2018

C&C

Between Computers and Communications radio has become mixing both.

Things like uBitx and QSX are one group and the wild Atlas210X mod another.

The Atlas210X  is a fun project taking a second and more messed up 210X and making a modern style radio of it.  The unit has no power amp so making one up at the 10W QRPlevel is part of that.  The other is the VFO is really bad drifty and has been given the golden screw driver treatment. Lastly it was a parts dog.  So cleaning up problems fixing the filters were the start.  Atlas used a lot of molded mud caps (X5R) which have terrible Q.  Now the item is Arduino display and si5351 NCO are being added.

This is the fun part.  Before it was a basic 5 band radio without much in the way of modern features.  Using the arduino and all to replace the VFO we can do things like A/B VFO, Rit, Split and even sideband flip along with stable VFO with 1hz resolution.    It will be a fun QRP radio suitable for battery operation.

Update when done maybe even a picture.

Monday, April 9, 2018

Radio, various

As a radio amateur I build a lot of my own gear.  I lean toward small or specific capability
usually SSB and QRP power levels.  So far  have many for every band from 80M though 2M.

QRP SSB is fun.

Of all the one I've designed my 6M Crunchproof was a rig built for 6M contesting
and harsh (RFI) environments.  Features A 36mhz image rejecting DC IF  for single
conversion and matching image reject transmitter.  It incorporates feature needed to
allow working in the same band with a high power stations close by physically
and in frequency.


Also I like to build kits and a few favorites are:

WM20, a 3W SSB for 20M my second 20M rig, small and compact.

KNQ7A a Chinese kitted design for a simple 40M radio that copies many before it.

1W,  a kitsandparts design, the rare in my collection as its 40M CW only but a really nice radio.
 I packaged it on a wood trinket box and has enough room for a battery , paddle, and antenna
making a compact portable rig.

Slop Bucket 20, fun name for SSB back in the 60s.  A very nice 7W SSB on a very small board.
It to goes in a box to be a complet station in a small box for portable use when I care to.


Any of mine published?

No, like many of the one off designs a schematic even if available would be at best only part of the story.  That radio was a one off as a solution to a problem and was a mechanical tour de force for shielding.  There are 8 boxes and some have further shielding.  Like many of the HB radios the though of publish was not in mind and as a result if many pages in the lab notebook and no pictures.  Documenting at this point would take longer than building and that does not take into account more than 12 years of parts going to unobtainium.  Like many
designs Layout and construction is everything. Do it badly and a good design is
crap.

Maybe next time.

Saturday, January 23, 2016

The list....

When I said I had computer hardware to play with I was not kidding.  I also have docs for most if not all.


Collection of operational hardware:

PDP-8 based machines:
====================
PDP-8f 20kw core (8K and 16K boards).
2 Decmate-IIIs OS/278 and WPS
Intersil sampler (6100 chipset)

PDP-11 based machines:
=====================
1 LSI-11/03 rx02 controller, no drives.
2 PDP11/23 BA11S boxes, various hardware configs
1 MicroPDP11 BA23 11/23B, RQDX3, RX50 RD52..
1 PDP11/73 RACK SYSTEM (RX02, RD52, RX33, RL02).
BA11VA with 11/23 +tu58
Software  Rt-11, XXDP-11, and unix V6

VAX based machines:
===================
Microvax-II (ba23 based)
Microvax-II/GPX (Ba123 based, SCSI disks)
3 Microvax2000 all with RD53 or 54 drives, one with ultrix
2 Microvax3100/m76/gpx
3 Microvax3100/VAXserver (not M10e)
software  VMSv5.4-4,V5.54, V7.2, Ultrix 4.2, Pathworks...


CP/M OS oriented machines:
======================
S100 subgroup
-------------
Altair8800(pre-A) Built Jan 1975, SN200!
Altair 8800B-T complete, factory built with Tarbel Disk add on 1978
2 Northstar Horizon, CP/M, NS*dos, hard disk (one I built in '77)
CCS-2200 CP/M2.2
Compupro full boat with 8085/8088 card and MPX-1 (CCPM)
Netronics Explorer 8085  w/VDM1


CP/M SBC/bounded systems:
--------------------
AmproLB+ CMOS modded and running with 45mb 3.5" SCSI
SB180 with SCSI adaptor, adptec scsi bridge and 20mb CPM2.2
3 Visual technolgies 1050, CPM-3 two with outboard 10mb SCSI disk
Kaypro 4/84 w/handyman, ramdisk, and Advent turborom+personality card
Kaypro II complete
2 Vt180 complete
2 Vt180 CP/M board built up as standalone one modded for 6mhz
1 Vt185 That's a Vt125 + Vt180.
Osborne 1
3 Epson PX-8 one with 120k ram wedge and 300bd modem wedge
  and one 3.5"disk unit.

Other buses (not s100):
-----------------------
NS* Advantage (hard disk)
2 Hurkon Z80 Multibus system CP/M2.2


MISC Single board computers and systems:
=======================================
Motorola 6800D1 SBC with TBX
National SC/MP board
National Nibble basic [sc/mpII] SBC
NEC TK80A 8080a SBC with protocard
KIM-1
BCC180 Z180 controller
5  8085 SBC 4krom, 2kram, 3 8251 serial (modified DEC Vt100 printer buffer)
Cosmac ELF orgional (built back in '77)
Cosmac ELF QUEST V2.1 board (built back in '78)
COSMAC ELF (TMSI TM100) expanded elf
EELF (Spare Time Gizmos Embedded elf,diskio, gpio, video)
ELF2000 board and prom set.
DEC ADVICE, VAX chipset on a board for in circuit emulation.
IMSAI IMP48 (8035 based SBC with interface IO) [rare]
Prompt-48 804x development tool/system
NEC EVAkit-48 8048/9 development system/board
NEC TK-80 8080 board
3 TI99A (one with disks and SW)and games for them
Technico superstarter system with assembler roms (TI9900)
Tandy M100 portable
Commodore 128, I keep forgetting that one..

Terminals:
=====================
H19 terminal
Vt100/125  terminal
Vt1200     Xterminal
3 VT320    Terminal White, Amber, and Green screen versions!
VT340      Color Terminal
2 VK170   A VT52 on a dual width card

PC
=================================
PC stuff of interest, generally I dont bother but these are interesting.
 Intel Inboard386(upgrades an XT to 386/16 with 1.2mb ram)
 Trackstar 128 (dual 6502 for ISA PC improvement)
 AST sixpack pro
 Tandy 1000HX (V20 CPU)  unique as its keyboard and cpu in one box.
 Dell 486DX/66 pizza boxes  Handy for those times ISA bus is required.

Elfish fun

I have a lot of old systems. By that I mean not a PC as we now know them or anything
running X86 and wide ranging. 

Every so often I pull out one of my Elves and play.   The smaller ones are a drag 
on old hands that have grown to hate toggle switches.  I have very elaborate ones 
like my Embedded ELF2K that run the sophisticated ELFOS from a CF disk.
But for playing that's a handful.  So an intermediate ELF is in the works.

An intermediate elf is a basic ELF as published in Poptronics (Popular Electronics)
in 1976 with extensions.  The ELF was a 256bytes or ram with toggle switches 
minimal machine with a two digit LED display.  A very minimal machine 13 ICs in 
all one one above the SSI (small scale integration level) and that being the 1802 
Cosmac cpu.  very basic but enough to teach programming and a few fun software 
games.  The CPU was easy to interface to and tended to invite people to extend
into the larger realm.  Those that have played with the 1802 know this.

This design is an extended ELF. Keep the switches, IO and display and add 
address display (16bit) and latch the upper 16 bits.  With 64K of address space 
the divide is lower 32K is a 61256 ram (32K) and the upper will have UT4 monitor 
rom as I have one at 8000H (upper 32K) and ram 6116 at F800H because its 
handy to have some ram for a scratch pad..   At address E000 to EFFFh we 
can put a few 2816 EEPROMS for storing the developed OS. Terminal
 (serial) IO will use Q and EF 1.    

FYI the standard ELF (PE and QUEST) the N2 line is used for the data out
to the two hex displays (n=4 or higher) and switches in. This is important 
as it reserves some IO.  The alternate is to fully decode the IO.  its only one chip.

To address a large parallel flash (1MB) I need 20 bits for address and data 
in and data out.  The use of IO lines N0 and N1 will address the IO. This is built 
as both lines will decode as 2 ports where N0=1 and N1=0  is input or output 
of data and N (in or 69 and out 61) and port N0=0 and N1=1 is a address out
(62 instruction) and to get the needed address byte I output 3 bytes 
and the hard wave stores then in sequential order.  The hardware are 6 
4 bit binary upcounters (74C161).  That provides up to 24 bits or address 
(enough for a 16MB flash ram).  The counters count up after every read or 
write to data port (61 or 69) so that every read or write done points to the 
the byte to be read or written. The devices for the address are wired 
as a 3 byte shift register where three writes to the port 2 are sequenced into the
counter and two latches.  Typical output would be 3 bytes of 12H, 34H, 00. 
The result is the high latch has 12H, the mid latch has 34H and the two 4bit 
counters have 00.  Very simple.  Simpler than CF or SD though maybe later.

Right now I'm playing with an idea for a simple OS that uses a large (1M to 4MB)
parallel flash memory as storage but far less elaborate that Mikes ELFOS.  The 
idea is a simple "bag and tag" with Load, Store, Jump. Create, Delete, List, and 
terminal IO.  the idea is minimum space for system code and using IO to address
the flash memory.

FYI: "bag and tag" for those not familiar with old and crude OSs like NorthStar 
DOS is something like this.

A storage BLOCK is a convenient binary chunk like 256 bytes.
A storage device has BLOCKs logically numbered 0 though NNNN.
For this its assumed any physical device large enough to store 
the desired files.  For example a 1MB flash ram would store 4096
256byte BLOCKs of data and we would logically address them as 
0 to 4095.

Each file directory entry uses 16 bytes (binary round number).

So with this there are 16 possible entries for a BLOCK.  IF we want to 
store more than 16 files (space permitting) then we can assign several 
blocks as a directory.

filename, storage_starting_block, size_of_file, IN_RAM_address, Spare, Type_of_File,

File name is 8 bytes         Example FILENAME
storage_starting_block     two bytes that are the starting BLOCK in storage
Size_of_File                      number of BLOCKs needed to hold the entire file.
IN_RAM_address             An optional address of where the OS should put the file in ram.
SPARE                            might contain read only flag or other uses.
Type_of_File                     Type of file, binary executable, BASIC, other?

Example  FRED  1234 0005 0000 0 0

An file called FRED, stored at logical block 1234,  5 blocks long (1280bytes),
loads at location 0000, and is a binary executable.  Not super readable for humans
but enough.

Takes very little code to find the file in  the storage,  copy to ram and execute it.
though back in the day the device rather than a flash ram something like a floppy 
would take a bit of code to make the BLOCK address into track and sector and 
of course hardware to do it.  Its enough to store a file, recover it, execute it
and if desired delete it.  With the right tools (programs) stored program generation
is easy.  Programs that might fit the use would include BASIC language, Assembler,
editor, file transfer via serial line from a larger host system.  Enough to be useful.

One of the things this system will do is not store the operating system on 
the media.  No reason to and we will have enough EEPROM space 
for storing it.  It simplifies the mass storage media as we don't need to reserve
space for the "system".

Why do this?  Every day I use a Linux box with a level of sophistication that 
boggles the mind and Gigabytes of software.  Its fun to build a system both 
hardware and software that one can wrap a mind entirely around with full 
understanding.  That and it keeps one rooted.


Allison

Friday, November 27, 2015

First of many

From here I'll post about stuff.

What kind of stuff....

Computers, from the PDP-8 12 bitters Through Transport triggered Architectures
with some bias from DEC and 8080/Z80 spaces.

Operating systems, again from the world external to all things PC (IBM PC running DOS on though  as they are just appliances.), what I'm referring to are places like CP/M, TOPS, RT-11, VMS and a lot of others.  PC stuff will be incidental to doing some of those or more.

Communications, this will cover ham radio and electronics, broad you bet.

Me, just an old broad that has something over 50 years hacking and later engineering radio and computers.  I have opinions and ideas and experience.  Extra class ham, KB1GMX, and avid builder  and experimenter.  When I'm not doing that I design stuff for a living.

Follow as you will.

Allison