Posted on Leave a comment

Crystal Quartz frequencies

This is an overview of all the Crystal Quartz Resonator frequencies I have available with a short description of use.

Crystal Quartz Resonator 32.768 kHz (small)Used in RTC circuits, the frequency 32768 Hz (32.768 KHz) is commonly used, because it is a power of 2 (215) value. And, you can get a precise 1 second period (1 Hz frequency) by using a 15 stage binary counter.
Crystal Quartz Resonator 1.8432 Mhz (high) UART clock allows integer division to common baud rates up to 115,200(×16×1) or 230,400(×8×1). Since older UARTs used this frequency to derive common baud rates up to 115,200, then multiples of this frequency are able to do the same, such as 3.6864 / 5.5296 / 7.3728 / 9.216 / 11.0592 / 12.9024 / 14.7456 / 16.5888 / 18.432 / 20.2752 / 22.1184 / 23.9616 / 25.8048 / 27.648 / 29.4912 / 31.3344 / 33.1776 / 35.0208 / 36.864 / …, and is why these MHz frequencies are commonly used.
Crystal Quartz Resonator 2.4576 Mhz (high)UART clock allows integer division to common baud rates up to 38,400(×16×4) or 76,800(×16×2).
Crystal Quartz Resonator 3 MHz (high) –
Crystal Quartz Resonator 3.2768 MHz (high) Allows binary division to 100 Hz (32,768×100 Hz, or 215×100 Hz) and to 50 Hz, used in e.g. wattmeters and DC-AC converters.
Crystal Quartz Resonator 3.579545 Mhz (High)NTSC M color subcarrier; see colorburst. More specifically, 5 * 7 * 9 / 88 = 3.57954 MHz. Because these are very common and inexpensive they are used in many other applications, for example DTMF generators. Also used in some Retro Pinball machines.
Crystal Quartz Resonator 3.58 Mhz (low) –
Crystal Quartz Resonator 3.6864 Mhz (High)
Crystal Quartz Resonator 3.6864 Mhz (Low)
UART clock allows integer division to common baud rates up to 230,400(×16×1) or 460,800(×8×1). Also used in W-CDMA systems.
Crystal Quartz Resonator 4 Mhz (high)
Crystal Quartz Resonator 4 Mhz (low)
 –
Crystal Quartz Resonator 4.032 Mhz (low)UART clock allows integer division to common baud rates up to 7,200(×16×35) or 14,400(×8×35), used for some 1200, 2400, and 4800 baud modems.
Crystal Quartz Resonator 4.096 Mhz (low)Allows binary division to 1 kHz (212×1 kHz). Used in ISDN systems.
Crystal Quartz Resonator 4.1920 Mhz (High)
Crystal Quartz Resonator 4.194304 Mhz (high)
Crystal Quartz Resonator 4.194304 Mhz (low)
 allows binary division to 1 Hz and 32.768 kHz. Real-time clock. For DDS generators with 1 Hz step. Used in the original Game Boy.
Crystal Quartz Resonator 4.433619 MHz (High) Used on original MK14   SC/MP board
Crystal Quartz Resonator 4.9152 Mhz (low) Used in CDMA systems; divided to 1.2288 MHz baseband frequency as specified by J-STD-008. UART clock allows integer division to common baud rates up to 38,400(×16×8) or 76,800(×8×4).
Crystal Quartz Resonator 5 Mhz (high)Common standard frequency.
Crystal Quartz Resonator 6 Mhz (low)Common in low-speed (1.5 Mbit/s) USB devices such as computer keyboards.
Crystal Quartz Resonator 7.15909 Mhz (Low)Used in old video cards & computers.
Crystal Quartz Resonator 7.3778 Mhz (low)
Crystal Quartz Resonator 8 Mhz (high)Common used in old computers.
Crystal Quartz Resonator Mhz (low) Allows binary division to 1 kHz (213×1 kHz). Used in ISDN systems. Used in OKI Speech Processor. Common audio clock, 256×32 kHz (see also 11.2896, 12.288, 16.384, 18.4323, 22.5792, 24.576 MHz). Typical TDM/PCM audio interface clock, 1/6 of 49.152 MHz
Crystal Quartz Resonator 9.8304 MHz (high)Used in CDMA systems (2×4.9152 MHz); divided to 1.2288 MHz baseband frequency. UART clock allows integer division to common baud rates up to 38,400(×16×16) or 76,800(×8×16).
Crystal Quartz Resonator 10 Mhz (high)
Crystal Quartz Resonator 10 Mhz (low)
Crystal Quartz Resonator 10.7386 Mhz (Low)Used in old video cards & computers.
Crystal Quartz Resonator 11.0592 Mhz (high)
Crystal Quartz Resonator 11.0592 Mhz (Low)
Common used in old computers and serial I/O chips.
Crystal Quartz Resonator 12 Mhz (high)
Crystal Quartz Resonator 12 Mhz (low)
 UART clock allows integer division to common baud rates up to 1,800(×16×450) or 7,200(×8×225)
Crystal Quartz Resonator 12.288 Mhz (low) Digital audio systems – DAT, MiniDisc, sound cards; 256×48 kHz (28×48 kHz). UART clock allows integer division to common baud rates up to 76,800(×16×20) or 256,000(×16×3)
Crystal Quartz Resonator 12.960 MHz (high)UART clock allows integer division to common baud rates up to 1,800(×16×450) or 7,200(×8×225)
Crystal Quartz Resonator 13.56 Mhz (high)
Crystal Quartz Resonator 13.56 Mhz (low)
 Common contactless smartcard frequency (ISO/IEC 14443). Also used as clock in some 433.92 MHz remote fob transmitters (multiplied by 32); 9.84375 MHz used for 315 MHz
Crystal Quartz Resonator 14.318 Mhz (low)NTSC M color subcarrier (4×3.579545 MHz). Common seed clock for modern PC motherboard clock generator chips, clock for ISA bus, also common on CGA and VGA cards and in some 8-bit computers. Exactly 315/22 MHz. 4f(sc) sampling for NTSC or 525/60 (raw image size 910×525, visible 768×475), SMPTE 244M standard.
Crystal Quartz Resonator 14.7456 Mhz (low)Common used in old computers as the frequency is ideal for generating video signals.
Crystal Quartz Resonator 16 Mhz (high)
Crystal Quartz Resonator 16 Mhz (low)
Crystal Quartz Resonator 16 Mhz (small)
Common used in old and new computers. Pixel clock for Hercules Graphics Card. Also used for ZigBee, Bluetooth and BLE, WiFi.
Crystal Quartz Resonator 16.3825 Mhz (low)UART clock allows integer division to common baud rates up to 115,200(×16×1) or 230,400(×8×1). Since older UARTs used this frequency to derive common baud rates up to 115,200, then multiples of this frequency are able to do the same, such as 3.6864 / 5.5296 / 7.3728 / 9.216 / 11.0592 / 12.9024 / 14.7456 / 16.5888 / 18.432 / 20.2752 / 22.1184 / 23.9616 / 25.8048 / 27.648 / 29.4912 / 31.3344 / 33.1776 / 35.0208 / 36.864 / …, and is why these MHz frequencies are commonly used.
Crystal Quartz Resonator 18.432 Mhz (low)UART clock allows integer division to common baud rates up to 230,400(×16×5) or 576,000(×16×2).
Audio clock allows integer division for 48 / 96 / 192 ksps. Integer division for 50 Hz and 60 Hz.
Crystal Quartz Resonator 20 Mhz (low)
Crystal Quartz Resonator 20 Mhz (low)
Crystal Quartz Resonator 21.32813 Mhz (high)
Crystal Quartz Resonator 22.1184 Mhz (Low)UART clock allows integer division to common baud rates up to 460,800(×16×3) or 921600(×8×3). Twice the 11.0592 MHz frequency.
Crystal Quartz Resonator 22.33 Mhz (high)
Crystal Quartz Resonator 24 Mhz (high)
Crystal Quartz Resonator 24 Mhz (Low)
Crystal Quartz Resonator 25 Mhz (low)
Crystal Quartz Resonator 30 Mhz (High)Common CPU clock.
Crystal Quartz Resonator 32 Mhz (low)Common CPU clock and common crystal for LoRa RF chips 
Crystal Quartz Resonator 36 Mhz (high)Video Graphics Array pixel clock (VESA modes VGA 640×480@85 with hsync 43.3 kHz, SVGA 800×600@56 with hsync 35.2 kHz.[28] Pixel clock for SDTV PAL/NTSC (FWVGA 960×480p@59.94, 960×576p@50).

Posted on Leave a comment

MK14 component list

Mk14

This is the original component list of the MK14 processor board.

IC’s

MK14 Board component list

IC1, IC2 DM74S571
IC3 DM74S571
CPU 1SP-8A/600(8060)
IC4 MM2111-1N 256 x 4 RAM
IC5 MM2111-1N 256 × 4 RAM
IC6 MM2111-1N 256 x 4 RAM
IC7 MM2111-1N 256 x 4 RAM
IC8 INS8154N
IC9 DM74LS157
IC10 DM74LS157
IC11 DM80L95
IC12 DM74LS173
IC13 DM7445
IC14 DM7408
IC15 Dm7408
IC16 DM74LS08
IC17 DM74LS00
IC18 DM74LS04
IC19 LM340
Crystal 4.433619 MH2

Posted on Leave a comment

Intel MSC-48 chips

MAB8048H

The MCS-48 microcontroller series was the first range of microcontroller from Intel and it was  originally released in 1976. The first chips were the 8048, 8035 and 8748 and the 8048 is probably the most used chip of this family. The first chips were produced using NMOS  and in the early 1980s they became available in CMOS. The chips were produced until the 1990tie but there are still a lot around these days.

The MCS-48 microcontroller series has a modified Harvard architecture, with internal or external program ROM and 64 to 256 bytes of internal (on-chip) RAM. The I/O is mapped into its own address space, separate from programs and data and that made it a perfect controller in f.i. keyboards and toys. The original IBM PC keyboard used an 8048 as its internal microcontroller.

Common chips that are still available today are:

DeviceInternalMemoryRemarks
8035none64 × 8 RAM
8038none64 × 8 RAM
8039none128 × 8 RAM
8040none256 × 8 RAM
80481K × 8 ROM64 × 8 RAM27× I/O ports
80492K × 8 ROM128 × 8 RAM27× I/O ports
80504K x 8 ROM256 × 8 RAM
87481K × 8 EPROM64 × 8 RAM4K program memory expandable, 2× 8-bit timers, 27× I/O ports
87492K × 8 EPROM128 × 8 RAM2× 8-bit timers, 27× I/O ports

Simple processor

The 8048 is a very simple (but powerful) processor, with only one A4 page of instructions. You can use the internal ROM and have a lot of I/O pins, but whem activating the EA pin, you can also map the ROM to outside and use a eeprom or eprom to hold the code.

Pinout 8048 microcontroller

Internal diagram of the 8048

Schematic 8048 with external Eprom


Intel_8048_Single_Board_Computer on GitHub

https://github.com/jim11662418/Intel_8048_Single_Board_Computer

A simple Intel 8048 Single Board Computer. The firmware was assembled with the Macro Assembler AS with full schematics and sourcecode of the project, even the sourcecode of a monitor programm. It is fun to play with such aq simple, but yet powerful, micrcontroller. There is a good open source assembler:

http://john.ccac.rwth-aachen.de:8000/as/

Documentation and downloads

Posted on Leave a comment

Intel support chips

Intel8080A

This is a list of Intel support chips for various Intel chipsets, with a link to products in this webshop and alternatives / second source chips, most of them are also available in this webshop. AMD, OKI and NEC made a lot of second source chips for Intel.

Microprocessor support and other ICs for 8088 family

Type nr.DescriptionAlternatives
8202A Dynamic RAM controller
D8203 Dynamic RAM controller
8208 Dynamic RAM controller
P8212 8-BIT Input/Output MPU MCU
P8237 DMA controller D8237AC-5 (NEC)
P82343 8 bit I/O expander
P8251 Universal Synchronous/Asynchronous Receiver/Transmitter (USART) 
P8254 Programmable interval timer
P8255 Parallel I/O interfaceP82C55A2 (Intel) M82C55A-2 (OKI) 82C55AC-2 (NEC) P8255A-5 (Intel) D82C55AC-2 (NEC) TMP82C55AP-2
P8256 Multifunction microprocessor support controller
P8259 Programmable interrupt controller
D8273 Programmable HLDC/SLDC protocol controller P8273 (Intel)
D8274 Multi-protocol serial controller P8274 (Intel)
8276H Small system CRT controller
D8282 Octal latch with 3-state outputs P8282 (Intel)
D8284 Clock generator
D8286 8-bit bus transeiver with 3-state outputs P8286 (Intel)
D8287 8-bit bus transeiver with 3-state outputs (invert) P8287 (Intel)
D8288 Bus controller

Posted on Leave a comment

Guitar tone capacitors

When it comes to guitar tone, capacitor value is what matters most. Capacitors also feature a voltage rating that also determines the physical size of the cap but because almost all capacitors can easily handle the voltages produced by your guitar, the voltage ratings is not so important. The value of the capacitor will roll your guitar’s tone back and the higher the value, the darker the tone and the lower the value, the brighter the tone. While there is a wide range of values to choose from, most electric guitars feature only a few options.

Popular values

  • .015 µF (is equal to 15 nF)
  • .022 µF (is equal to 22 nF)
  • .047 µF (is equal to 47 nF)

15 nF

15 nF capacitors are not as popular as the other two but they are perfect for fine control of your high-end frequencies throughout the full sweep of your tone knob. They are also fantastic for taming harsh frequencies in your signal.

22 nF

22 nF is the most common value and however they interact differently with humbucking and single-coil pickups, they work great on both. But they are most often found in humbucker-equipped guitars. They are know for a warm and woolly sound.

47 nF

.047 µF capacitors are also a popular choice, they are darker than the other two capacitor values. This is why Fender often uses them for their brighter Stratocaster and Telecaster pickups. Turning the know you will hear that the high-end detail will disappear very fast. The dark, mid-range sound is especially popular with jazz players.

Type of capacitor

You can use the cheap Ceramic capacitors, but most people do not like them for guitars, because they are rather inacurate. The old Paper-in-oil capacitors are considered the best, but they are very hard to find and very expensive. So the best and most used capacitor is the Polypropylene capacitor, mostly recognisable by its red or orange color.

Swapping your tone capacitors is a powerful, affordable and easy-to-accomplish modification.

Kind regards, Hein Pragt.

Posted on Leave a comment

Types of packages

Components come in several packages and it is not always so clear what package type you will need. I sell mosly DIP / DIL packages beacuse they are often used in old electronic designs and computers, but I also sell more modern packages. Analog chips and transistors also come in different packages. On this page I have soms pictures of the different package types.



Posted on Leave a comment

Intel MCS-48 processor family

One of the forgotten microprocessors / microcontrollers is the Intel MCS-48 family which was  Intel’s first microcontroller and was released in 1976 and was manufactured into the 1990ties. At the bottom of this page I have a overview of the many members of this microcontroller family. The 8048 is the most prominent member of the family.  The MCS-48 family has a modified Harvard architecture, with internal or external program ROM and 64 to 256 bytes of internal RAM. The I/O is mapped into its own address space, separate from programs and data. Because of its low costs and single chip operation its was used in many cost-sensitive consumer electronics devices such as TV remotes, computer keyboards (TRS-80 Model II, IBM PC), and toys. Years later the MCS-48 chips were replaced by the very successful MCS-51 series that is still manufactured (and used) today.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

The MCS-48 processor family

NEC UPD8022C (Processor)

NEC 8022 processor In 1976 Intel and NEC agreed that NEC could make second source chips from Intel and NEC also made and 8022 from Intel. The 8022 is as standard MCS-48 series chip and has a modified Harvard architecture, with 2K × 8 ROM 64 × 8 RAM + A/D-converter. I cannot find any datasheet on this chip.

wikipedia MCS-48 / 8035 (Processor) (Eng)



Intel 8035 (Processor)

Intel 8035 processor In 1976 Intel introduced the MCS-48 microcontroller series, its first members were 8048, 8035 and 8748. In the beginning these chips were using NMOS technology, later they became available in CMOS technology. The MCS-48 series has a modified Harvard architecture, with internal or external program ROM and 64–256 bytes of internal (on-chip) RAM. The I/O is mapped into its own address space, separate from programs and data.The MCS-48 series was later replaced by the very successful MCS-51 series but the chips are still used in cheap consumer electronics devices such as TV remotes, computer keyboards. and toys. Compared to the standard 8048 the 8035 has no internal ROM and 64 x 8 bytes internal RAM memory.
wikipedia MCS-48 / 8035 (Processor) (Eng)
UPD80C35 Processor Datasheet



Intel 8039 (Processor)

Intel 8039 processor The 8039 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8039 equals to a 8035 and has no internal ROM and 128 x 8 bytes internal RAM memory on chip.
wikipedia MCS-48 / 8035 (Processor) (Eng)
P8039AHL Processor Datasheet



>

Intel 8039 (Processor)

Intel 8039 processor The 8040 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8040 equals to a 8035 and has no internal ROM and 256 x 8 bytes internal RAM memory on chip.
wikipedia MCS-48 / 8035 (Processor) (Eng)
P8039AHL Processor Datasheet



8041 (UPI)

8041 (UPI) The 8041 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 1024 x 8 ROM and 64 x 8 RAM on chip. The 8041 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems.
wikipedia 8048 (Eng)
UPD8041 DatasManual



D8741 (UPI)

8741 (UPI) The 8741 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 1024 x 8 EPROM and 64 x 8 RAM on chip. The 8741 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems. I have four D8741 from NEC and two D8741 from Intel in my collection.
wikipedia 8048 (Eng)
D8741 DatasManual



8042 (UPI)

8042 (UPI) The 8042 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 4096 x 8 ROM and 256 x 8 RAM on chip. The 8042 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems.
wikipedia 8048 (Eng)
MBL8042 DatasManual



8048 (MCU)

8048 (MCU) The 8048 is also a member of the MCS-48 processor family. The 8048 has 1Kb x 8 bytes ROM and 64 x 8 bytes internal RAM memory on chip, and 27 I/O lines. I have two PE8048 from Intel and four MAB8048 from Philips in my collection.
wikipedia 8048 (Eng)
8048 DatasManual



P8748 (MCU)

8748 (MCU) The 8748 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8748 has 1Kb x 8 bytes PROM and 64 x 8 bytes internal RAM memory on chip, and 27 I/O lines.
wikipedia 8048 (Eng)
P8748 DatasManual



8049 (MCU)

8042 (MCU) The 8049 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8049 has 2Kb x 8 bytes ROM and 128 x 8 bytes internal RAM memory on chip.
wikipedia 8048 (Eng)
MBL8042 DatasManual



8050 (8 bit Microsontroller)

M5M8050H The 8050 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8039 has 4K x 8 ROM and 256 × 8 RAM memory on chip.
M5M8050H Datasheet (pdf)



The MSC-48 internals

The MSC-48 pin layouts

MSC-48 programming / technical reference

Posted on Leave a comment

Book 8088 laptop

book8088

My first IBM compatible development machine was a IBM-XT clone with a 8088 processor, 640 MB memory, a CGA graphics card  and a 10 Mb hard disk and two floppy drives. I later changed the 8088 for a NEC V20 and added a bigger hard disk. I was running DOS and the first releases of MS Windows up to version 3.0, I have some good memories from that time, beside development I also used the machine for games and I remember many hours of fun. But very soon I got an Intel 286 AT machine and then a Intel 286 and so on. At that time I was programming in C and 8086 assembler and I still have some code I wrote at that time.

Nowadays there are not that many 8088 / 8086 machine left and the prices of old retro IBM-PC machines is still rising. Also there are not that many 8088 DIY projects, it looks like a not so popular processor. I have been looking for a 8088 / 8086 system for a long time and beside some expensive development boards there is not that much on the market. Then I found this Book 8088 laptop on a Chinese website and at first it looked a little too good to ben true. A complete laptop with LCD screen, a VGA compatible video card, am OPL compatible soundcard, SD drive with preinstalled DOS 6 and Windows 3.0 and some nice software, and all that around 200 euros.

I ordered one and was surprised by this little device, it worked out of the box and after a good charge I tested most of the features. It is nice to see a dos machine boot and it brings back good memories. The speed is also “compatible” and that is a strange experience, but it is accurate. The machine has a NEC V20 processor on board and there is room for a 8087 co-processor.

It has 640 KB of ram, a parallel and serial port on the back, a USB host plug for USB sticks (that mound as drive D) to transfer data and files, it has an ISA header on the back where you can add a standard 3 slot ISA bus and it has a build in battery.

I also played some of my old games on this machine and it feels exactly like the old days, I am planning to look for more of my favorite games.

There are some plans I have, I want to build a 8088 / 8086 IDE with a build in IBM-PC emulator, I can use this machine as a reference. I am looking for a serial mouse, that would be nice using Windows 3.0.  A also ordered the ISA extension card and a ISA serial card. I also intend to change the BIOS rom because there is an alternative that is open source and GPL and I want to see if the machine runs on a standard intel 8088 processor. A lot of things to do, and hopefully a lot of fun.

Regards, Hein Pragt

Posted on 1 Comment

Retroshield INS8060

The INS8060 or SC/MP processor was my first “love” when I was 15 years old. But at that time the processor and boards were far too expensive for me. It was in my 60ties when I really went into Retro computing that I managed to buy an original (white ceramic) SC/MP chip and later I bought a INS8060, the second version that did not need the negative voltage. I kept the processors in a box, but it is always nice to have them running again, but I could not bring myself to re-building an old SC/MP project. I very rarely get a SC/MP INS8060 processor for my webshop, but if I find one I will put it in the shop!

RetroShield

I have a lot of so called RetroShield boards for the Arduino Mega board, this is a way to connect an old processor to the Arduino Mega andlet the Arduino Mega run as ROM / RAM and I/O. I found there was also a RetroShield for the INS8060 so I ordered one. After som soldering it worked as usual I rewrote the code and it runs NIBL basic for the SC/MP processor using the (very slow) serial capabilities of the IND8060 processor.

But it works and it is nice to see the old processor running. It has no practical use, but it is better than keeping the processor hidden in a box. At the bottom of the page I have a download link for the code I run in the Arduino Mega.

Download and links

My Arduino Mega sourcecode:

I did write a complet page about the SC/MP (INS8060) processor with a lot of documentation:

https://www.heinpragt-software.com/ins8060-or-scmp-processor/

And also I wrote a development IDE for the SC/MP (INS8060) processor, including an emulator, an assembler / disassembler.

https://www.heinpragt-software.com/sc-mp-processor-ide/

Have fun!

Posted on Leave a comment

Arduino boards / AVR chips

arduino Uno

I also sell Arduino boards like the Arduino Nano, Arduino Uno and several AVR based chips in mu webshop and although they are strictly not retro, they are used in a lot of Retro replicas, retroshields and chip testers. I build a lot of chip testers based on an Arduino board and I also have some PCB’s for these in my webshop. On this page I will tell you a little more about these AVR chips.  AVR is a family of microcontrollers developed since 1996 by Atmel and acquired by Microchip Technology in 2016. The AVR chips are modified Harvard architecture 8-bit RISC single-chip microcontrollers and they were one of the first microcontroller families to use on-chip flash memory for program storage.

The AVR architecture was conceived by two students at the Norwegian Institute of Technology (NTH) named Alf-Egil Bogen and Vegard Wollan.  Atmel says that the name AVR is not an acronym but it is commonly accepted that AVR stands for Alf and Vegard’s RISC processor. One of the first chips of the AVR line was the AT90S8515 and the processors got a big boost when the Arduino platform was released in 2005 and featured the ATmega8 AVR microcontrollers.

The Arduino based boards (but also the individual chips using SPI) can be easily programmed in assembler and the ‘C’ and ‘C++’ language and there are a lot of ready to use libraries for different devices and communication protocols.. The fact that (most of ) these chips use 5V power supply makes them also interesting to use in combination with old hardware and old chips. They are often used as a boot device and serial controller in several designs like the Z80 MBC and the Apple1 replica.

atmega32
atmega32

The ATMega32 is a high-performance, low-power Microchip 8-bit AVR® RISC-based microcontroller that combines 32 KB ISP flash memory with 1 KB EEPROM, 2 KB SRAM, 54/69 general purpose I/O lines, 32 general purpose working registers, three flexible timer/counters with compare modes, internal and external interrupts, serial programmable USART, an 8-channel 10-bit A/D converter, programmable watchdog timer with internal oscillator, SPI serial port, and five software selectable power saving modes. The device operates between 1.8-5.5 volts.  This makes it suitable as external rom for boot and serial and I/O device for retro microprocessors like the Z80. The ATMega32 is used in a lot of MBC (Minimal Computer Board) designs like the Z80 MBC.

arduino mega 8031
arduino mega 8031

The Arduino Mega is a big Arduino board based on the ATmega2560. It has 256 KB of Flash Memory ( 8 KB used by bootloader), 8 KB Sram and 4 KB Eeprom, 54 digital input/output pins, 16 analog inputs, 4 UARTs (hardware serial ports) and a 16 MHz crystal oscillator. This makes it perfect to emulate Rom / Ram and I/O for a lot of old 8bit microprocessors. There are a lot of so called Retroshields for a wide verity of 8 bit processors like the Z80, the 6502, the 1802, the 2605 and 68xx processors. Sometimes even a small system using basic or emulation of an old computer is available in open source.

nano_with_pins
nano_with_pins

The Ardiono Uno and the Arduino Nano are often used as basic boards for chip testers, ISP programmers and f.i. as serial interface on a Retro computer where these boards replace a lot of glue logic. On the Apple1 replica the Arduino Nano replaces the terminal interface emulating the keyboard and the CRT interface. I also sell a dram tester based on Arduino Uno or Arduino Nano boards.

AY-3-8910 sound board
AY-3-8910 sound board

In retro designs the AVR chips are very handy to replace a lot of glue logic and I/O devices, because the AVR chips and boards support SPI they can easily interface to cheap SD card disk drives and realtime clock boards. So even if these chips are not retro themselves, the are often used in combination with Retro computers.

Have fun, regards, Hein Pragt.

Posted on Leave a comment

Atmega328 retro board

atmega328

Sometimes you have a project that you started and did not finish that keeps staring you in the eye every time you enter your shack. This was one of mine, I was planning to build a copy of the famous MPF1 board, but after soldering the keys and the displays, it stopped. After a while the urge of building a copy of the MPF1 faded and the board was laying on my desk. Then I thought about creating an ATMega328 based universal retro board that I could use to emulate f.i. a KIM1 or even a MPF1. The problem was the amount of I/O pins an ATMega328 has when using an external oscillator. But with some deep thinking and some clever design I managed to fit it all on one ATMega328 and keeping the RX/TX pins free for serial communication for debugging messages. This is the design I came up with.

I use two common cathode seven segment X 4 displays and I driver them using an ULN2803 that contains 8 Darlington transistor circuits. The outputs drive the displays (active to ground) but also the scanlines of the keyboard.  As I wanted nine rows (MPF1) I had to use a clever trick, there is a 9e state and that is “all off”. By connecting the last row to the ground I can read these pins if all scanlines are inactive. The last button is hardwired to the reset pin. Furthermore the design is very straightforward, the TX line is used as an output for a scanline so it can be used as serial out at the same time. Only the first display will light up a little extra. The RX pin is left free so this can also be used.

The design is made in a way that the ATMega328 chip can be easily replaced with an Arduino Uno, that makes development very easy as you can download the sketch from the IDE and monitor using the terminal of the IDE. When all is working fine, just program the code in an ATMega328 and put the chip in place. Here I have a zip file with the basic test code to see if the hardware is working and an example of the keyboard and display drivers code.

When everything was working I took the sourcecode of the KIMUNO project and cleaned up the code and added my own keyboard and display drivers. This took me a while because the code was a little unclear sometimes. I reformatted / restuctured the code, deleted some unused code and added comment. After a few evening the KIM1 clone was working on my hardware. At the end of the page I included my full sourcecode of the project. And after putting the code inside a standalone ATMega328, this was the result. A working KIM1 emulator.

I hope I have inspired someone to build this and even add more features or other emulations. I still want to write a full MPF1 emulation for this board, but that is one of the future plans.

Sourecode KIM1 ATMega328

Have fun, regards, Hein Pragt.

Posted on Leave a comment

Arduino Uno ATMega328 pins

atmega328

The Arduino Uno is not a very Retro style board but it is one of the boards that made microcontrollers available for the main public with a simple and free IDE and opensource hardware. I like using the AVR chips and nowadays a lot new designs of old retro computers contain an AVR chip to replace al lot of glue logic chips. There are even complete emulations of old system available on AVR chips and f.i. de KIM-Uno is a complete emulation of the very old KIM computer board on an Arduino Uno.

AVR is a family of microcontrollers developed since 1996 by Atmel and these are modified Harvard architecture 8-bit RISC single-chip microcontrollers. AVR was one of the first microcontroller families to use on-chip flash memory for program storage. The AVR architecture was conceived by two students at the Norwegian Institute of Technology (NTH) Alf-Egil Bogen and Vegard Wollan. Atmel says that the name AVR is not an acronym and does not stand for anything in particular. However, it is commonly accepted that AVR stands for Alf and Vegard’s RISC processor. The AVR 8-bit microcontroller architecture was introduced in 1997.

In 2009 the team that would become Arduino was formed with the idea of an accessible, affordable electronics development platform. This would eventually give birth to the Arduino UNO. That cheap little board went all over the world and one of oy successors was the Arduino Nano, that us internally the same but has a much smaller size. It isvery easy to use the ATMega328 (DIL version 28 pins) in an electronic design as standalone microcontroller and because it has build in flash and sram memory, 20 I/O pins and a lot of internal peripherals (like a build in UART) it can be used in all kinds of remakes of old computer designs.

When I develop I like to use an UNO or Nano as a drop in for the ATMega328 chip, here is the mapping of the Arduino Uno to the ATMega328 pins.

The same for the Arduino Nano, this board has the 32 pins atmega328 chip.

Have fun, regards, Hein Pragt.

Posted on Leave a comment

Eight digit seven segment display

When you want to clone a retro computer board like the MK14 or KIM you will need to connect a seven segment display array. This may also be very nice if you design your own standalone mini computer board. I was experimenting with a Tang Nano FPGA and also needed a display and that is when I decided to document what I made. This is a simple universal 8 digit seven segment display unit that can be driven by 8 (or 7) segment select lines and 8 row select lines. The idea is that you can multiplex the displays, so first select display 1 and output the correct segments, then select display 2 and output the correct segments and so on. If you do this at a speed of more then 50 times a second it will appear that all displays are stable and continuously displaying. This is a basic design you can use in your designs.

I use two 4 digit seven segments display units with common cathode (-) lines, but you can also use single or even 8 digit displays. You can also use 7 digits, in this case you will only connect the first 6 row select lines. To select a display we need a kind of switch, most MCU (or FPGA) chips are not capable of driving this current so we need a transistor to switch the display on or off. But I like the very handy, cheap and common Darlington-array ULN 2803 chip that is perfect for this job. The segements are drivern with a positive voltage for on and the rows als also selected with a positive level. You can use this design for 5V and also for 3V3 designs without any modification.

In the segment lines we need some way to reduce the current for the leds in out display and 470 Ohm is a very common value. You can lower or raise this value a little to make the displays light up brighter as you like. The ULN2803 is also very easy to wire on a breadboard, all the inputs are on one side and all the outputs on the other side, and compared to 8 transistors with a base resistor this chip takes up very little space.

Have fun, regards, Hein Pragt.

Posted on Leave a comment

TTL IC Overview

ttl

This is a table with an overview of all TTL IC typenumbers and a short description of the chip. The chips are available in many variants such as LS and HC types, the operation is the same, but the electrical specifications are different. You cannot simply replace an LS with an HC type without being sure that the fan-in and fan-out and the threshold values ​​have no effect.

List of TTL IC’s

Part number Description
7400 quad 2-input NAND gate
7401 quad 2-input NAND gate with open collector outputs
7402 quad 2-input NOR gate
7403 quad 2-input NAND gate with open collector outputs
7404 hex inverter
7405 hex inverter with open collector outputs
7406 hex inverter buffer/driver with 30 V open collector outputs
7407 hex buffer/driver with 30 V open collector outputs
7408 quad 2-input AND gate
7409 quad 2-input AND gate with open collector outputs
7410 triple 3-input NAND gate
7411 triple 3-input AND gate
7412 triple 3-input NAND gate with open collector outputs
7413 dual Schmitt trigger 4-input NAND gate
7414 hex Schmitt trigger inverter
7415 triple 3-input AND gate with open collector outputs
7416 hex inverter buffer/driver with 15 V open collector outputs
7417 hex buffer/driver with 15 V open collector outputs
7418 dual 4-input NAND gate with Schmitt trigger inputs
7419 hex Schmitt trigger inverter
7420 dual 4-input NAND gate
7421 dual 4-input AND gate
7422 dual 4-input NAND gate with open collector outputs
7423 expandable dual 4-input NOR gate with strobe
7424 quad 2-input NAND gate gates with schmitt-trigger line-receiver inputs.
7425 dual 4-input NOR gate with strobe
7426 quad 2-input NAND gate with 15 V open collector outputs
7427 triple 3-input NOR gate
7428 quad 2-input NOR buffer
7430 8-input NAND gate
7431 hex delay elements
7432 quad 2-input OR gate
7433 quad 2-input NOR buffer with open collector outputs
7434 hex noninverters
7435 hex noninverters with open-collector outputs
7436 quad 2-input NOR gate (different pinout than 7402)
7437 quad 2-input NAND buffer
7438 quad 2-input NAND buffer with open collector outputs
7439 quad 2-input NAND buffer with open collector outputs, input and output terminals flipped, otherwise functionally identical to 7438
7440 dual 4-input NAND buffer
7441 BCD to decimal decoder/Nixie tube driver
7442 BCD to decimal decoder
7443 excess-3 to decimal decoder
7444 excess-3-Gray code to decimal decoder
7445 BCD to decimal decoder/driver
7446 BCD to seven-segment display decoder/driver with 30 V open collector outputs
7447 BCD to 7-segment decoder/driver with 15 V open collector outputs
7448 BCD to 7-segment decoder/driver with Internal Pullups
7449 BCD to 7-segment decoder/driver with open collector outputs
7450 dual 2-wide 2-input AND-OR-invert gate (one gate expandable)
7451 dual 2-wide 2-input AND-OR-invert gate
7452 expandable 4-wide 2-input AND-OR gate
7453 expandable 4-wide 2-input AND-OR-invert gate
7454 3-2-2-3-input AND-OR-invert gate
7455 2-wide 4-input AND-OR-invert Gate (74H version is expandable)
7456 50:1 frequency divider
7457 60:1 frequency divider
7458 2-input & 3-input AND-OR Gate
7459 2-input & 3-input AND-OR-invert Gate
7460 dual 4-input expander
7461 triple 3-input expander
7462 3-2-2-3-input AND-OR expander
7463 hex current sensing interface gates
7464 4-2-3-2-input AND-OR-invert gate
7465 4-2-3-2 input AND-OR-invert gate with open collector output
7468 dual 4 bit decade counters
7469 dual 4 bit binary counters
7470 AND-gated positive edge triggered J-K flip-flop with preset and clear
7471 AND-or-gated J-K master-slave flip-flop with preset
7472 AND gated J-K master-slave flip-flop with preset and clear
7473 dual J-K flip-flop with clear
7474 dual D positive edge triggered flip-flop with preset and clear
7475 4-bit bistable latch
7476 dual J-K flip-flop with preset and clear
7477 4-bit bistable latch
7478 dual positive pulse triggered J-K flip-flop with preset, common clock, and common clear
7479 dual D flip-flop
7480 gated full adder
7481 16-bit random access memory
7482 2-bit binary full adder
7483 4-bit binary full adder
7484 16-bit random access memory
7485 4-bit magnitude comparator
7486 quad 2-input XOR gate
7487 4-bit true/complement/zero/one element
7488 256-bit read-only memory
7489 64-bit random access memory
7490 decade counter (separate divide-by-2 and divide-by-5 sections)
7491 8-bit shift register, serial In, serial out, gated input
7492 divide-by-12 counter (separate divide-by-2 and divide-by-6 sections)
7493 4-bit binary counter (separate divide-by-2 and divide-by-8 sections)
7494 4-bit shift register, dual asynchronous presets
7495 4-bit shift register, parallel In, parallel out, serial input
7496 5-bit parallel-In/parallel-out shift register, asynchronous preset
7497 synchronous 6-bit binary rate multiplier
7498 4-bit data selector/storage register
7499 4-bit bidirectional universal shift register
74100 dual 4-bit bistable latch
74101 AND-OR-gated J-K negative-edge-triggered flip-flop with preset
74102 AND-gated J-K negative-edge-triggered flip-flop with preset and clear
74103 dual J-K negative-edge-triggered flip-flop with clear
74104 J-K master-slave flip-flop
74105 J-K master-slave flip-flop
74106 dual J-K negative-edge-triggered flip-flop with preset and clear
74107 dual J-K flip-flop with clear
74108 dual J-K negative-edge-triggered flip-flop with preset, common clear, and common clock
74109 dual J-Not-K positive-edge-triggered flip-flop with clear and preset
74110 AND-gated J-K master-slave flip-flop with data lockout
74111 dual J-K master-slave flip-flop with data lockout
74112 dual J-K negative-edge-triggered flip-flop with clear and preset
74113 dual J-K negative-edge-triggered flip-flop with preset
74114 dual J-K negative-edge-triggered flip-flop with preset, common clock and clear
74116 dual 4-bit latch with clear
74118 hex set/reset latch
74119 hex set/reset latch
74120 dual pulse synchronizer/drivers
74121 monostable multivibrator
74122 retriggerable monostable multivibrator with clear
74123 dual retriggerable monostable multivibrator with clear
74124 dual voltage-controlled oscillator
74125 quad bus buffer with three-state outputs, negative enable
74126 quad bus buffer with three-state outputs, positive enable
74128 quad 2-input NOR Line driver
74130 quad 2-input AND gate buffer with 30 V open collector outputs
74131 quad 2-input AND gate buffer with 15 V open collector outputs
74132 quad 2-input NAND schmitt trigger
74133 13-input NAND gate
74134 12-input NAND gate with three-state output
74135 quad exclusive-or/NOR gate
74136 quad 2-input XOR gate with open collector outputs
74137 3 to 8-line decoder/demultiplexer with address latch
74138 3 to 8-line decoder/demultiplexer
74139 dual 2 to 4-line decoder/demultiplexer
74140 dual 4-input NAND line driver
74141 BCD to decimal decoder/driver for cold-cathode indicator/Nixie tube
74142 decade counter/latch/decoder/driver for Nixie tubes
74143 decade counter/latch/decoder/7-segment driver, 15 ma constant current
74144 decade counter/latch/decoder/7-segment driver, 15 V open collector outputs
74145 BCD to decimal decoder/driver
74147 10-line to 4-line priority encoder
74148 8-line to 3-line priority encoder
74150 16-line to 1-line data selector/multiplexer
74151 8-line to 1-line data selector/multiplexer
74152 8-line to 1-line data selector/multiplexer
74153 dual 4-line to 1-line data selector/multiplexer
74154 4-line to 16-line decoder/demultiplexer
74155 dual 2-line to 4-line decoder/demultiplexer
74156 dual 2-line to 4-line decoder/demultiplexer with open collector outputs
74157 quad 2-line to 1-line data selector/multiplexer, noninverting
74158 quad 2-line to 1-line data selector/multiplexer, inverting
74159 4-line to 16-line decoder/demultiplexer with open collector outputs
74160 synchronous 4-bit decade counter with asynchronous clear
74161 synchronous 4-bit binary counter with asynchronous clear
74162 synchronous 4-bit decade counter with synchronous clear
74163 synchronous 4-bit binary counter with synchronous clear
74164 8-bit parallel-out serial shift register with asynchronous clear
74165 8-bit serial shift register, parallel Load, complementary outputs
74166 parallel-Load 8-bit shift register
74167 synchronous decade rate multiplier
74168 synchronous 4-bit up/down decade counter
74169 synchronous 4-bit up/down binary counter
74170 4 by 4 register file with open collector outputs
74171 quad D-type flip-flops with clear
74172 16-bit multiple port register file with three-state outputs
74173 quad d flip-flop with three-state outputs
74174 hex d flip-flop with common clear
74175 quad d edge-triggered flip-flop with complementary outputs and asynchronous clear
74176 presettable decade (bi-quinary) counter/latch
74177 presettable binary counter/latch
74178 4-bit parallel-access shift register
74179 4-bit parallel-access shift register with asynchronous clear and complementary Qd outputs
74180 9-bit odd/even parity bit generator and checker
74181 4-bit arithmetic logic unit and function generator
74182 lookahead carry generator
74183 dual carry-save full adder
74184 BCD to binary converter
74185 6-bit binary to BCD converter
74186 512-bit (64×8) read-only memory with open collector outputs
74187 1024-bit (256×4) read only memory with open collector outputs
74188 256-bit (32×8) programmable read-only memory with open collector outputs
74189 64-bit (16×4) RAM with inverting three-state outputs
74190 synchronous up/down decade counter
74191 synchronous up/down binary counter
74192 synchronous up/down decade counter with clear
74193 synchronous up/down 4-bit binary counter with clear
74194 4-bit bidirectional universal shift register
74195 4-bit parallel-access shift register
74196 presettable decade counter/latch
74197 presettable binary counter/latch
74198 8-bit bidirectional universal shift register
74199 8-bit bidirectional universal shift register with J-Not-K serial inputs
74200 256-bit ram with three-state outputs
74201 256-bit (256×1) ram with three-state outputs
74206 256-bit ram with open collector outputs
74209 1024-bit (1024×1) ram with three-state output
74210 octal buffer
74219 64-bit (16×4) RAM with noninverting three-state outputs
74221 dual monostable multivibrator with schmitt trigger input
74222 16 by 4 synchronous FIFO memory with three-state outputs
74224 16 by 4 synchronous FIFO memory with three-state outputs
74225 asynchronous 16×5 FIFO memory
74226 4-bit parallel latched bus transceiver with three-state outputs
74227 64-bit fifo memories 16×4
74228 64-bit fifo memories 16×4 open-collector outputs
74230 octal buffer/driver with three-state outputs, true and complementary inputs
74231 octal buffer and line driver with three-state outputs, G and /G complementary inputs
74232 quad NOR Schmitt trigger
74237 3-of-8 decoder/demultiplexer with address latch, active high outputs
74238 3-of-8 decoder/demultiplexer, active high outputs
74239 dual 2-of-4 decoder/demultiplexer, active high outputs
74240 octal buffer with Inverted three-state outputs
74241 octal buffer with noninverted three-state outputs
74242 quad bus transceiver with Inverted three-state outputs
74243 quad bus transceiver with noninverted three-state outputs
74244 octal buffer with noninverted three-state outputs
74245 octal bus transceiver with noninverted three-state outputs
74246 BCD to 7-segment decoder/driver with 30 V open collector outputs
74247 BCD to 7-segment decoder/driver with 15 V open collector outputs
74248 BCD to 7-segment decoder/driver with Internal Pull-up outputs
74249 BCD to 7-segment decoder/driver with open collector outputs
74250 1 of 16 data selectors/multiplexers
74251 8-line to 1-line data selector/multiplexer with complementary three-state outputs
74253 dual 4-line to 1-line data selector/multiplexer with three-state outputs
74255 dual 4-bit addressable latch
74256 dual 4-bit addressable latch
74257 quad 2-line to 1-line data selector/multiplexer with noninverted three-state outputs
74258 quad 2-line to 1-line data selector/multiplexer with Inverted three-state outputs
74259 8-bit addressable latch
74260 dual 5-input NOR gate
74261 2-bit by 4-bit parallel binary multiplier
74264 look ahead carry generator
74265 quad complementary output elements
74266 quad 2-input XNOR gate with open collector outputs
74268 hex d-type latches three-state outputs, common output control, common enable
74270 2048-bit (512×4) read only memory with open collector outputs
74271 2048-bit (256×8) read only memory with open collector outputs
74273 8-bit register with reset
74274 4-bit by 4-bit binary multiplier
74275 7-bit slice Wallace tree
74276 quad J-Not-K edge-triggered Flip-Flops with separate clocks, common preset and clear
74278 4-bit cascadeable priority registers with latched data inputs
74279 quad set-reset latch
74280 9-bit odd/even Parity bit Generator/checker
74281 4-bit parallel binary accumulator
74282 look-ahead carry generator with selectable carry inputs
74283 4-bit binary Full adder
74284 4-bit by 4-bit parallel binary multiplier (low order 4 bits of product)
74285 4-bit by 4-bit parallel binary multiplier (high order 4 bits of product)
74286 9-bit parity generator/checker with bus driver parity I/O port
74287 1024-bit (256×4) programmable read-only memory with three-state outputs
74288 256-bit (32×8) programmable read-only memory with three-state outputs
74289 64-bit (16×4) RAM with open collector outputs
74290 decade counter (separate divide-by-2 and divide-by-5 sections)
74291 4-bit universal shift register, binary up/down counter, synchronous
74292 programmable frequency divider/digital timer
74293 4-bit binary counter (separate divide-by-2 and divide-by-8 sections)
74294 programmable frequency divider/digital timer
74295 4-bit bidirectional register with three-state outputs
74297 digital phase-locked-loop filter
74298 quad 2-input multiplexer with storage
74299 8-bit bidirectional universal shift/storage register with three-state outputs
74301 256-bit (256×1) random access memory with open collector output
74309 1024-bit (1024×1) random access memory with open collector output
74310 octal buffer with Schmitt trigger inputs
74314 1024-bit random access memory
74319 64-bit random access memories 16×4 open collector outputs
74320 crystal controlled oscillator
74321 crystal-controlled oscillators with F/2 and F/4 count-down outputs
74322 8-bit shift register with sign extend, three-state outputs
74323 8-bit bidirectional universal shift/storage register with three-state outputs
74324 voltage controlled oscillator (or crystal controlled)
74340 octal buffer with Schmitt trigger inputs and three-state inverted outputs
74341 octal buffer with Schmitt trigger inputs and three-state noninverted outputs
74344 octal buffer with Schmitt trigger inputs and three-state noninverted outputs
74347 bcd to seven segment decoders/drivers open collector outputs, low voltage version of 7447
74348 8 to 3-line priority encoder with three-state outputs
74350 4-bit shifter with three-state outputs
74351 dual 8-line to 1-line data selectors/multiplexers with three-state outputs and 4 common data inputs
74352 dual 4-line to 1-line data selectors/multiplexers with inverting outputs
74353 dual 4-line to 1-line data selectors/multiplexers with inverting three-state outputs
74354 8 to 1-line data selector/multiplexer with transparent latch, three-state outputs
74355 8-line to 1-line data selector/multiplexer with transparent registers, open-collector outputs
74356 8 to 1-line data selector/multiplexer with edge-triggered register, three-state outputs
74357 8-line to 1-line data selectors/multiplexers/edge-triggered registers, open-collector outputs
74361 bubble memory function timing generator
74362 four-phase clock generator/driver
74363 octal three-state D-latches
74365 hex buffer with noninverted three-state outputs
74366 hex buffer with Inverted three-state outputs
74367 hex buffer with noninverted three-state outputs
74368 hex buffer with Inverted three-state outputs
74370 2048-bit (512×4) read-only memory with three-state outputs
74371 2048-bit (256×8) read-only memory with three-state outputs
74373 octal transparent latch with three-state outputs
74374 octal register with three-state outputs
74375 quad bistable latch
74376 quad J-Not-K flip-flop with common clock and common clear
74377 8-bit register with clock enable
74378 6-bit register with clock enable
74379 4-bit register with clock enable and complementary outputs
74380 8-bit multifunction register
74381 4-bit arithmetic logic unit/function generator with generate and propagate outputs
74382 4-bit arithmetic logic unit/function generator with ripple carry and overflow outputs
74384 8-bit by 1-bit two’s complement multipliers
74385 quad 4-bit adder/subtractor
74386 quad 2-input XOR gate
74387 1024-bit (256×4) programmable read-only memory with open collector outputs
74388 4-bit register with standard and three-state outputs
74390 dual 4-bit decade counter
74393 dual 4-bit binary counter
74395 4-bit universal shift register with three-state outputs
74396 octal storage registers, parallel access
74398 quad 2-input multiplexers with storage and complementary outputs
74399 quad 2-input multiplexer with storage
74405 1 to 8 decoder, equivalent to Intel 8205, only found as UCY74S405 so might be non-TI number
74408 8-bit parity tree
74412 multi-mode buffered 8-bit latches with three-state outputs and clear
74422 re-triggerable mono-stable multivibrators, two inputs
74423 dual retriggerable monostable multivibrator
74424 two-phase clock generator/driver
74425 quad gates with three-state outputs and active low enables
74426 quad gates with three-state outputs and active high enables
74428 system controller for 8080a
74436 line driver/memory driver circuits – mos memory interface, damping output resistor
74437 line driver/memory driver circuits – mos memory interface
74438 system controller for 8080a
74440 quad tridirectional bus transceiver with noninverted open collector outputs
74441 quad tridirectional bus transceiver with Inverted open collector outputs
74442 quad tridirectional bus transceiver with noninverted three-state outputs
74443 quad tridirectional bus transceiver with Inverted three-state outputs
74444 quad tridirectional bus transceiver with Inverted and noninverted three-state outputs
74445 bcd-to-decimal decoders/drivers
74446 quad bus transceivers with direction controls
74447 bcd-to-seven-segment decoders/drivers, low voltage version of 74247
74448 quad tridirectional bus transceiver with Inverted and noninverted open collector outputs
74449 quad bus transceivers with direction controls, true outputs
74450 16-to-1 multiplexer with complementary outputs
74451 dual 8-to-1 multiplexer
74452 dual decade counter, synchronous
74453 dual binary counter, synchronous
74453 quad 4-to-1 multiplexer
74454 dual decade up/down counter, synchronous, preset input
74455 dual binary up/down counter, synchronous, preset input
74456 NBCD (Natural binary coded decimal) adder
74460 bus transfer switch
74461 8-bit presettable binary counter with three-state outputs
74462 fiber-optic link transmitter
74463 fiber-optic link receiver
74465 octal buffer with three-state true outputs
74466 octal buffers with three-state inverted outputs
74467 octal buffers with three-state true outputs
74468 octal buffers with three-state inverted outputs
74470 2048-bit (256×8) programmable read-only memory with open collector outputs
74471 2048-bit (256×8) programmable read-only memory with three-state outputs
74472 programmable read-only memory with open collector outputs
74473 programmable read-only memory with three-state outputs
74474 programmable read-only memory with open collector outputs
74475 programmable read-only memory with three-state outputs
74481 4-bit slice cascadable processor elements
74482 4-bit slice expandable control elements
74484 BCD-to-binary converter
74485 binary-to-BCD converter
74490 dual decade counter
74491 10-bit binary up/down counter with limited preset and three-state outputs
74498 8-bit bidirectional shift register with parallel inputs and three-state outputs
74508 8-bit multiplier/divider
74518 8-bit comparator with open collector output, input pull-up resistor
74519 8-bit comparator with open collector output
74520 8-bit comparator with inverted totem-pole output, input pull-up resistor
74521 8-bit comparator with inverted totem-pole output
74522 8-bit comparator with inverted open-collector output, input pull-up resistor
74526 fuse programmable identity comparator, 16 bit
74527 fuse programmable identity comparator, 8 bit + 4 bit conventional Identity comparator
74528 fuse programmable Identity comparator, 12 bit
74531 octal transparent latch with 32 ma three-state outputs
74532 octal register with 32 ma three-state outputs
74533 octal transparent latch with inverting three-state outputs
74534 octal register with inverting three-state outputs
74535 octal transparent latch with inverting three-state outputs
74536 octal register with inverting 32 ma three-state outputs
74537 BCD to decimal decoder with three-state outputs
74538 1 of 8 decoder with three-state outputs
74539 dual 1 of 4 decoder with three-state outputs
74540 inverting octal buffer with three-state outputs
74541 non-inverting octal buffer with three-state outputs
74544 non-inverting octal registered transceiver with three-state outputs
74558 8-bit by 8-bit multiplier with three-state outputs
74560 4-bit decade counter with three-state outputs
74561 4-bit binary counter with three-state outputs
74563 8-bit d-type transparent latch with inverting three-state outputs
74564 8-bit d-type edge-triggered register with inverting three-state outputs
74568 decade up/down counter with three-state outputs
74569 binary up/down counter with three-state outputs
74573 octal D-type transparent latch with three-state outputs
74574 octal D-type edge-triggered flip-flop with three-state outputs
74575 octal D-type flip-flop with synchronous clear, three-state outputs
74576 octal D-type flip-flop with inverting three-state outputs
74577 octal D-type flip-flop with synchronous clear, inverting three-state outputs
74580 octal transceiver/latch with inverting three-state outputs
74589 8-bit shift register with input latch, three-state outputs
74590 8-bit binary counter with output registers and three-state outputs
74591 8-bit binary counters with output registers, open-collector outputs
74592 8-bit binary counter with input registers
74593 8-bit binary counter with input registers and three-state outputs
74594 8-bit shift registers with output latches
74595 8-bit shift registers with output latches, three-state parallel outputs
74596 8-bit shift registers with output latches, open-collector parallel outputs
74597 8-bit shift registers with input latches
74598 8-bit shift register with input latches
74599 8-bit shift registers with output latches, open-collector outputs
74600 dynamic memory refresh controller, transparent and burst modes, for 4K or 16K drams
74601 dynamic memory refresh controller, transparent and burst modes, for 64K drams
74602 dynamic memory refresh controller, cycle steal and burst modes, for 4K or 16K drams
74603 dynamic memory refresh controller, cycle steal and burst modes, for 64K drams
74604 octal 2-input multiplexer with latch, high-speed, with three-state outputs
74605 latch, high-speed, with open collector outputs
74606 octal 2-input multiplexer with latch, glitch-free, with three-state outputs
74607 octal 2-input multiplexer with latch, glitch-free, with open collector outputs
74608 memory cycle controller
74610 memory mapper, latched, three-state outputs
74611 memory mapper, latched, open collector outputs
74612 memory mapper, three-state outputs
74613 memory mapper, open collector outputs
74618 Schmitt-trigger positive-nand gates with totem-pole outputs
74619 Schmitt-trigger inverters with totem-pole outputs
74620 octal bus transceiver, inverting, three-state outputs
74621 octal bus transceiver, noninverting, open collector outputs
74622 octal bus transceiver, inverting, open collector outputs
74623 octal bus transceiver, noninverting, three-state outputs
74624 voltage-controlled oscillator with enable control, range control, two-phase outputs
74625 dual voltage-controlled oscillator with two-phase outputs
74626 dual voltage-controlled oscillator with enable control, two-phase outputs
74627 dual voltage-controlled oscillator
74628 voltage-controlled oscillator with enable control, range control, external temperature compensation, and two-phase outputs
74629 dual voltage-controlled oscillator with enable control, range control
74630 16-bit error detection and correction (EDAC) with three-state outputs
74631 16-bit error detection and correction with open collector outputs
74632 32-bit parallel error detection and correction, three-state outputs, byte-write
74633 32-bit parallel error detection and correction, open-collector outputs, byte-write
74634 32-bit parallel error detection and correction, three-state outputs
74635 32-bit parallel error detection and correction, open-collector outputs
74638 octal bus transceiver with inverting three-state outputs
74639 octal bus transceiver with noninverting three-state outputs
74640 octal bus transceiver with inverting three-state outputs
74641 octal bus transceiver with noninverting open collector outputs
74642 octal bus transceiver with inverting open collector outputs
74643 octal bus transceiver with mix of inverting and noninverting three-state outputs
74644 octal bus transceiver with mix of inverting and noninverting open collector outputs
74645 octal bus transceiver
74646 octal bus transceiver/latch/multiplexer with noninverting three-state outputs
74647 octal bus transceiver/latch/multiplexer with noninverting open collector outputs
74648 octal bus transceiver/latch/multiplexer with inverting three-state outputs
74649 octal bus transceiver/latch/multiplexer with inverting open collector outputs
74651 octal bus transceiver/register with inverting three-state outputs
74652 octal bus transceiver/register with noninverting three-state outputs
74653 octal bus transceiver/register with inverting three-state and open collector outputs
74654 octal bus transceiver/register with noninverting three-state and open collector outputs
74658 octal bus transceiver with Parity, inverting
74659 octal bus transceiver with Parity, noninverting
74664 octal bus transceiver with Parity, inverting
74665 octal bus transceiver with Parity, noninverting
74668 synchronous 4-bit decade Up/down counter
74669 synchronous 4-bit binary Up/down counter
74670 4 by 4 register File with three-state outputs
74671 4-bit bidirectional shift register/latch /multiplexer with three-state outputs
74672 4-bit bidirectional shift register/latch/multiplexer with three-state outputs
74673 16-bit serial-in serial-out shift register with output storage registers, three-state outputs
74674 16-bit parallel-in serial-out shift register with three-state outputs
74677 16-bit address comparator with enable
74678 16-bit address comparator with latch
74679 12-bit address comparator with latch
74680 12-bit address comparator with enable
74681 4-bit parallel binary accumulator
74682 8-bit magnitude comparator
74683 8-bit magnitude comparator with open collector outputs
74684 8-bit magnitude comparator
74685 8-bit magnitude comparator with open collector outputs
74686 8-bit magnitude comparator with enable
74687 8-bit magnitude comparator with enable
74688 8-bit equality comparator
74689 8-bit magnitude comparator with open collector outputs
74690 three-state outputs
74691 4-bit binary counter/latch/multiplexer with asynchronous reset, three-state outputs
74692 4-bit decimal counter/latch/multiplexer with synchronous reset, three-state outputs
74693 4-bit binary counter/latch/multiplexer with synchronous reset, three-state outputs
74694 4-bit decimal counter/latch/multiplexer with synchronous and asynchronous resets, three-state outputs
74695 4-bit binary counter/latch/multiplexer with synchronous and asynchronous resets, three-state outputs
74696 4-bit decimal counter/register/multiplexer with asynchronous reset, three-state outputs
74697 4-bit binary counter/register/multiplexer with asynchronous reset, three-state outputs
74698 4-bit decimal counter/register/multiplexer with synchronous reset, three-state outputs
74699 4-bit binary counter/register/multiplexer with synchronous reset, three-state outputs
74716 programmable decade counter
74718 programmable binary counter
74724 voltage controlled multivibrator
74740 octal buffer/Line driver, inverting, three-state outputs
74741 octal buffer/Line driver, noninverting, three-state outputs, mixed enable polarity
74744 octal buffer/Line driver, noninverting, three-state outputs
74748 8 to 3-line priority encoder
74779 8-bit bidirectional binary counter (three-state)
74783 synchronous address multiplexer
74790 error detection and correction (EDAC)
74794 8-bit register with readback
74795 octal buffer with three-state outputs
74796 octal buffer with three-state outputs
74797 octal buffer with three-state outputs
74798 octal buffer with three-state outputs
74804 hex 2-input NAND drivers
74805 hex 2-input NOR drivers
74808 hex 2-input AND drivers
74822 10-bit bus interface flipflop with three-state outputs
74832 hex 2-input OR drivers
74848 8 to 3-line priority encoder with three-state outputs
74873 octal transparent latch
74874 octal d-type flip-flop
74876 octal d-type flip-flop with inverting outputs
74878 dual 4-bit d-type flip-flop with synchronous clear, noninverting three-state outputs
74879 dual 4-bit d-type flip-flop with synchronous clear, inverting three-state outputs
74880 octal transparent latchwith inverting outputs
74881 arithmetic logic unit
74882 32-bit lookahead carry generator
74888 8-bit slice processor
74901 hex inverting TTL buffer
74902 hex non-inverting TTL buffer
74903 hex inverting CMOS buffer
74904 hex non-inverting CMOS buffer
74905 12-Bit successive approximation register
74906 hex open drain n-channel buffers
74907 hex open drain p-channel buffers
74908 dual CMOS 30 V relay driver
74909 quad voltage comparator
74910 256×1 CMOS static RAM
74911 4 digit expandable display controller
74912 6 digit BCD display controller and driver
74914 hex schmitt trigger with extended input voltage
74915 seven segment to BCD decoder
74917 6 digit Hex display controller and driver
74918 dual CMOS 30 V relay driver
74920 256×4 CMOS static RAM
74921 256×4 CMOS static RAM
74922 16-key encoder
74923 20-key encoder
74925 4-digit counter/display driver
74926 4-digit counter/display driver
74927 4-digit counter/display driver
74928 4-digit counter/display driver
74929 1024×1 CMOS static RAM
74930 1024×1 CMOS static RAM
74932 phase comparator
74933 address bus comparator
74934 =ADC0829 ADC, see corresponding NSC datasheet
74935 3.5-digit digital voltmeter (DVM) support chip for multiplexed 7-segment displays
74936 3.75-digit digital voltmeter (DVM) support chip for multiplexed 7-segment displays
74937 =ADC3511 ADC, see corresponding NSC datasheet
74938 =ADC3711 ADC, see corresponding NSC datasheet
74941 octal bus/line drivers/line receivers
74945 4 digit up/down counter with decoder and driver
74947 4 digit up/down counter with decoder and driver
74948 =ADC0816 ADC, see corresponding NSC datasheet
74949 =ADC0808 ADC, see corresponding NSC datasheet
741005 hex inverting buffer with open-collector output
741035 hex noninverting buffers with open-collector outputs
742960 error detection and correction (EDAC)
742961 edac bus buffer, inverting
742962 edac bus buffer, noninverting
742968 dynamic memory controller
742969 memory timing controller for use with EDAC
742970 memory timing controller for use without EDAC
744002 dual 4-input NOR gate
744015 dual 4-bit shift registers
744016 quad bilateral switch
744017 5-stage ÷10 Johnson counter
744020 14-stage binary counter
744024 7 stage ripple carry binary counter
744028 BCD to decimal decoder
744040 12-stage binary ripple counter
744046 phase-locked loop and voltage-controlled oscillator
744049 hex inverting buffer
744050 hex buffer/converter (non-inverting)
744051 high-speed CMOS 8-channel analog multiplexer/demultiplexer
744052 dual 4-channel analog multiplexer/demultiplexers
744053 triple 2-channel analog multiplexer/demultiplexers
744059 programmable divide-by-N counter
744060 14-stage binary ripple counter with oscillator
744066 quad bilateral switches
744067 16-channel analog multiplexer/demultiplexer
744075 triple 3-input OR gate
744078 8-input OR/NOR gate
744094 8-bit three-state shift register/latch
744316 quad analog switch
744351 8-channel analog multiplexer/demultiplexer with latch
744353 Triple 2-channel analog multiplexer/demultiplexer with latch
744511 BCD to 7-segment decoder
744514 4-to-16 line decoder/demultiplexer with input latches
744520 dual 4-bit synchronous binary counter
744538 dual retriggerable precision monostable multivibrator
747007 hex buffer
747266 quad 2-input XNOR gate
7429841 10-bit bus-interface D-type latch with three-state outputs
7440103 presettable 8-bit synchronous down counter
7440105 4-bit by 16-word FIFO register

Posted on Leave a comment

Programming the ATTiny85

attiny85_pinout

In this post I will explain how to program am ATTiny25/45/85 MCU. I really like the AVR chips, they are powerful, have enough flash and sram memory and have a lot of build in I/O devices. And the chips come in many sizes that all have the same MCU kernel, but a different number of I/O pins and different Flash/Sram sizes. The ATTiny85 is what I use the most, it has the most flash af the 25/45/85 series and it is rather cheap. The chip has 6 programmeble I/O pins and that is enough for a lot of things. It does not have a serial Uart but if you really need this you can use the software Uart. To program this chip you will need a programming environment, I use Visuals Studio PlatformIO and the old but decent Arduino IDE. Fot beginners I would recommend the Arduino IDE as it is foolproof and easier. With PlatformIO you can control much more (like all the fuse settings in binary format) but if you do something wrong you can get totally unusable bricked MCU chips. On this page I describe an Arduino Uno as ISP programmer.

Arduino Uno as ISP

I have bought a lot of Arduino programmers when I first started and I had a lot of problems with them especially the Chinese clones. Then I discovered the Arduino Uno as ISP and build several shields for 8, 14 , 20 and 28 pins AVR chips. Because all the different sizes of chips have their programming pins on different pins and need the power pins also connected, I build several shields. But they are cheap to make. Hier is the schematic of the shield I use for the ATTiny25/45/85 processor.

I use a standard prototype shield and a ZIF header for this (8 pins zif are hard to get so I use a bigger one and put tape on the unused pins), then first upload the Arduino as ISP scketch to the Arduino Uno. Select the AruidnoISP sketch from the examples and select Arduino Uno as board.

Connect the Arduino Uno using the USB cable and select the correct port in the Tools settings. Then use the Upload button to upload the ArduinoISP sketch to the Arduino Uno and your ISP programmer is ready.

I hope this was clear, if you got anything to add to this post then let me know, regards, Hein Pragt.

Posted on Leave a comment

Programming the ATTiny2313

at90s2313

In this post I will explain how to program am ATTiny2313 / AT90S2313 MCU. I really like the AVR chips, they are powerful, have enough flash and sram memory and have a lot of build in I/O devices. And the chips come in many sizes that all have the same MCU kernel, but a different number of I/O pins and different Flash/Sram sizes. The ATTiny2313 (or the even cheaper AT90S2313) is just in the middle and I like to use this chip and it is not that expensive. To program this chip you will need a programming environment, I use Visuals Studio PlatformIO and the old but decent Arduino IDE. Fot beginners I would recommend the Arduino IDE as it is foolproof and easier. With PlatformIO you can control much more (like all the fuse settings in binary format) but if you do something wrong you can get totally unusable bricked MCU chips. On this page I describe an Arduino Uno as ISP programmer.

Arduino Uno as ISP

I have bought a lot of Arduino programmers when I first started and I had a lot of problems with them especially the Chinese clones. Then I discovered the Arduino Uno as ISP and build several shields for 8, 14 , 20 and 28 pins AVR chips. Because all the different sizes of chips have their programming pins on different pins and need the power pins also connected, I build several shields. But they are cheap to make. Hier is the schematic of the shield I use for the ATTiny2313 / AT90S2313 processor.

I use a standard prototype shield and a ZIF header for this, then first upload the Arduino as ISP scketch to the Arduino Uno. Select the AruidnoISP sketch from the examples and select Arduino Uno as board.

Connect the Arduino Uno using the USB cable and select the correct port in the Tools settings. Then use the Upload button to upload the ArduinoISP sketch to the Arduino Uno and your ISP programmer is ready.

I hope this was clear, if you got anything to add to this post then let me know, regards, Hein Pragt.

Posted on Leave a comment

Programming the ATMega32A

atmega32

In this post I will explain how to program am ATMega32A MCU. I really like the AVR chips, they are powerful, have enough flash and sram memory and have a lot of build in I/O devices. And the chips come in many sizes that all have the same MCU kernel, but a different number of I/O pins and different Flash/Sram sizes. If you really need a lot of I/O pins the ATMega32A is what you need, I like to use this chip and it is not that expensive. To program this chip you will need a programming environment, I use Visuals Studio PlatformIO and the old but decent Arduino IDE. Fot beginners I would recommend the Arduino IDE as it is foolproof and easier. With PlatformIO you can control much more (like all the fuse settings in binary format) but if you do something wrong you can get totally unusable bricked MCU chips. On this page I describe the Arduino IDE with an Arduino Uno as ISP programmer.

ARDUINO IDE

I really liked the Arduino IDE until the last versions. The (configuration / libraries) directories it uses are all over your disk and hard to find. That is why I recommend the portable arduino-1.8.19 version. This has all the files in a single directory. Install this version somewhere on your drive and it works out of the box. But out of the box it does not support the ATMega32 processors. There are several solutions that depend on your version of the Arduino IDE, find one that fits your IDE and install it. I have included this standard in my portable version of the Arduino IDE.

Arduino Uno as ISP

I have bought a lot of Arduino programmers when I first started and I had a lot of problems with them especially the Chinese clones. Then I discovered the Arduino Uno as ISP and build several shields for 8, 14 , 20 and 28 pins AVR chips. Because all the different sizes of chips have their programming pins on different pins and need the power pins also connected, I build several shields. But they are cheap to make. Hier is the schematic of the shield I use for the ATTin24 processor.

I use a standard prototype shield and a ZIF header for this, then first upload the Arduino as ISP scketch to the Arduino Uno. Select the AruidnoISP sketch from the examples and select Arduino Uno as board.

Connect the Arduino Uno using the USB cable and select the correct port in the Tools settings. Then use the Upload button to upload the ArduinoISP sketch to the Arduino Uno and your ISP programmer is ready.

Programming an ATMega32A

First we start by loading (or writing) the sourcecode file of the ATMega32 code in the programming language C in the Arduino IDE. Then go to the tools setting and select the correct device. Under tools select the configuration of the ATMega32A you will use, in my case an ATMega32 with external 16 Mhz clock.

// -----------------------------------------------
// Blink for ATMega32A
// H.M. Pragt 2022
// -----------------------------------------------

#ifndef F_CPU
#define F_CPU 16000000UL // 16 MHz clock speed
#endif

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRD = 0xFF; //Makes PORTD as Output
  while(1) //infinite loop
  {
    PORTD = 0xFF; //Turns ON All LEDs
    _delay_ms(2000); //1 second delay
    PORTD= 0x00; //Turns OFF All LEDs
    _delay_ms(2000); //1 second delay
  }
}

Now the last setting is selecting to use the ArduinoISP programmer:

Connect the Arduino Uno with the shield and the ATMega32A chip inserted to the computers and select upload button to program the code into the chip. As easy as that, happy programming.

I hope this was clear, if you got anything to add to this post then let me know, regards, Hein Pragt.

Posted on Leave a comment

Programming the ATTiny24

attiny24

In this post I will explain how to program am ATTiny24 (or 44,84) MCU. I really like the AVR chips, they are powerful, have enough flash and sram memory and have a lot of build in I/O devices. And the chips come in many sizes that all have the same MCU kernel, but a different number of I/O pins and different Flash/Sram sizes. I like to use the ATTiny85, it has 8 pins but of 6 I/O lines are enough this is a perfect MCU. The ATTiny2313 has 20 pins if you need more I/O lines, but the ATTiny24 has 14 pins and is cheap and has 12 programmable I/O lines. The small size with 12 I/O lines makes this one of my favorite AVR chips. To program this chip you will need a programming environment, I use Visuals Studio PlatformIO and the old but decent Arduino IDE. Fot beginners I would recommend the Arduino IDE as it is foolproof and easier. With PlatformIO you can control much more (like all the fuse settings in binary format) but if you do something wrong you can get totally unusable bricked MCU chips. On this page I describe the Arduino IDE with an Arduino Uno as ISP programmer.

ARDUINO IDE

I really liked the Arduino IDE until the last versions. The (configuration / libraries) directories it uses are all over your disk and hard to find. That is why I recommend the portable arduino-1.8.19 version. This has all the files in a single directory. Install this version somewhere on your drive and it works out of the box. But out of the box it does not support the ATTiny processors. Install a ATTiny core package like the https://github.com/damellis/attiny  (I used this one). On this website is also an installation manual so I recommend you follow this. After this you will have a Arduino IDE that can program ATTiny24 / 44 / 84  chips. I have included this standard in my portable version of the Arduino IDE.

Arduino Uno as ISP

I have bought a lot of Arduino programmers when I first started and I had a lot of problems with them especially the Chinese clones. Then I discovered the Arduino Uno as ISP and build several shields for 8, 14 , 20 and 28 pins AVR chips. Because all the different sizes of chips have their programming pins on different pins and need the power pins also connected, I build several shields. But they are cheap to make. Hier is the schematic of the shield I use for the ATTin24 processor.

I use a standard prototype shield and a ZIF header for this, then first upload the Arduino as ISP scketch to the Arduino Uno. Select the AruidnoISP sketch from the examples and select Arduino Uno as board.

Connect the Arduino Uno using the USB cable and select the correct port in the Tools settings. Then use the Upload button to upload the ArduinoISP sketch to the Arduino Uno and your ISP programmer is ready.

Programming an ATTiny24

First we start by loading (or writing) the sourcecode file of the ATTinty code in the programming language C in the Arduino IDE. Then go to the tools setting and select the correct device.

Then select the internal or external clock and the frequency.

Now the last setting is selecting to use the ArduinoISP programmer:

Connect the Arduino Uno with the shield and the ATTiny24A chip inserted to the computers and select upload button to program the code into the chip. As easy as that, happy programming.

I hope this was clear, if you got anything to add to this post then let me know, regards, Hein Pragt.

Posted on Leave a comment

Five way pushbutton latch

As a former hardware designer and embedded programmer I still like a little challenge. I design and build my own devices here are home but sometimes I get asked for a solution to a electronic design problem. When I was working as a designer there was always the challenge of my boss wanting to reduce the hardware, he said if you can fix it in software it will only cost me once, if you fix it in hardware it will cost me on every device. He could drive me crazy when he had been to the golf course and someone had convinced him to buy an even cheaper chip (that was not compatible most of the time) and I had to fix this in software. It created my way of thinking right now, be creative and use as less hardware resources as possible.

Someone asked me for a simple circuit that had five input pushbuttons and five output lines and when a button was pushed the corresponding output line had to go high. This is basically a latch function. There was one restriction, there may only be one output line active at the same time. You could create a circuit with traditional components but you would need a lot of resistors and diodes and transistors or a logical IC to do this. So a microcontroller option seemed the best solution. A PIC chip could do this, but I am not a big PIC fan, I like the AVR chips. My first idea was a ATTiny2313, as I had a few of them. This chip as an internal oscillator and internal pullups so a bare chip could do the job. I wrote some code using PlatformIO and downloaded that into a chip. It works as planned, the design and the code are below, there is also a zip file with the code of the PlatformIO project.

// -----------------------------------------------------
// Read 5 inputs and latch this input to the output
// Only one output can be active at the same time
// PA0 PA1  PD2 PD3 PD4 are inputs
// PB1 PB2 PB3 PB4 PB5  are outputs
// ------------------------------------------------------

#include <Arduino.h>

void setHigh(int prt);

// -----------------------------
// Init hardware
// -----------------------------

void setup() 
{
    PORTA = _BV(PA0) | _BV(PA1);             // Set input + pullup 
    PORTD = _BV(PD2) | _BV(PD3) | _BV(PD4);  // Set input + pullup 
    DDRB = 0xff; // All pins of portB as output
    setHigh(1);
}


// -----------------------------------
// Main loop scan inputs
// -----------------------------------
void loop() 
{
   while (-1) {     
     if (~PINA & 0x02) { 
        setHigh(1);
        continue;    // Prevent two keys at the same time
     } 
     if (~PINA & 0x01) { 
        setHigh(2);
        continue;
     } 
     if (~PIND & 0x04) { 
        setHigh(3);
        continue;
     }     
     if (~PIND & 0x08) { 
        setHigh(4);
        continue;
     }     
     if (~PIND & 0x10) {
        setHigh(5); 
        continue;
     }       
   }
}

// ------------------------------------
// Set one ouput high 1..5
// ------------------------------------
void setHigh(int prt) 
{
   PORTB = 0; // All off
   switch(prt) {
    case 1: PORTB |= 0x20;
            break; 
    case 2: PORTB |= 0x10;
            break; 
    case 3: PORTB |= 0x08;
            break;             
    case 4: PORTB |= 0x04;
            break; 
    case 5: PORTB |= 0x02;
            break; 
   } 
}

Even smaller design

Then my old habit started to come up and I saw the unused pins and thought this is a shame, a ATTiny24A with only 14 pins could do the same. So I went back to the beginning and rewired the breadboard for a ATTiny24A. I created a new project in PlatformIO and reused the old code. This also works, so you can use whatever chip is cheaper, both do the same.  This design and the code are also below, there is also a zip file with the code of the PlatformIO project.  These designs and code are free to use, there is no copyright.  

// -----------------------------------------------------
// Read 5 inputs and latch this input to the output
// Only one output can be active at the same time
// PB0 PB1 PB2 PA7 PA6 are inputs
// PA1 PA2 PA3 PA4 PA5  are outputs
// ------------------------------------------------------

#include <Arduino.h>

void setHigh(int prt);

// -----------------------------
// Init hardware
// -----------------------------

void setup() 
{
    PORTB = _BV(PB0) | _BV(PB1) |_BV(PB2);  // Set input + pullup 
    PORTA = _BV(PA7) | _BV(PA6);  // Set input + pullup 
    DDRA = 0x3f; // All pins of portA as output exept 6 and 7
    setHigh(1);
}


// -----------------------------------
// Main loop scan inputs
// -----------------------------------
void loop() 
{
   while (-1) {     
     if (~PINB & 0x01) { 
        setHigh(1);
        continue;    // Prevent two keys at the same time
     } 
     if (~PINB & 0x02) { 
        setHigh(2);
        continue;
     } 
     if (~PINB & 0x04) { 
        setHigh(3);
        continue;
     }     
     if (~PINA & 0x80) { 
        setHigh(4);
        continue;
     }     
     if (~PINA & 0x40) {
        setHigh(5); 
        continue;
     }       
   }
}

// ------------------------------------
// Set one ouput high 1..5
// ------------------------------------
void setHigh(int prt) 
{
   PORTA &= 0xC0; // All off
   switch(prt) {
    case 1: PORTA |= 0x02;
            break; 
    case 2: PORTA |= 0x04;
            break; 
    case 3: PORTA |= 0x08;
            break;             
    case 4: PORTA |= 0x10;
            break; 
    case 5: PORTA |= 0x20;
            break; 
   } 
}

Arduino Uno based ISP shield

To program the ATTiny24 you will need to have an ISP programmer, I have designed several shields for different AVR processors, this is the shield I designed and build for the ATTiny24.

Have fun using this in your own way or as inspiration, regards, Hein Pragt

Posted on Leave a comment

Basic knowledge Cmos ic’s

cmos

I didn’t really like Cmos ICs when I was young, mainly because (at that time) they often broke down quickly due to static electricity. I preferred to use the more robust TTL ICs and in most computer circuits I also usually saw TTL instead of Cmos, except for the processors. On this page I tell you more about CMOS ICs. CMOS ICs contain digital circuits and can be used for more purposes than one might think at first glance. When CMOS circuits were first introduced in the 1970s, they were much more expensive than the other logic families, but this is no longer the case and they are almost the cheapest of all. Simple CMOS ICs are often cheaper than normal transistors.

Older TTL ICs have a few disadvantages, they have a relatively large power consumption, the supply voltage is quite critical (5 v 10%) and the input impedance is quite low, on the order of a few hundred ohms. CMOS ICs have none of these disadvantages and they consume very little power and simple gate circuits consume virtually no power when in a static state. The supply voltage for most CMOS ICs is between 3 Volt and 15 Volt. The input impedance of a CMOS IC is very high, on the order of 1,000,000 megohm. For most applications this can be considered infinitely high. CMOS circuits are therefore voltage rather than current controlled.

Construction of the CMOS circuit

 The simplest CMOS circuit is the inverter, which consists of only two active parts. The output of this circuit also has only two stable states “high” and “low” and the operation of the circuit is easy to understand. The output must be at the opposite level as the input.

This inverter contains a P-channel IGFET (insulated gate field effect transistor) and an N-channel IGFET. The input is either ‘high’ when its potential is near the positive supply voltage, or ‘low’ when the potential is near the negative supply voltage. These states are also called logic “1 and logic 0 respectively. An IGFET has a very large drag-source resistance when the voltage on the gate is the same as that on the source. In this circuit, only one of the two IGFETs can be conductive and thus inverts the input voltage level.

This might give the impression that the circuit consumes no current at all, but this is not the case, transistors are not perfect switches, they have a resistance of a few hundred ohms when conducting and thousands of megohms when cut off. So a very small current also flows through a static inverter. Only a small current pulse is created in the circuit when it changes state. Although Cmos ICs can only supply a small current at the output, they still have a large fanout when using other Cmos ISs because the required input current is negligible.

Security of cmos circuits

As most readers will probably know, IGFETs are easily damaged by the high voltages of static charge. Even someone wearing a nylon shirt can be the cause of damaging an IGFET which could give the impression that Cmos ICs are very delicate and almost unusable. The reality is that all current CMOS ICs are internally equipped with protection diodes, which limit the voltage on inputs to a safe value. However, it is recommended to follow a few simple rules when dealing with CMOS ICs. The ICs are usually supplied with the connection pins inserted in a piece of conductive foam and it is best to leave the IC in this foam until it is actually needed. Never remove an IC from the base when the power supply is still on and preferably wear a grounded bracelet when working with CMOS ICs.

Posted on Leave a comment

Basiskennis Cmos ic’s

cmos

Ik hield niet zo van Cmos Ic’s toen ik jong was, vooral omdat ze (in die tijd) vaak snel stuk gingen door statische elektriciteit Ik gebruikte liever de meer robuuste TTL Ic’s en in de meeste computerschakelingen zag ik ook meestal TTL in plaats van Cmos, behalve bij de processoren. Op deze pagina vertel ik wat meer over Cmos ic’s.  Cmos ic’s bevatten digitale schakelingen en kunnen voor meer doeleinden gebruikt worden dan men op het eerste gezicht zou denken. Toen in de jaren zeventig voor het eerst Cmos schakelingen werden geïntroduceerd, waren zij veel duurder dan de andere logica-families, nu is dat niet meer zo en zijn zij bijna het goedkoopst van allemaal. Eenvoudige Cmos ic’s zijn zelfs vaak goedkoper dan normale transistoren.

Oudere TTL IC’s hebben een paar nadelen, ze hebben een relatief groot stroomverbruik, de voedingsspanning is nogal kritisch (5 v 10%) en de ingangsimpedantie is nogal laag, in de orde van een paar honderd ohm.  Cmos ic’s hebben geen van deze nadelen en ze verbruiken zeer weinig stroom en eenvoudige poortschakelingen verbruiken nagenoeg geen vermogen, wanneer zij in een statische toestand verkeren. De voedingsspanning is voor de meeste Cmos ic’s tussen de 3 Volt en de 15 Volt.  De ingangsimpedantie van een Cmos ic is erg groot en wel in de orde van 1.000.000 megohm. Voor de meeste toepassingen kan dit als oneindig hoog worden beschouwd. Cmos schakelingen zijn dus eerder spanning- dan stroom gestuurd.

Opbouw van de Cmos schakeling

 De meest eenvoudige Cmos schakeling is de inverter die uit slechts twee actieve onderdelen bestaat. De uitgang van deze schakeling kent ook slechts twee stabiele toestanden “hoog” en “laag” en de werking van de schakeling is gemakkelijk te begrijpen. De uitgang moet het tegenovergestelde niveau hebben als de ingang.

Deze inverter bevat een P-channel IGFET (insulated gate field effect transistor) en een N-channel IGFET. De ingang is of ‘hoog’ wanneer de potentiaal ervan in de nabijheid van de positieve voedingsspanning ligt, of “laag’ wanneer de potentiaal in de buurt van de negatieve voedingsspanning ligt. Deze toestanden worden ook wel logisch “1 respectievelijk logisch 0 genoemd. Een IGFET heeft een zeer grote draln-source weerstand, wanneer de spanning op de gate dezelfde is als die op de source. In deze schakeling kan slechts één van de twee IGFET’s in geleidende toestand zijn en keren ze het niveau van de ingang spanning dus om.

Men zou hierdoor de indruk kunnen krijgen  dat de schakeling helemaal geen stroom verbruikt, maar dit is niet het geval, transistoren zijn geen volmaakte schakelaars, ze hebben een weerstand van een paar honderd ohm wanneer ze in geleiding zijn en van duizenden megohm wanneer ze sperren. Er loopt dus ook door een statische inverter een zeer kleine stroom. Er ontstaat slechts een kleine stroomimpuls in de schakeling wanneer deze van toestand verandert. Hoewel Cmos IC’s aan de uitgang slechts een kleine stroom kunnen leveren, hebben zij toch een grote ‘fanout’ bij gebruik van andere Cmos IS’s  omdat de vereiste ingangsstroom te verwaarlozen is.

Beveiliging van cmos schakelingen

Wat de meeste lezers waarschijnlijk wel zullen weten worden IGFETs gemakkelijk beschadigd door de  hoge spanningen van statische lading. Zelfs iemand met een nylon shirt kan de oorzaak vormen van het beschadigen van een IGFET wat de indruk zou kunnen wekken dat Cmos IC’s erg teer en bijna niet bruikbaar zijn. De werkelijkheid is dat alle huidige Cmos IC’s intern zijn voorzien van beveiligingsdioden, die de spanning op ingangen tot een veilige waarde begrenzen.  Toch is het aan te bevelen een paar eenvoudige regels te volgen, wanneer men met Cmos ic’s omgaat. De ic’s worden meestal geleverd met de aansluitpennen gestoken in een stukje geleidend schuim en het best kan men het ic in dit schuim laten totdat men het werkelijk nodig heeft. Verwijder een IC nooit uit de voet wanneer de voedingsspanning nog is ingeschakeld en draag bij voorkeur een geaard armbandje wanneer u met Cmos Ic’s werkt.

Posted on Leave a comment

Arduino Scrolling Led Display

Arduino Uno Led Header

I build myself a scrolling led message board and every Christmas and new year I have this in my front window to greet the people in front of my house. Every year I reprogram the Arduino Uno with the wishes I want to display. I has become kind of a tradition here. I used an Arduino Uno (clone) and six MAX7219 based LED Matrix Displays forming a 192 x 8 led area. I chose these number of displays because it would fit my window, but the number of displays you want to use is not limited. When a line is displayed it will scroll on the display from right to left and when the display is fully filled it will scroll on until the whole message is displayed. Then it will wait for a few seconds, clear the display with animation and start a random new message. On this page you can find the hardware and the software for this project. Regards, Hein Pragt

What components do you need?

  • An Arduino Uno board; (Nano will also work)
  • MAX7219 LED Matrix Display 8×32 (2 – 8);
  • 5V DC Power supply at least 3A;
  • Board to build on;
Arduino Uno Led Display1

For my version I used an Arduino Uno clone but an Arduino Nano would also be possible, you would have to find the SPI and SS lines for the Nano yourself. I mounted the led displays on a wooden board with stands and the Arduino Uno at the back. In my first design I included a power supply board (the power supply of the Arduino is by far not sufficient) but in the end it was better to use a switching external power supply of 5V DC to feed the Arduino (Vin) and the Led displays. The led displays will take a lot of current, so more displays means a more powerful power supply.

Arduino Uno Led Display2

The connections are very easy, just two power lines and three SPI lines. The Matrix units come in 8×8 times four on a single board, with holes for the connectors at both sides. What I did was lift off the two outer displays, mount the base board on the wooden board and then connect the connector holes with small wires. This is more reliable and you can fit the display units tight together. Look close at the position of the led matrix boards and put them all in the same position. (Also look carefully when putting the displays back on).

The software

I personally do not like to use Arduino libraries, you have to find the correct one and the correct version or it will not work or give compile errors. So what I did was write the whole driver code myself. The whole Arduino project contains two files, the ledmatrix.ino and a 8×8 font include file. In the sourcecode there is an array of messages, you can fill them as you need, they will be stored in flash so there is (almost) no limit to the size. In the top of the code you can define how many displays you have connected (the number of 8×8 blocks), the code will adjust to this automatically. I give you the full sourcecode you can modify it yourself if you want to. The download link is at the bottom of the page. If you need hardware you can visit my webshop.

Arduino Uno Led Display3

Download

More pages on embedded software

[catlist name=”Embedded software”]

Posted on Leave a comment

ESP8226 WIFI led control

Wifi Light

ESP8226 Microcontroller The ESP8226 is a very cheap Wi-Fi microcontroller with a complete TCP/IP stack and a 32 bit microcontroller and is made by the Chinese manufacturer Espressif Systems. The chip came to attention in 2014 by a small board (ESP-01) as a cheap Wi-Fi module that could be controlled via a serial interface and through a form of Hayes commands. Soon the chip came to the attention of hackers, mainly due to its low cost, to find other uses. For the low amount of money, the specifications are impressive: a 32-bit RISC CPU (Tensilica Xtensa LX106) with an 80 MHz clock frequency, 64 Kb instruction RAM, 96 KB data RAM, external QSPI flash (512 Kb to 4 Mb), built-in IEEE 802.11 Wi-Fi stack, WEP and WPA/WPA2 authentication, 16 GPIO pins, SPI, I2C, UART and a 10-bit ADC. There are some nice cheap DIY boards for sale with this microcontroller and this page contains information about these boards, documentation, links and specifications, and development tooling. Also a full working sourcecode of a WIFI led controller. Sincerely, Hein Pragt

Wemos D1 mini

Wemos D1A relatively small manufacturer by the name of Wemos brings out nice new developments with the ESP-8266 family on Arduino type shields. One of these fun boards to experiment with yourself is the Wemos D1 mini, a small board equipped with a full Wi-Fi and network stack, a nice number of I/O ports, power supply, a USB connection, serial communication, bootloader, Flash memory and a 32 bit processor with an 80 MHz clock frequency. As in all very nice specifications for a board that costs less than 10 dollar. When you are already used to the standard Arduino IDE and programming environment, you can also use this for the Wemos D1. The correct boards have to be installed in the board manager of the IDE, but then it works almost immediately. There are already many libraries specifically for the ESP-8266 family available for the Wemos D1 mini but I find that many of the standard libraries written for the Arduino also work fine on the Wemos D1 mini. Because I2C and SPI also work standard, many of the boards and shields that are made for the Arduino can also be connected, please note that everything must work on 3v3, but this can also be solved with a level adjustment board or a resistance network. But a standard LCD display or a relay board can easily be connected. Sometimes a few I/O pins have to change definitions and often it works fine. But with 4 Mb of code space and 35 Kb of ram and a 32 bit processor at 80 MHz which is a huge improvement over the 16 MHz 8 bit Arduino processor with 1 to 2 Kb sram. The possibilities of the Wemos D1 mini are therefore very extensive, partly due to the built-in Wi-Fi that you can use ready-to-use.

Link: PDF with instructions for the Wemos D1 on the Arduin IDE.

Wemos OLED display

Wemos D1 Mini Oled DisplayThe first display I used is the WeMos D1 mini OLED shield 64×48 of 0.66 inch with an I2C interface. The shield has many more pins because it can also be controlled differently but of course we like to use I2C because it only uses two I/O lines. At 0.66inch it is quite a small display but is very easy to read as it has a high contrast. It uses the SSD1306 as the interface chip and uses the I2C address 0x3C or 0x3D which can be selected by a solder bridge on the back of the PCB. Very small, so I don’t dare and leave them at the default value. The device was delivered with separate header pins and since you only have 4 connections If you need it, you can also solder the wires directly to the PCB.

Code and example

Wemos D1 Mini Met Oled DisplayDownload: HERE my library for the Wemos D1 OLED display and install it via the IDE in your Arduino environment. Restart the IDE and look at the examples and see it says “oledtest64.ino”. The library works for the combination Wemos D1 and the Wemos OLED display. I also use this library myself and develop it further. With these basic functions you can create extensions in your own code.

I like libraries that only offer basic functions because I usually want to make things in my own way, which are just not in the library or just different which means I am compiling a large amount of code from a library that grows my code and is of no use to me. I wish good luck with this code.

The code of this libray is compact and contains only a few basic functions:


  public:
    Ssd1306(uint8_t i2caddr,uint8_t width,uint8_t height,uint8_t orientation);
    void begin(void); 
    void oledSetPixel(int16_t x, int16_t y, uint16_t color);
    void oledDrawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
    void oledDrawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledDrawCircle(int16_t x0, int16_t y0, int16_t r,uint16_t color);
    void oledDrawChar(int16_t x, int16_t y, unsigned char c, uint16_t color);
    void oledPrintLine(int16_t x, int16_t y, unsigned char *c, uint16_t color);
    void oledInvert(void); 
    void oledNormal(void);
    void oledCopyDisplayBuffer(void);
    void oledClearDisplayBuffer(uint8_t value);

The displays can actually show only a little text, with a font of 5×7 this is the division on the screen and a resolution of 64 x 48 pixels, this gives ten columns and 5 rows, so you can effectively lose 50 characters on the screen.

Oled Text Size 1

Sourcecode Wi-Fi led control

This piece of sample code clearly shows the tremendous power of the Wemos D1 mini. The example uses my OLED library and otherwise only use standard supplied / built-in parts. Through this piece of code you can use your mobile phone via the web browser to find an output pin of the Wemos D1 mini module (read: connected relay) on and off. In this example I control the built-in LED. Since the more complete Wi-Fi stack and network stack are in the module as far as we don’t write our own code for this. First you make on your phone to a mobile hotspot and gives it a name and a password, you enter this name and password at const char* ssid and const char* password after which you can compile the code and upload it in the Wemos module. After turning on of the module, it will try to contact your mobile hotspot and then display its IP address on the screen. You then only need to enter this address in the address bar of the browser on your mobile phone and the Wemos module will now behave like an HTTP server and send you a page with the status of the led. Then you can click on a click on the links or switch the LED on the Wemos module on and off by means of a URL parameter. This is just a small example that can be food for many ideas, but I leave that to your imagination. kind regards, Hein Pragt.

// -----------------------------------------------
// Example code WI-FI led control
// -----------------------------------------------
#include 
#include 
#include 

const char* ssid = "HotspotVanUwTelefoon";
const char* password = "WachtwoordHotspotTelefoon";

int ledPin = BUILTIN_LED;
WiFiServer server(80);

Ssd1306 ssd1306(0x3C,64,48,0);

void setup() 
{
String ip;
char buffer[20];

  Serial.begin(9600);
  delay(10);  

  ssd1306.begin(); 
  // Clear the buffer.
  ssd1306.oledClearDisplayBuffer(0);
  ssd1306.oledCopyDisplayBuffer();

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);

  // Connect to WiFi network
  ssd1306.oledPrintLine(0,0,"Connecting",1);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  ssd1306.oledPrintLine(0,10,(char *)ssid,1); 
  ssd1306.oledCopyDisplayBuffer();

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  ssd1306.oledClearDisplayBuffer(0);
  Serial.println("WiFi connected");
  ssd1306.oledPrintLine(0,0,"Connected ",1);
  ssd1306.oledCopyDisplayBuffer();

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL : ");
  ssd1306.oledPrintLine(0,10,"MY IP:",1);
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  ip = WiFi.localIP().toString();
  ip.toCharArray(buffer, 20);
  ssd1306.oledPrintLine(0,20,buffer,1);
  Serial.println("/");
  ssd1306.oledCopyDisplayBuffer();
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request

  int value = HIGH;
  if (request.indexOf("/LED=ON") != -1) {
    digitalWrite(ledPin, LOW);
    value = LOW;
  } 
  if (request.indexOf("/LED=OFF") != -1){
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }



  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("");
  client.println("");

  client.print("Led pin is now: ");

  if(value == LOW) {
    client.print("On");  
  } else {
    client.print("Off");
  }
  client.println("

"); client.println("Click here turn the LED on pin 5 ON
"); client.println("Click here turn the LED on pin 5 OFF
"); client.println(""); delay(1); Serial.println("Client disconnected"); Serial.println(""); }

ESP8226 download and links

Here are some external links to pages and documents that will be helpful and helpful when getting started with the ESP8226.

More pages on embedded software

[catlist name=”Embedded software”]

Posted on 1 Comment

ESP32 based WIFI internet radio

Internet Radio Logo

A nice feature of the Internet is online radio (also web radio, net radio, streaming radio, e-radio, IP radio, Internet radio). These are digital audio services transmitted via the Internet. Broadcasting on the Internet is usually referred to as webcasting since it is not transmitted broadly through wireless means. Internet radio involves streaming media, presenting listeners with a continuous stream of audio that typically cannot be paused or replayed, much like traditional broadcast media. The first Internet radio service was launched in 1993. Nowadays most popular radio stations also have an Internet radio stream and there are a lot of specialized radio stations, for instance I really like outlaw country music, and I have a few nice stations in the USA. Kind regards, Hein Pragt.

Building and ESP32 internet radio

So building an Internet radio is not that hard, we need a HTTP stack and a MP3 decoder. Both are available at a very good price, and we also add a simple display and a button to select a station. I have a 3D printer so I created a nice case as well. Lets start with the part list:

  • A VS1053 MP3 codec board;
  • ESP32 board (I used a WROOM version);
  • OLED 64*128 display module I2C;
  • Push button;
  • 10 K resistor;

Oled Display Module 0.96 128×64 I2C

Ssd1306 I2c Oled DisplayThe display I used is a fairly standard OLED cheap display with white pixels, a resolution of 128 x 64 pixels and a control by means of I2C by the the SSD1306 driver IC. This shield also only needs two data lines and it consumes minimal current so that it can also be used in projects that need to be powered by a battery or battery. The size of this screen is slightly larger than the previous one and measures 26.0 x 15.0 mm. The module runs on 3v3 and can be connected to the outputs of the 3v3 output of the ESP32 and the I2C lines do not need voltage converters. The I2C address of this OLED shield is 0x3C by default. The screen is very clearly readable due to a very high contrast. The SSD1306 is a single-chip CMOS OLED/PLED driver with controller for displays with a maximom resolution of 128 x 64. The IC contains a display controller with display RAM and a built-in oscillator so that it can be used with minimal external components. It has a built-in 256 steps brightness control. It has a 6800/8000 series compatible Parallel Interface and a I2C interface.

VS1053 MP3 codec board

Vs1053The VS1003 audio codec module is a complete MP3/WMA/MIDI audio decoder and ADPCM encoder that features a high quality stereo DAC (Digital to Analog Converter), a 16-bit adjustable ADC (Analog to Digital Converter) and a high quality stereo earphone driver (30 ohms). This module is ideal for adding audio decoding and encoding capabilities to embedded systems. It has a serial data and control interface (SPI) that makes it easy to connect to the ESP32 or any othe board that has an SPI interface. It also has a headphone and audio output interface and a microphone for recording but we cont be using this. It supports MP3 and WAV stream and has a single 5 V power supply that is On-board converted to 3.3 V and 2.5 V for the chips on the board and it uses about 800 mA. When we feed it with 32 bytes chunks of audio data, it will decode and output the audio trough the headphone jack. We can connect this to an amplifier to play it on a stereo set or PC speaker set.

ESP32 connections

Esp Pins Radio

ESP32 internet radio shematics

Esp Radio Schematic

Connecting everything up is not that hard, although the pins on the ESP32 are very hard to read because the text is very small. Also check the pins of the ESP32 board you have, I have noticed some difference in different boards. The name of the pin is the clue you have to follow. The entire device is powered through the micro-usb port of the ESP32. Load the code in the Arduino IDE (you have to make sure it supports the ESO32 first) and you may have to download some additional libraries like the “ESP_VS1053_Library-master” and the “esp8266-oled-ssd1306-master” library. Find the place in the code where you have to put your WIFI network name and password and compile the code.

After uploading the software it will say a welcome phrase and then connect to the WIFI. It will remember the last station you selected and then start streaming the MP3 data to the MP3 codec and you will hear the internet radio station. I really like this little device and I have filled the array in the source code with a few radio stations, you can delete and add your own, as you like and personalize the device. Have fun.

The ESP32 sourcecode

Do not copy and paste, the download link is below the listing!

// ----------------------------------------------------------------
// ESP32 + VS1053  Internet radio
// Hein Pragt 2022
//
// VS1053 - connections 
// XRST = EN (D3)
// MISO = D19
// MOSI = D23
// SCLK = D18
// VCC = 5V / 3.3 V  and  Gnd = Gnd 
// ----------------------------------------------------------------

#include <VS1053.h> 
#include <Preferences.h> 
#include "StartMp3.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <esp_wifi.h>
#include "SSD1306.h"

char ssid[] = "your wifi ssid";
char pass[] = "your wifi password";

Preferences preferences;
SSD1306     display(0x3c, 21,22);
WiFiClient  client;

unsigned int counter,old_counter;
int change = 13;
bool pinflag = true;
int status = WL_IDLE_STATUS;
uint8_t mp3buffer[128]; 

struct _stationList {
  char sname[64];
  char host[128];
  char path[128];
  int  port;
} stationList[] = {
{ "NPO Radio 1 " ,   "icecast.omroep.nl", "/radio1-bb-mp3", 80 },
{ "NPO Radio 2 " ,   "icecast.omroep.nl", "/radio2-bb-mp3", 80 },
{ "NPO 2 S & J " ,   "icecast.omroep.nl", "/radio6-bb-mp3", 80 },
{ "NPO 3FM     " ,   "icecast.omroep.nl", "/3fm-bb-mp3", 80 },
{ "NPO 3FM Alt " ,   "icecast.omroep.nl", "/3fm-alternative-mp3", 80 },
{ "NPO Radio 5 " ,   "icecast.omroep.nl", "/radio5-bb-mp3", 80 },
{ "538 Radio   " ,   "20073.live.streamtheworld.com", "/RADIO538.mp3", 80 },
{ "QMusic      " ,   "icecast-qmusicnl-cdp.triple-it.nl", "/Qmusic_nl_live.mp3", 80 },
{ "Radio 10    " ,   "25533.live.streamtheworld.com", "/RADIO10.mp3", 80 },
{ "Radio 10 70 " ,   "22343.live.streamtheworld.com", "/TLPSTR18.mp3", 80 },
{ "Radio 10 80 " ,   "25233.live.streamtheworld.com", "/TLPSTR20.mp3", 80 },
{ "Radio 10 90 " ,   "25353.live.streamtheworld.com", "/TLPSTR22.mp3", 80 },
{ "Radio 10 Love" ,  "25293.live.streamtheworld.com", "/TLPSTR04.mp3", 80 },
{ "Veronica    " ,   "22343.live.streamtheworld.com", "/VERONICA.mp3", 80 },
{ "Sky Radio   " ,   "25293.live.streamtheworld.com", "/SKYRADIO.mp3", 80 },
{ "Country Rocks" ,  "stream.dbmedia.se", "/crrMP3", 80 },
{ "Outlaw Country" , "ice10.securenetsystems.net", "/KIEV2", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 },
{ "~" ,   "0", "0", 80 }
};


// Wiring of VS1053 board (SPI connected in a standard way)
#define VS1053_CS    32
#define VS1053_DCS   33
#define VS1053_DREQ  35 

#define VOLUME  100      // volume level 0-100

VS1053 player(VS1053_CS, VS1053_DCS, VS1053_DREQ);

// -----------------------------------------
// Setup and init
// -----------------------------------------

void setup ()
{
display.init();
display.invertDisplay();
display.setFont(ArialMT_Plain_16);
display.normalDisplay();
display.setColor(WHITE);
display.drawString(0,0,"  ESP32 Radio");
display.setFont(ArialMT_Plain_10);
  
   pinMode(change,INPUT_PULLUP);
   Serial.begin(115200);
   delay(500);
   SPI.begin();
   player.begin();   // initialize VS1053 player
   player.setVolume(VOLUME);
   
   WiFi.begin(ssid, pass);
   while (WiFi.status() != WL_CONNECTED) {
     delay(500);
     Serial.print(".");
   }
  Serial.println("WiFi connected");  
  Serial.print("IP address:");  
  Serial.println(WiFi.localIP());
  display.setColor(WHITE);
  preferences.begin("my-app", false);
  counter = preferences.getUInt("counter", 0);
  old_counter = counter;
  delay(100);
  player.playChunk(StartUp, sizeof(StartUp)); //VS1053 is wake up & running
  delay(1000);
  station_connect(counter); 
}


// -----------------------------------------
// Main loop
// -----------------------------------------

void loop()
{
  // Play stream
  if (client.available() > 0) {
     uint8_t bytesread = client.read(mp3buffer, 128);
     player.playChunk(mp3buffer, bytesread);
  }
  // Check key
  if (digitalRead(change) == 0 and pinflag == true) {
    pinflag = false;
    counter++;
    if (stationList[counter].sname[0] == '~') { // Empty field
      counter = 0;
    }
  } 
  if (old_counter != counter) {
    player.softReset(); 
    pinflag = true;
    station_connect(counter); 
    old_counter = counter;
  } 
}


// -----------------------------------------
// Connect to radiostation
// -----------------------------------------

void station_connect (int station_no) 
{
  if (client.connect(stationList[station_no].host,stationList[station_no].port) ) {
    Serial.println("Connected now");
  }
  client.setNoDelay(true);
  Serial.print(String("GET ") + stationList[station_no].path + " HTTP/1.1\r\n" + "Host: " + stationList[station_no].host + "\r\n" + "Connection: close\r\n\r\n");     
  client.print(String("GET ") + stationList[station_no].path + " HTTP/1.1\r\n" + "Host: " + stationList[station_no].host + "\r\n" + "Connection: close\r\n\r\n");     
  display.clear();
  display.setFont(ArialMT_Plain_16);
  display.drawString(0,0,"ESP32  Radio");
  display.drawString(0,21,"Station: " + String(station_no));
  String line4 = String(stationList[station_no].sname); 
  display.drawString(0,42,line4.substring(0,60));
  display.display();
  preferences.putUInt("counter",station_no); 
  Serial.printf("Set counter to new_value: %u\n", station_no);
}

Downloads

Download: Full sourcecode Zip file.

To compile the code you will need some libraries, i have used the next libraries:

  • ESP_VS1053_Library-master
  • esp8266-oled-ssd1306-master

This is my build

I also have a 3D printer and I design using Freecad so I made my own case for this internet radio.

Internetradio

Links

More pages on embedded software

[catlist name=”Embedded software”]

Posted on Leave a comment

Arduino RFID Door Lock

Fz9gfz0jfx0inh3

On this page I will document and explain how to build a relatively cheap electric door lock based on an Arduino Nano and a RFID shield. I have a small garden with a bicycle shed that has a door to the common area behind our house. I have a lock on this door, but a lot of people have a key, my children, my neighbor and buying a new spare key takes long and is expensive. And then people lose their key, so I thought of a simple solution where I could make many keys and could authorize, but also unauthorize keys. I though of a solution using simple 125 Khz RFID keys and a cheap reader and an Arduino Nano processor. I ordered an electric lock online because it was hard to get here in a shop and rather expensive. I gave everyone who needs access to my garden (fi. to feed the animals) a small RFID key, and created a 3D printed reader next to the door and its working fine. On thsi page I will show you how I build it, because it’s all standard components, you could design your own version, if for instance you add a clock chip you could even give certain RFID keys only access at specific times. You can download all the files from this website, if hope this project will inspire you to create your own version. Regards, Hein Pragt

Step 1: So What Components Do You Need?

  • An Arduino Nano board;
  • EM4100 RDM-6300 RFID card reader 125 khz (or compatible);
  • Some 125 Khz RFID badges;
  • Led with 330 Ohm resistor;
  • 2N7002 Mosfet;
  • 10 K resistor;
  • 1N4004 diode;
  • 5 Volt relay;
  • 7808 voltage regulator;
  • 12V power supply at least 2A;
  • Terminal connector for power;
  • Terminal connector for lock wires;
  • An electric lock (Fail-Secure);
  • PCB board to mount the parts;
  • Female header pins to mount the Arduino and RFID reader.

I usually mount the Arduino Nano and other boards with a female pin header so they can be easily replaced when broken or if they are failing. The lock needs 12V power and I wanted a single power supply, so in order to save the Arduino from becoming very hot, I put a 7808 power regulator chip between the 12V power line and the Vin of the Arduino, I use a 5 Volt relay to switch the power to the electric lock because this device will draw a lot of current. I have used a cheap 12v switching power supply, but you can use any power supply that’s 12 V and can deliver at least 2 or 3 Amp current. For the RFID badges I use the read-only ones, they have a fixed number inside and are cheaper than the R/W badges,

Step 2: The Whole Diagram

F9witfejfx0ihf5
Ffy929xjfx0iq0v
Fubnw89jfx0iqjq

This is the diagram of the lock system.I build it on a PCB board using several colors of wire, the diagram is not that complex. I use a 7808 power converter to lower the 12 voltage for the Arduino to 8 volt, I don’t use the capacitors on both sides as the input power is stable and the Arduino does not use too much power. But you could put two 1 uf capacitors on bothe sides of the 7808. I use the +5v output from the Arduino to power the rest of the circuit. I use a mosfet (the old common 2n7002) to drive a relay to switch the 12 v power to the lock. As the lock can draw a lot of current its save to use a relay. I took a little plastic case to hold the electronics and I 3D printed a little case on the outside to hold the antenna and the indicator led.

Fu1vyxmjfx0iksc
The Antenna and the Indicator Led.


Mount the Hardware on and Next to the Door. Mount the Hardware on and Next to the Door. Mount the Hardware on and Next to the Door.

Fkob2n6jfx0im52
Fz9gfz0jfx0inh3

I also designed a holder for the lock to mount it next to the door. I also used a standard door lock on the door with a latch that will move inside when the door closes. I designed a knob to mount on the lock to be able to open the lock from the inside without a RFID badge. (The third file of the knob, the axis, should be printed with 100% infill to make it strong enough) I also created a 4mm spacer for the lock, so you can mount it right in front of the latch. The lock and latch should fit loosely otherwise the unlock won’t work. I used a 12 volt 3 A switching power supply for the 12 volt and I mounted it in the top of the bicycle shed in a dry space. I have used a 3 meter wire to connect the 12 volt to the lock system.

Step 5: The Software.

I wrote a very small Arduino program to read the RFID badges and display them on the serial interface so you can read the value inside the badge. Then you can add the hexadecimal number to the array at the top of the file (don’t forget to increment the number of cards below the array). When a valid card is detected the pin 12 of the Arduino controlling the relay pin will be activated for 5 seconds. You can adjust this time to your own needs. I use the software serial to read the badge so the other serial port is free for other use. There are a lot of pins left on the Arduino, you could add a I2C clock module and enable certain badges only at certain times. There is programming space left so add what you want. The basic version is working code and currently mounted in my own backyard.

Download

More pages on embedded software

[catlist name=”Embedded software”]

Posted on 4 Comments

Intel 8052AH Basic computer

Intel 8052ah Basic2

A while ago I bought an old box with integrated circuits that had been stored for many years and contained a lot of tubes with very old IS’s. As I like to build old processor boards and try to repair old computers and boards, these chips were very welcome. In one tube there were two original P8052-Basic chips and that brought back good memories of the time mid 80ties of last century when I was working as head R&D embedded programmer and hardware designer for a small company and was using the 8031 processor a lot. I even extended a tiny Basic version at that time, but the real P8031-Basic was incredible and complete, but expensive and hard to get at that time. I put these chips in my computer chips and cpu collection and one I kept aside to make a board to get it working again. I had a latch and a memory chip in my workshop, a PCB was also there, I only needed to order a few 11.0592 crystals as these are not so common anymore. After two evenings of wiring it was finally ready and at my first attempt to run it I got a line number error all the time. I seemed that the external sram was not working and it was a small wiring error. After I had fixed that it worked like a charm, I connected it to my VT100 terminal with the TTL serial input and after pressing the spacebar I got the prompt and I could write a small Basic program. On this page I will show you the schematic I made, some build instructions and some documentation and (source)code. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!Intel 8052-Basic chip

Why do we need at least 3 chips

To answer the question why we need al least 3 chips I have to explain the 8031 bus a little. To make room for as many I/O pins as possible Intel decided to multiplex the low part of the addresses and the 8 bit databus on one port. This would mean only 8 pins of the chip instead of 16 pins. Of course you would need an external latch for decoding the 8i address bits and the chip needed a pin to signal the output of the address part. Port 1 is actually a 8 bit data out and a 8 bit data in and a 8 bit address out port. The 74573 chip is often used as an 8 bit latch, this will store the 8 bits and save them (kind of like a 8 bit memory chip) to provide the lower 8 bits of the external memory address when reading or writing to external memory. Then we need a external memory chip, we can use anything between 8 and 128 x 8 sram chips, I chose the 32kb x 8 chip (62256) as I had these laying around. I use A15 as a chip select signal, the chip select pin is active low, so the A15 pin selects to lower 32Kb part. When using other chips you have to figure out yourself how to select the chip and put the unused address lines to ground. This is the minimum configuration and all we need to add are a small reset circuit and the crystal oscillator circuit and were done. Below is my schematic I made of my design.

8052 Hp

Building the board

When building this I use a PCB board that is double sided and not too small so I have room to wire the circuit. I put all the chips in sockets, to be able to reuse them again and protect the chips when soldering. I first put the sockets on the board and leave enough space between them for the wires, then I solder the sockets. Then I solder four pin connectors in one corner, two for the power +5v and Gnd, and two for the Tx and Rx lines. Then I solder the crystal near the processor pins, leaving room for the capacitors and I solder them to the correct pins of the processor socket. Then I do the same with the reset capacitor and resistor.

20220521 221504

The next thing is wiring and soldering all the power lines, I use red wire for the +5V and black wire for the Ground. I use solid kernel wire that is available in a lot of colors. I avoid going over the soldering points and like using a PCB layout go around the chips as much as possible. After this I wire the control and chips elect R/W lines using gray / white and orange wire. Then I take yellow wire and connect all the address lines, I try to keep the wires as much together as possible. Now it becomes a little tricky as the AD lines need both a address and a data latch wire. I use blue for the data latch and green for the databus lines. First I solder the blue wire to the socket pin and then carefully on top of that the second green wire. Make sure you do not use to much solder otherwise you can short two pins. I you shorted two pins, take the solder od with a solder pump and try again.

20220521 220244

Now all the lines are attached it is time to check for short circuits, take a Ohm meter and put the pins on two socket pins near each other and do that for all pins. If there is no short circuit we can place the chips. Check the powerlines for short circuit before putting 5 volt on the board. I use a USB power supply and I cut a standard USB cable ands solder female sockets on the power lines, safe an cheap. Now connect the board to a terminal or to a PC using a TTL RS232 to USB cable and type space. When all is right you should see a basic welcome message and prompt. The basic manual download link is at the bottom of this page, have fun!

20220521 220213

Using a AT89c52 or STC89c52 chip

The P8052-Basic chip is very rare and not available anymore, but there us a good alternative. Intel made the Basic code freeware a while ago and put the sourecode and hex files on their FTP site. I cannot find it anymore, but luckily I download everything that is interesting and so I have put the original zip file on my website to download. It contains the sourcecode and the binary hex file of the 8Kb Basic interpreter. When you use a 8052 with Flash eeprom like the 89c52 you can burn the hex code inside the microcontroller and you will have the same chip as the P8052-Basic chip. So you can build this small computer with modern parts.

8052 Basic PCB

I have a PCB for a very complere 8052 Basic computer in my webshop. This is a PCB of a Basic computer based on intel p8052-ah basic for the RCBus. (RC2014), an improved basic version for the 8052 was published in ELEKTOR 2001 (MCS BASIC-52 V1.3) This board can hold many different 8052 variants and supports a lot of different crystal oscillator configurations from 11.075 Mhz (Original) up to 22 and even 33 Mhz. The designer flashed the code into an ds89c450 running at 22.184 mhz, and that is 12x faster than an normal 8052. I build mine with a AT89C52 processor, but ANY 8052 version with at least 8Kb internal Flash will work. https://www.heinpragt.nl/?product=8052ah-basic-pcb-rc2014

My 8031 background

In 1986 I started to work as an embedded programmer and hardware designer for a small company in the Netherlands that build modems and computer equipment. At first it was only my favorite processor the Z80 but in the low cost modems we needed a cheaper microcontroller so one day I got a 8031 hardware emulator from Intel with all the development tools. As Intel provided PL/M and Assembler with their development kit I started to program in PL/M and assembler for the 8031 processor. I really fell in love with this processor and struggled to get all the code into a single eprom and only use the internal ram. In the second modem I got a 8032 so that gave me 128 bytes of extra ram and in the next redesign we implemented an Atmel version so we needed no external eprom anymore, bringing the chipcount down. In one of the last devices I build with the 8032 I had implemented the tiny Basic as well to make the device a programmable communication controller. After that we started to make modems with V42/v42bis and MNP compression and the 8032 was not powerful enough, so we stated to use an Intel 80188 processor. But I loved the MSC-52 processors from Intel, but the next companies I worked for used the Z80 and MC6809 chips, so I have used and programmed a lot of different processor chips.

8052 and 8052-Basic related documents

More pages on embedded software

[catlist name=”Embedded software”]

Posted on Leave a comment

6502 processor IDE

Mos6502

This is a page about my freeware 6502 processor IDE program which is an editor / emulator / debugger / assembler / disassembler for the 6502 processor all in one portable Windows executable. I was never a big fan of the MOS 6502 processor, it was far to simple compared to the Z80 processor that I used. But the MOS 6502 processor was the biggest competitor of the Z80 in home computers in the 80ties and a lot of great computers used this processor. A few years ago I build my first Apple 1 clone and I got interested in the MOS 6502 again, this time I took some time to learn to program it. But as with so many old processors, it is hard to find the programming tools, there are some, but most of them cover only one configuration or are not portable and not suited for Windows. I had already written an Apple 1 emulator and had the emulator code. So I decided to add another IDE to the ones I had already written. (It get easier every time). In this IDE I support the Apple 1 computer, the Elector Junior (KIM 1) board and a simple 64K rom/ram machine with only LED outputs. Have fun. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

6502 editor / assembler / emulator / debugger

Mc6502 Ide

To be able to program for the 6502 processor you need an assembler or compiler. I personally still like to write in assembler but I could no longer find tools for Windows 10. There were still some programs to download but most of them worked at DOS level, had serious bugs or did not fit my needs. After some searching I decided that it was time for a new project, building a complete integrated 6502 development environment. I found a pretty good assembler and the base code of my Z80 IDE and I had some old code in my code library. The result is 6502 workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a VT100 terminal window, a seven segment display with 8 LEDs and keyboard support.

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.

First time use

To practice there are a few example files in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. The speed will be just like the original processor, you can set the speed in the top of the screen. You can now stop running and modify the program, reassemble it and run it again. You can chose to see a realtime update of all registers (update checkbox) and you can set a breakpoint on code or memory access, a value of zero means its off. You can choose to stop at a breakpoint or start the realtime disassembler so you can trace your program. You can also set this trace on manually when you choose to single step trough the code. You can inspect the memory in the hex window. Default the 6521 PIA is emulated and the WozMon rom is loaded in Apple 1 mode. This terminal is a VT100 type. You can also select the Junior computer in which case the 6532 PIA is emulated and the Junior rom is loaded. Both rom files are external so you can modify them.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real 6502 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run this code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The 6502 has no I/O space so I implemented am MC6821 and a MC6532 PIA, in Apple 1 mode the 6821 PIA is used and mapped just like the Apple1, connecting the keyboard and the display with a VT100 terminal. In Junior mode the 6532 is emulated and the I/O mapping is just like the Junior computer (or KIM 1) with the seven segment displays and the keys mapped to the PC keyboard. You can also click the keys on the screen image. In simple mode the 8 leds are on memory address $d000 and the keyboard can be read using the same address.

Junior memory map

Junior Map

Version 1.04

I use the 6502_workbench myself and that is one of the way I find and fix bugs. I it now time to release the first version on my website so other can use it and I will continue to use improve the code. Suggestions and bugs reports are always welecome. I proudly present version 1.04 of the 6502 processor developer IDE.

Buy 6502 and 6502 related chips and hardware

I also have a webshop where I sell several 6502 types processors, boards and support chips.

https://www.heinpragt.nl/?s=6502&post_type=product

Download

Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, an assembler directory and a examples directory.

https://www.heinpragt.nl/?product=6502-processor-ide

  • Version 1.04
    • Fixed some small bugs in the user interface
    • Fixed overflow bug in monitor.
  • Version 1.01
    • Initial release, it might be not completely bug free, I will test on, wait for remarks amd release the next version soon.

Documentation:

U use an external CA65 assembler, you can find documentaion on: https://cc65.github.io/doc/ca65.html

More pages on software development

[catlist name=”Software development”]

Posted on Leave a comment

8052 processor IDE

8052

This is a page about my freeware 8051 / 8052 IDE program which is an editor / emulator / debugger / assembler / disassembler / ISP programmer for the 8052 all in one portable Windows executable. Many years ago when I was programming the 8052 professionally and at home, tools were very expensive. There was not much freeware or opensource, but trough my employer I had most of the tools I needed. I wrote a lot of programs in 8052 assembler in 8052 assembler and PL/M, but I also learned to write in C and I had a good C compiler for the 8052. The 8052 was a genius design for its time and its funny that this processor is still used a lot. For development and debugging 8052 assembler code, this freeware IDE can be used. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

8052 editor / assembler / emulator / debugger

8052 Workbench

To be able to program for the 8052 you need an assembler or compiler. I personally still like to write in 8052 assembler but I could no longer find tools for Windows 10. There were still some programs to download but most of them worked at DOS level, had serious bugs or did not fit my needs. After some searching I decided that it was time for a new project, building a complete integrated 8052 development environment. I found a pretty good assembler and the base code of my Z80 IDE and I had some olde code in my code library. The result is 8052 workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a VT100 terminal window, a seven segment display with 8 LEDs and keyboard support.

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.

First time use

To practice there is an example4.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.

In de example directory there are also two 8052 Basic versions from Intel that will run fine in this IDE emulator. After the assembler and RUN hit the spacebar (just as in the original autobaud detect) and the prompt will be shown.

There are more example files, a lot of them I made myself when testing the IDE and some I found on the Internet and are free to use.

By means of the step button you can execute the program instruction by instruction and check the output and the registers. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real 8052 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The 8052 has no I/O space so the LEDS and seven segment display are mapped on port 1 and 2. You can put the leds on port 1 or 2 and the display on lines port 1 or 2 and character port 1 of 2. You can select this with the top menu, or with some extra assembler directives I added. Look in the example files to see how they work.

  • The keyboard is send to the serial buffer of the 8052 (SBUF) and the display is also connected to the serial (SBUF) of the 8052. I also pulse the character on the RX pin to enable autobaud detect and simulate the hardware as good as possible.
  • Interrupt lines are connected to the interrupt buttons at the top of the screen, when pushed they will activate the interrupt lines.
  • The output ports are shown at the top as input values and output values, they can be modified to test input / output code.

LED I/O modes

In led I/O mode 1 the leds are connected to port 1 and a 1 on the port makes the led light up, directive is ;#LED1

8052 Leds Port1


In led I/O mode 2 the leds are connected to port 2 and a 1 on the port makes the led light up, directive is ;#LED2

8052 Leds Port2

Seven segment display modes

In Seven segment mode 1 the leds are connected to port 1 is select of segment and port 2 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN12

8052 Seven1


In Seven segment mode 2 the leds are connected to port 2 is select of segment and port 1 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN21

8052 Seven2

Interrupt pins configuration

The I0, I1 and I2 buttons ar the top of the screen are connected to the interrupt lines to simulate external interrupts.

8052 Interrupts Buttons

User define buttons configuration

There are also four user define buttons on the seven segment panel, these are connected to P1.2 to P1,5 to simulate external switches.

8052 User Buttons

Supported processors

The current version supports the Intel 8031, 8032, 8051, 8052 and Atmel 8952 processor. For the Atmel 8952 processor this IDE had a ISP In Circuit Programming mode, that supports a serial Arduino ISP module to update an 8952 processor from within the IDE. You can edit code, run and debug it on the emulator and then test it on a real 8952 processor. The hardware configuration of the IDE is equal to a cheap 8952 development board from China.

Supported development board

I use this development board, you can order it in my webshop, its very complete, you have to solder it yourself. It had a Zif socket for the processor, a full rs232 circuit, and USB circuit, four pushbuttons and a reset button, am ISP programming connector, eight output leds, a power supply, crystal in socket and all I/O lines on connector pins.

8952 Developme Board

Link: https://www.heinpragt.nl/?product=avr-development-board-kit

Schema of this development board

Development Avr51

8952 ISP programmer using Arduin nano

I created my own Arduino Nano based ISP programmer for the 89S52 processor. I connected it to the Chinese development board with a standard ISP connector cable and I guess this will work on other 8052 ISP development boards as well. I chose this development board because it is very cheap and has a lot of features. And of course an Arduino Nano is small and also cheap.

8959 Arduino Nano Isp

Schema of Arduino Nano ISP programmer

Arduino Nano 8952 Isp Schema

Download Arduino Nano sketch for the ISP programmer.

*) This will also work with an Arduino Uno board!

Version 1.04

I use the 8052_workbench myself and that is one of the way I find and fix bugs. One of the last things I did was recode de TB31.asm file, a complete Tiny Basic interpreter for the Intel 8031 and made it work fine on 8031 with 128 bytes internal ram. During this process I found some little bugs in de emulator and I added a mode to emulate a real 8031 (128 bytes memory checks) to the code. Also I fixed code that would destroy the user interface if there was too much output to the windows. And the most important new feature is the ISP In Circuit Programming option. The example directory now also contains the Intel 8052 floating point basic assembly sourcecode, the complete 8031 tiny basic assembly sourcecode and the paulmon21 assembly sourcecode. I proudly present version 1.04 of the 8052 developer IDE.

Download

Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, an assembler directory and a examples directory. After weeks of debugging I think the project is ready for release, if you find any bugs please report them to me.

https://www.heinpragt.nl/?product=8052-processor-ide

  • Version 1.04
    • Added full timer 2 support.
    • Added ISP upload feature
    • Change Led polarity to match development board.
    • Added four buttons to LCD panel.
    • Fixed P3 display in register panel.
    • Fixed windows corrupt on to much update.
    • Fixed SETB to handle LEDS correct.
  • Version 1.03
    • Fixed error in IDE update windows that would destroy the IDE context menus.
    • Fixed ADDC flags error.
    • Fixed MOVC A,@A + PC instruction.
    • Fixed DA A instruction AC flag error.
    • Fixed SUBB OV flag error.
    • Added 8031 emulation checkbox.
  • Version 1.02
    • Fixed a last minute change error in the terminal code that made keyboard not respond.
    • Fixed the name of the example directory.
    • Fixed a unwanted quote character in exampkle4.asm.
  • Version 1.01
    • Initial release, it might be not completely bug free, I will test on, wait for remarks amd release the next version soon.


8052 links, tips and documents

More pages on software development

[catlist name=”Software development”]

Posted on Leave a comment

MC14500B processor IDE

Mc14500a

This is a page about my MC14500B IDE program which is an editor / emulator / debugger / assembler / disassembler / ISP programmer for the MC14500B, all in one portable Windows executable. I learned about the MC14500B one bit processor on an Internet forum and I was facinated by this little device. I ordered a PLC14500 board from Tindie and designed mt own hardware, a breadboard design and an Arduino shield version. There ere no real tools but the processor is quite simple and reading the datasheet and the programming manual I wrote an assembler and disassembler and an emulator, then I decided to adap my IDE framework for the MC14500B processor. It took som time to create a fully working hardware emulator for the PLC14500 board and a working emulator for my own board, and I tried to visualize the boards on screen. Then I write my own bootloader for the Arduino Nano and added the ISP option to the IDE so you could upload the code directly to the boards. For development and debugging MC14500B assembler code, this IDE can be used.
Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

MC14500B editor / assembler / emulator / debugger

Mc14500b Workbench

To be able to program for the MC14500Byou need an assembler or compiler. I like to write (puzzle) in MC14500B assembler but there were no real usefull tools available for for Windows 7,8,10,11. After some searching I decided that it was time for a new project, building a complete integrated MC14500B development environment. I wrote an two pass assembler and used the base code (framework) of my Z80 and 8052 IDE. The result is MC14500B workbench, a portable x64 (and X32) Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex write function, a VT100 terminal window and a ISP programmer.

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.

First time use

To practice there is an example directory, from which you can load example programs after which it will be displayed in the editor window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. By simply pressing the run button you can execute the program on the selected on screen board and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers, ports and leds. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.

Ifyou have a board connected you can use (select) the terminal window to “talk”to the Arduino Nano, and if you have loaded my bootloader, you can then simply upload the code to the board using the ISP menu. This is also the menu where you select the communication port.

In the main directory there is also the .ino sourcecode file of my custom bootloader for the Arduino Nano. Just load the code in the Arduino IDE, compile it an upload it to the Arduino Nano using the serial cable. You can now check the code inside the Arduino eeprom or do a factory reset (smoketest program) on the board using the Arduino IDE terminal of the terminal of my IDE at 9600 Baud,

By means of the step button you can execute the program instruction by instruction and check the output and the registers and ports. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real MC14500B circuit. You can also disassemble the internal emulator memory code after which the source code will appears in the edit screen in the middle. The assembler and disassembler are default loaded with all the friendly names of all the I/O in a standard symbols table. This generated sourcecode can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The IDE currently supports two hardware boards that will be displayed on the screen with working leds and buttons. Inside the IDE is a real hardware emulation of the complet circuit of the board and all the chips so it should work exactly as the real hardware. My board is not yet ready but I am using this tool to debug it. My board will support JMP and RTN instruction with a ONE level stack :-). With the top menu you call also connect te VT100 terminal to the input and output lines of the board, this will be useful on my board.

Version 1.02

Version 1.02 is the second version with some improvements after testing with different hardware. I will be maintaining the program based on my own needs, bug reports and feature reuests.

Download

Here you can download the latest version if this IDE for a small fee. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, an examples directory and my custom Arduino Nano boatloader sourcecode. After weeks of debugging I think the project is ready for release, if you find any bugs please report them to me. The progams are digitally signed using my codeding certificate for your safety and to make them thrusted by Windows. It seems my IDE programs work fine on (Linux) WINE as well.

Download at: https://www.heinpragt.nl/?product=mc14500b-processor-ide

  • Version 1.02
    • Fixed error in hex dump bootloader (16e byte);
    • Improved ISP uploader for PLC14500 board;
    • Improved ISP uploader for HP14500 (Arduino shield) board;
    • Fixed terminal bug in HP145000 emulation.
  • Version 1.01
    • Initial release, it might be not completely bug free, I will test on, wait for remarks amd release the next version soon.

MC14500B links, tips and documents

More pages on software development

[catlist name=”Software development”]

Posted on Leave a comment

Http health check monitor

Health Mon

Hein Pragt Http health monitor As a technical application manager I face the problem of having a complex application with many servers and lots of api services, and sometimes one or more of the many http servers or rest api’s fails. There is excellent tooling to monitor an application farm but a lot of companies do not invest in this kind of health check maintenance tooling especially not in de development area. Giving the fact that a lot of technical maintenance is done by the devops team and they also don’t have the health check tooling to monitor the servers. I am a programmer so decided to build a small portable dotnet program that could generate a real time status view of all the http(s) services in an application suite. It is a simple http server that will run on any chosen port (default 8080) and it reads a simple xml file with a list of url’s it has to poll and what result status code is expected. When the expected status code is returned it will show a green bar and when the status is different it will show a red bar with the server name and the http error code. The program is a simple x64 DotNet 4.6 console application that you can run from the command line, or at server startup, from a scheduled task.

It expects a settings.xml file and a style.css file in the same directory, the xml file contains a list of all the url’s the program has to poll. It looks like this:

<servers> 
  <server> 
    <group>Dev</group>
    <name>Server one VM00345:8080</name> 
    <url>http://www.system1.com:8080/health</url>
    <valid>200</valid>
  </server> 
  <server> 
    <group>Test</group> 
    <name>Server one VM00347:8081</name> 
    <url>http://www.sever11.com:8081/api</url> 
    <valid>401</valid> 
  </server> 
  <server> 
    <group>Test</group> 
    <name>Server two VM00385:80</name> 
    <url>http://www.apigate.com/test</url> 
    <valid>200</valid> 
  </server> 
</servers>

To give users a chance to change the layout or colors of the healt monitor screen, an external css file is provided, it will be read at startup. It only contains the basics, but if you f.i. use short names you could change the width of the blocks (entry) so more blocks can be displayed on a singe screen. It looks like this:

.ok { background-color: lightgreen; } 
.error { background-color: red; } 
.entry { width: 320px; padding-left: 8px; padding-right: 8px; margin-left: 4px; border: 1px solid gray; float: left; } 
.header { font-size: 1.5 em; padding-bottom: 4px; margin-bottom: 4px; } 
.timestamp { font-size: 0.6em; } 
.groupend { clear: both; } 
.groupbar { width: 99%; color: #ffffff; background-color: gray; margin-top: 6px; }

Since version 1.09 there is a config.xml file where some configuration settings are stored in simple name value format. The commandline port will still overide the config.xml setting.

 <settings> 
   <setting> <name>Port</name> <value>8080</value> </setting> 
   <setting> <name>TimeoutMs</name> <value>2200</value> </setting> 
   <setting> <name>Title</name> <value>Development</value> </setting> 
</settings>

Every time you send a GET request to this health check monitor program the internal http server will poll all he url’s and generate the html status screen. It will not poll until the next GET request, the date time stamp of the last request is in the top of the screen. This http health check program is KISS (keep it simple stupid) and does what it has to do and nothing more. Its portable and does not need installation and it runs anywhere you put it. It only needs the dotnet 3.1 (or higher) installed. The program is closed source, freeware and without any warranty whatsoever. But I use it myself and I think it’s simple, stable and safe. Any recommendations for improvement are welcome.

Download the zip file of the https health monitor program and unpack it in a (logical) folder on your disk drive, I use a folder named portapps in the root folder of my C drive. Run the http health check monitor program by hand (the argument can be a different port number), double click it for the default port and it will start a console application. As long as this console applicatio is running the http server is alive. In the console window it will log all the things it does, including more details on the response codes. Start you browser and type: http//localhost:8080 and the status screen will be displayed in you browser. The timeout on every request is 1.5 seconds, so if a lot of servers are down, the response screen will take a while to load. If you open the port number in the firewall, the http server can also be used on another (client) computer.

Versions

Version 1.09 – Feb 2021 – new features.

Here you can download the zip file with the lates version 1.09 of the HmPHealtheMonitor.exe portable Windows ™ health check monitor program. The executable file is digital signed with my heinpragt.com codesigning certificate. Read the intructions to use above.


Download: HmPHealthMonitor109.zip

Release notes

  • 1.03
    • Initial release
  • 1.04
    • Add timeout of 1.5 sec.
    • Now listening on any IP
  • 1.05
    • Added support for old and invalid TSL/SSL versions.
  • 1.06
    • Added explicit GET methode.
    • Improved error handling.
  • 1.07
    • Improved TSL/SSL handling.
  • 1.08
    • Fixed bug in 404 errorhandling.
  • 1.09
    • Added configurable timeout value for each call.
    • Added a configurable title for the header.
    • Added a config.xml file.

Known issues

  • The windows defender program will sometimes block this program, just right click the exe file and click run anyway.
  • The Avast virusscanner sometimes gives an alarm, I double ckhecked, it is a false positive.

How to install the Health monitor as a service in Windows ™

When you want this health check monitor to run at a Windows server at startup, one way is installing it as a server and set the startup mode to automatic. This also gives the opportunity to run it under another account. There is a nice open source wrapper that can run ANY windows executable (but also runnable jar (Java) programs) under windows as a service. You can find the binary distribution (but also the source code if you need it) at Github, it is the WINSW project for dotnet version 4 with the name: WinSW.NET4.exe, Jus Google it and download it from Github. This is a short manual for this purpose, you can also use it for other programs.

  • Copy the file to the directory containing the executable.
  • Rename the file WinSW.NET4.exe to HmpHealthSrc.exe.
  • Create a xml file with the (same) name HmpHealthSrc.xml.
  • Edit this file and change the content to this:
<service> 
  <!-- ID of the service. It should be unique across the Windows system-->
  <id>HmpHealth</id> 
  <!-- Display name of the service --> 
  <name>HmpHealth WinSW</name> 
  <!-- Service description --> 
  <description>HmpHealth on port 8080</description> 
  <!-- Path to the executable, which should be started -->
  <executable>E:\HealthMonitor\HmPHealthMonitor.exe</executable> 
  <arguments> </arguments> 
</service>
  • To change the port, just put it in arguments.
  • Open a CMD shell and go to the HealtMonitor directory.
  • Type: HmpHealthSrc install to install the service.
  • Open the service manager and check i fit is set to autimatic and start the service.
  • Check, using the browser if the Health Monitor is running.

WINSW commands:

  • ‘install’ – install the service to Windows Service Controller
  • ‘uninstall’ – uninstall the service
  • ‘start’ – start the service (must be installed before)
  • ‘stop’ – stop the service
  • ‘restart’ – restart the service
  • ‘restart!’ – self-restart (can be called from child processes)
  • ‘status’ – check the current status of the service
  • ‘test’ – check if the service can be started and then stopped
  • ‘testwait’ – starts the service and waits until a key is pressed then stops the service
  • ‘version’ – print the version info
  • ‘help’ – print the help info (aliases: -h,–help,-?,/?)

More pages on application software

[catlist name=”Application software”]

Posted on 5 Comments

CpmBox a CPM 2.2 emulator

Cpm22

The second operating system I used (after TrsDos) was CPM on a Z80 development machine. Some time ago I build the Z80 MBC2 board and I played with CPM again. I included a fully working MBC2 emulation in my Z80 IDE program but after using DosBox I got the idea of creating CpmBox. CpmBox is a full CPM 2.2 implementation on a Z80 emulator for Windows, including a VT100 terminal and 8 CPM disks based on the MBC2 with the looks of a real terminal. It is a portable windows program (one single executable) and the zip file contains the emulator, a directory with a lot of disks and the bootdisk and a dos based directory to load CPM files from and to dos. It is also possible to save and load programs from dos and save or load them to a CPM disk. It is freeware and I hope you like it. . Regards, Hein Pragt.

Copyright

I respect copyright and I will not distribute illegal software. Part of this program was inspired by the Z80 MBC2 project and the boot disk and bootloader are from this project. I kept them as they are. The CPM disks are filed with old CPM based software I had in my collection and I filled the first 6 disks with all kind of software. Legally some of this software maybe is still copyrighted BUT in my opinion the copyright was from 40 to 45 years ago, these products have not been on the market for a lot of years and I think that most company’s will not complain. I do not ask any money for this package and the main goal is to keep the old spirit alive. I anyone can identify him or herself as a legal copyright owner and has problems with the distribution I will remove that content. But I seriously believe there is no one to object to distributing these old artifacts as freeware. My program itself is closed source but freeware.

What is inside this emulator

Cpmbox2

This emulator is exactly like a Z80 MBC2 computer running CPM 2.2 (without the i/o chip) and connected to a VT100 terminal.

  • Emulates: Z80 and VT100 terminal;
  • OS: CPM 2.2;
  • Keyboard: full 53 keys emulated by the PC keyboard;
  • CPU: Zilog Z80 the speed is depending on the PC hardware;
  • RAM: 64 kb;
  • Textmode: 24 x 80 characters;
  • Graphics: None;
  • Color: White on green screen;
  • Sound: None;
  • I/O: 15 CMM disks and access to DOS disk;
  • Design: Like an old terminal screen.

Download

Here you can download the latest version if this CpmBox emulator. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, a directory with CMP disk images and a directory for DOS based CPM files. It is a portable program, just unpack it somewhere on the disk and start it by clicking it. This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download x64 (and x32) version 1.01 of CpmBox (2022)

  • Version 1.01
    • First (beta release) version, the program has been testen by myself on my hardware.

CPM disks

I made some disks for this program and I got a question about how to make and maintain the disk image files. I have searched for a solution myself for a while until I found a utility program called cpmtools. But it were command line tools and not so user friendly. Then I found a gui for this toolkit and although the visual views are sometimes a little strange because of misinterpreted characters, it works fine. I zipped the complete directory as it is on my disk, including the correct disk definitions. You can download it here. Just download it and unpack it somewhere at your harddisk. Just doubleclick: CpmtoolsGUI.exe.

Cpmtools1

First you select a disk image in the upper left corner (or create a new one) and then you select the disk format. I use the disk formats of the MBC board project, use d0 for bootdisk 0 and d1 for alle other disks. You can now select the directory on you own harddisk in the right corner and you can select a file in the cpm view of the dos view and use the buttons to mover them from dos to cpm, or from cpm tp dos. I can read other cpm disk formats as well. This way you can create your own cpm file repository on your hardisk and copy them to the cpm disk images. This tools is not that user friendly and not very beautiful in UX but ir works fine for me.

More pages on emulator software

[catlist name=”Emulators”]

Posted on Leave a comment

Minimal Emulator Frontend

Hpmef

There are a number of great emulator frontends available on the Internet, I use retropie on a mini Nes with a Raspberry pi. But for my Windows 10 desktop there are only programs that are huge, with a lot of artwork and sounds, not user friendly and sometimes very hard to configure. After some disappointing experiences I decided that I needed a very simple frontend, just select a game and double click it and it will run on the correct emulator. As always when I cannot find what I need I write it myself, I am an experienced C and C++ programmer and I know how to write portable Microsoft Windows programs. I still have a backup file with a lot of game roms, I only needed to find some stable and portable emulator programs for these game machines. And these game emulators had to have a command line interface to start the emulator with a predefined game rom.

I tested some emulators and after a while I had a good collection of free, portable emulators that I could deliver together with my frontend program. The reason I also package these emulators is that I can predefine them in my machines config file so that the program needs no configuration and will work out of the box. I cannot package any game roms as they are copyrighted, you have to find the game roms yourself. But just copy them into the roms directory in the subdirectory of the game system and the next time the program starts it will scan and add this game to the list. The program is very simple but does exactly what its needs to do and has a user friendly interface. It will work out of the box, there is no need for configuration. There are two config files that are just plain text and you an edit them to add friendly names to the games of to add of delete a game emulator.

To install it just download the zip file, it will contain the exe file and some predefined directories. In the emulators directories there are several preinstalled portable emulators, you can update them yourself as they are free available on the Internet. When you start the program you will have an empty screen, that good. Now just copy the rom files from your archive to the roms directory in the correct folder of the game system and after that start hpmef.exe again and the games should show in the list. Just DoubleClick on the game and the correct emulator should be started with the correct game rom. There are two config files, the file games.txt is a generated file you can edit only the third column and that is the friendly name of the rom and also the display name. By default this is a copy of the rom filename. This friendly name will not be overwritten and will last as long as the file is not deleted. You can delete the file and start the program again, this will generate a new games.txt file.

The second configuration file is the machines.txt file that contains all the game emulators and the abbreviation used to connect the game emulator to the game. It also contains the file mask of the roms for this system. You can edit this file and delete or add emulator programs. Always add new emulator programs under de directory emulators and then add the manually to the machines.txt file. This is the only real configuration you need to do, only if you want to change the default setting. This file will not be created new, so do not delete it and make a backup copy. This program is digitally signed by me so it should be trusted by Microsoft Windows ™. The program is freeware, you may copy it as you like, use it as you like, but there is no warranty whatever. I am a good programmer and I do not expect this program to do anything bad tot your system, but I cannot be responsible for the way people use it so there is no warranty from my side for the use of this program. But my site is trustworthy and I consider myself a trustworthy programmer, but I have to mention this warning.

Download the zip file and unpack it in a (logical) folder on your disk drive, I use a folder named portapps in the root folder of my C drive. It will create a directory structure and add some files. Just make a shortcut to the hpmef.exe file or DoubleClick it to start the program. If you find a bug or have any good suggestion to improve this program you can contact me trough the contact form on this site.

Versions

  • Version 1.01 – Aug 2020 – initial release.

Download

Here you can download the zip file with the lates version 1.01 of the hpmef.exe (Hein Pragt Minimal Emulator Frontend) portable Windows ™ program. This version supports a Gameboy emulator, Gameboy Advance emulator, Nes emulator, Super Nintendo emulator, Nintendo 64 emulator, MSX emulator and Sega geam gear emulator. Have fun!

Download: hpmef101.zip

Links to the emulators homepages

More pages on application software

[catlist name=”Application software”]

Posted on Leave a comment

hmpFileFind utility

Hmpfilefind02

As a Windows software developer for many years I had a directory with all small portable utility programs that I put on every system that I had to work on. HmpFileFind is a simple portable freeware application that helps find files on a filesystem (recursivly) by file pattern and file content. A lot of time I wonder where on my 3 Terabyte hard disk did I put this file and then I use this little application to locate it. I can search the disk for a (wildcard) filename, but also on a word or phrase in the file. As a web developer I sometimes wonder where have I used this link or this word or phrase on my website, then I select the root file of the website on my hard disk, select to only look into *.html files and type a word or phrase that I want to look for. The listbox will be filled with all the filename and the file paths of the files and just double click on the filename to open it in the preferred editor. Regards, Hein Pragt.

Hmpfilefind01

What kind of application is HmpFileFind

This program is very simple, it does not maintain a database it does not keep any internal information and is privacy friendly to use. The only thing is that it saves the last settings and will reload the at the next time to save time. It will not make any modifications to the filesystem and it will only search for a word in a file if the search field is not empty. It can find words in all files that contain text not in binary files.

The program is small and limited, you cannot use regular expression in the search phrase and when searching through a lot of files, this will take some time. The program is portable and is not depending on any other library or runtime, it comes in a X32 and X64 version and the exe files are digitally signed by a coding certificate for your safety. Just unzip the file somewhere on your disk and click to program to start it. A very handy utility for finding your files (that contain certain words) on big filesystems.

Download

This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download. (Version 1.01 2023)

  • Version 1.01
    • Initial release, it might be not completely bug free, I use it a lot myself, I will wait for remarks amd release the next version soon.

More pages on application software

[catlist name=”Application software”]

Posted on Leave a comment

PragtFotoManager utility

Pragtfotomanager Header

Twenty years ago I bought my first digital camera and there were almost no programs to manipulate digital photo’s. So I wrote a little program to fit my needs and for a few years I even sold it. After a few years I decided to make it freeware and this is the last version I compiled. (Currently I cannot compile it anymore, so this is the final version). The program is in the Dutch language and there is no English version. PragtFotoManager is a small portable program that allows you to perform one or more operations on one or more (up to a maximum of 999) photos. The operations are: rename photos, resize photos, create thumbnails, save information from photo, create photo index pages and provide photos with a copyright text. (Watermark). You can perform these operations individually but also run them all at the same time. The program is especially useful when you need to edit large amounts of photos, for example for a website or sending by email. The program will not overwrite your original photos (except when renaming) but creates a copy of the photo with the desired operation. It is not a very modern program, but it still can be very useful. Regards, {-Hein Pragt}.

What kind of operations can it do?

1. Rename photos

Often you have many photos on your hard drive and the file names are not always clear. Most cameras number the photos with a fixed prefix. You can manually rename the photos, but that is often a time-consuming job. This program makes it is possible to select several photos and to provide them all with a meaningful name and serial number in one operation. You can enter the numbering prefix, start number, and interval. You can also adjust the order of the photos before renaming so that after renaming they form a logical whole. For example, when you edit your holiday photos, you can include the place and date in the name.

2. Resize photos

As the number of megapixels of cameras is constantly increasing, the photo files are also getting larger. When you want to send these photos by email or put them on a website, the files are often too large to send and much too large to display on a normal web page. If you put the photos on your web server in a large size but display them in a reduced size, you will consume a lot of bandwidth and your pages will load slowly. Resizing and optimizing photos will make your pages load faster. With the help of this program you can quickly and easily resize photos. You can reduce the photos to a number of standard sizes (800×600) (640×480) (320×240) or enter your own size. The photos will be re-sampled so that the resized photo remains of good quality. To prevent overwriting, the reduced copies will be placed in a subfolder named by the width and height of the format by default. So you can see at a glance what size the photos are in these subfolders.

3. Put copyright text on all photos

You can also automatically place a small (copyright) line of text on every photo when you are resizing, with a selected foreground and background color. This option is useful, for example, to include a copyright notice (watermark) in the photo. The position of this copyright text can be adjusted and you can also place this text in the border around the photo. This option is very useful when you use the want to publish photos on the Internet and clearly state your copyright.

4. Generate thumbnails

Thumbnails are extremely reduced images that can be included in a link on an internet site, for example. You can determine the maximum height and width yourself. The thumbnails will be written in a subfolder thumbs by default, you can adjust this setting yourself. When resizing, the width to height ratio of the original photo will be used. When you post photos on the Internet it is recommended to use thumbnails on the overview page and not the reduced size versions of the photo to make the page load faster and save bandwidth.

5. Convert to another file format

If you want to convert your photos to a different storage format, you can of course do this with a graphics program (such as Photoshop). When you have a large number of files to convert, it may take some time as you will need to open and re-open each file. Pragtfotomanager allows you to convert a large number of files to another file format at once. The input formats can be mixed JPG, GIF or PNG, the output formats are JPG, GIF and PNG.

6. Store EXIF data

Modern cameras save the settings of the photo as extra data (exif). You can make this exif data visible by loading the photo into Photoshop, for example. However, after editing in some programs this information is lost. Since it is important for a photographer to have this exif data such as aperture and shutter speed setting available in text form Pragtfotomanager saves this data in a text file. Pragtfotomanager can create a separate text file for each selected photo with the same name as the photo (extension TXT) where this information will be writtem in readable form. You can also choose to write all this information into one file.

7. Make index sheets

Some photo print centers provide an index sheet. It contains the thumbnails of all photos and the name of the photo. This is very useful when reordering. These index sheets are also very useful to manage your collection of photos. This program can automatically generate index sheets from the selected photos. You can determine the size of the index pages and the size of the thumbnails. The program itself will format it and calculate the number of thumbs per page.

All these operations can be performed separately, but also all at the same time. The program will save the last settings when exiting so that you do not have to re-enter all the settings every time.

Pragtfotomanager121

Download

This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download. (Version 1.21 2019)

More pages on application software

[catlist name=”Application software”]

Posted on Leave a comment

PragtTextUtil utility

Pragttextutil Header

As a Windows software developer for many years I had a directory with all small utility programs including many Unix utilities that I put on every system that I had to work on. This worked fine for many years until I switched to Windows 7 and all these command line tools stopped working. I had to make a choice to recompile all these programs for Windows 7 or collect all the features of these small utility programs and merge them into one portable Windows application. I chose the development of the portable Windows application PragtTextUtil (PTU) that I hereby offer as a freeware application, for everyone that does development or maintenance on Windows based computers. Regards, {-Hein Pragt}.

What kind of application is PragtTextUtil

Pragttextutil01PragtTextUtil is not an text editor although the basic functions to edit text are present in the program. The program aims to perform operations on text such as converting to upper or lowercase letters or removing HTML tags and converting them to neat paragraphs. But also operations as trim, uniq, sort and filtering are present in this application and also a complex operation to generate a sorted word frequency overview to be able to determine, for example, good keywords for a web page. For example, you can filter from a log file all lines that contain a certain word or not a contain a certain word. Also a nice option is search and replace with the ability to use CTRL characters in the search but also the replace text.

As input, the program of course can read all forms of plain text files, but also files as hex/ascii dump, html pages, web pages via an HTTP request (simple wget) to get the exact response of an internet server. But you can also load the contents of your directory into the text editor to for example, create a sorted list of all your music. (Under Windows, it’s still not possible to cut and paste the list from the explorer). You can also use the output of a command line read command directly into the text editor. With the function to request a web page you can load the HTML of this page into the text editor after which you can easily remove all HTML tags and scripting and then convert the bare text to neat paragraphs that you can further edit in your favorite word processor. This allows you, for example, to also retrieve texts from sites that try to block the cutting and copying of the text.

Menu options overview

File
   New
   Open as text
   Open as Unicode text
   Open as text (read first 50 lines)
   Open as text (read last 50 lines)
   Open and convert to hex/ascii
   Open from HTTP
   Open and pipe command line
   Save text
   Save text As
   Read directory listing (date/size/name)
   Read directory listing (names)
   Search trough files
   Compare files
   Exit

Edit
   Undo
   Select All
   Copy to clipboard
   Cut to clipboard
   Paste from clipboard
   Delete selection
   Search text
   Replace text
   Goto line

Operations
   ToUpper selection
   ToLower selection
   Smart ToLower to paragraphs
   Whitespace to single space
   Whitespace to single space (save linebreaks)
   ToWordList (whitespace to inebreaks)
   Count lines, words, characters
   Words statistics (whole document)

Sort
   Sort selection Asc
   Sort selection Desc
   Sort selection Asc (Ignore case)
   Sort selection Desc (Ignore case)

Filter
   Strip html (add linebreaks)
   Format html
   Trim leading and trailing spaces
   Uniq the selection
   Uniq the selection with count
   Filter the selection (delete all except)
   Remove in the selection (delete all that contain)
   UTF-8 to iso-8859-1
   UTF-8 to plain ascii (remove diacrites)
   \n (Unix) to \n\r (Dos/Windows)

Help
   About
   

Download

This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download. (Version 1.08 2021)

Previous releases

Download. (Version 1.07 2018)

Download. (Version 1.04 Jul 2011)

Download. (Version 1.03 Jul 2011)

Download. (Version 1.02 Jun 2011)

More pages on application software

[catlist name=”Application software”]

Posted on Leave a comment

INS8060 or scmp processor

Scmp

This page is dedicated to my fist microprocessor, the INS8060, also called the SC/MP processor. At the time I was 13 years old and did not have much money, I could afford to buy an electronics magazine called Elektuur every month, and they published a simple computer board based on the SC/MP processor. I was very interested in computer technology at that time and I read all I could about the SC/MP processor. As I did not have the money to buy a board I would draw the internal of the processor on a big piece of paper, with the RAM / ROM / keyboard and display as registers and I would have a lot of small zero and one papers to simulate the flow of the bits and bytes in the (paper) circuit. Looking back this was ridiculous, but this is the way I learned computer design and binary logic. By the time I learned the Z80 system I had good knowledge of processors and binary logic. I also saw a board called the MK14 that was based on the SC/MP as well, I considered buying one at the time, but I decides to go for a real computer. Still the SC/MP is my first processor and nowadays you cannot get the processor anymore (at least not at a reasonable price), but there are emulators in software and hardware that are still available. I have to say that I recemtly bought a SC/MP processor in China for 20 Euros. On this page I will share all documentations, links, schematics and code that I have or have found. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

About the INS8060 or SC/MP Processor

National Semiconductor introduced the INS8060 or SC/MP In April 1976 and it was intended for small and cheap industrial controllers. The acronym SC/MP stands for Small Cost-effective Micro Processor and it needed few external components and was simple to program. In 1977 Elektor Magazine devoted a few issues to the SC/MP and the Elektor design came in two versions, a simple basic one and a version with a hexadecimal keyboard, 7-segment displays and a monitor program in ROM, cassette interface and the option to connect a VDU. The INS8060 or SC/MP has a rather simple architecture and can address a total of 65536 bytes memory. Because only 12 of these address lines are connected to pins the addressing space is 4 kb bute the high four bits of the address were multiplexed on the data bus during the NADS-signal. The 64k memory is divided in 16 x 4096-bytes pages. Only a limited number of memory reference instructions can cross a page boundary.

The first INS8060 or SC/MP chip was developed in P-MOS technology and needed a positive power supply of 5 Volts and a negative of 7 Volts. Later National Semiconductor introduced the SC/MP-II that was made in N-MOS technology and only needed a single 5 Volt power. Three of the signals on the SC/MP-II were logically reversed (i.e. BREQ became NBREQ) so the SC/MP-II is not 100% pin-compatible with the first SC/MP-I. The INS8060 or SC/MP was not a powerful microprocessor but at the time it was cheap and simple to use. The SC/MP only an instruction set of 46 basic instructions and was rather easy to program at binary level. Beside the Elektor design there was also a one board computer implementation called the MK14, developed by Science of Cambridge Ltd, which was a company of Sir Clive Sinclair. These are still sold on Ebay sometimes but there are also great emulators in software and hardware. (PIC microcontroller).

INS8060 or SC/MP Pinout

Scmp Pins

The table below describes the various SC/MP signals and pinouts.
(A preceding “N” in the signal mnemonic signifies a negative active signal.)

NRSTReset InputSet high for normal operation. When set low, aborts in-process operations. When returned high, internal control circuit zeroes all programmer-accessible registers; then, first instruction is fetched from memory location &H0001
CONTContinue InputWhen set high, enables normal execution of program stored in external memory. When set low, SC/MP operation is suspended (after completion of current instruction) without loss of internal status
NBREQ *Bus Request In/OutputAssociated with SC/MP Internal allocation logic for system bus. Can be used as bus request output or bus busy input. Requires external load resistor to Vcc
NENIN *Enable InputAssociated with SC/MP Internal location logic for system bus. When set low, SC/MP Is granted access to system busses. When set high, places system busses in high-impedance (TRI-STATE) mode.
NENOUT *Enable OutputAssociated with SC/MP Internal allocation logic for system bus. Set low when NENIN is low and SC/MP Is not using system busses (NBREQ-high. Set high at all other times.)
NADSAddress Strobe OutputActive-low strobe. While low, indicates that valid address and status output are present on system busses.
NRDSRead Strobe OutputActive-low strobe. On trailing edge, data are input to SC/MP from 8-bit bi-directional data bus. High-impedance (TRI-STATE) output when input/output cycle is not in progress.
NWDSWrite Strobe OutputActive-low strobe. While low, indicates that valid output data are present on 8-bit bi-directional data bus. High-impedance (TRI-STATE) output when input/output cycle is not in progress.
NHOLDInput/Output Cycle Extend InputWhen set low prior to trailing edge of NRDS or NWDS strobe, stretches strobe to extend input/output cycle; that is, strobe is held low until NHOLD signal is returned high. (for slow memory)
SENSE ASense/Interrupt Request InputServes as interrupt request input when SC/MP Internal IE (Interrupt Enable) flag is set. When IE flag is reset, serves as user-designated sense condition input. Sense condition testing is effected by copying status register to accumulator.
SENSE BSense InputUser-designated sense-condition input. Sense-condition testing is effected by copying status register to accumulator.
SINSerial Input to E registerUnder software control, data on this line are right-shifted into E register by execution of SIO instruction.
SOUTSerial Output from E registerUnder software control, data are right-shifted onto this line from E register by execution of SIO instruction. Each data bit remains latched until execution of next SIO instruction.
FLAGS 0,1,2Flags OutputsUser-designated general-purpose flag outputs of status register. Under program control, flags can be set and reset by copying accumulator to statusregister.
AD00-AD11Address bits 00 through 11Twelve (TRI-STATE) address output lines. SC/MP outputs 12 least significant address bits on this bus when NADS strobe is low. Address bits are then held valid until trailing edge of read (NRDS) or write (NWDS) strobes. After trailing edge of NRDS or NWDS strobe, bus is set to high (TRI-STATE) mode until next NADS strobe.
DatabusOutput at NADS TimeDuring NADS time the four most significant bits of the addressbus are active at the outputs. Also some other special signals are available at the remaining database pinouts.
DB0Address Bit 12Fourth most significant bit of 16-bit address
DB1Address Bit 13Third most significant bit of 16-bit address
DB2Address Bit 14Second most significant bit of 16-bit address
DB3Address Bit 15Most significant bit of 16-bit address
DB4R-FlagWhen high, data input cycle is starting; when low, data output cycle is starting
DB5I-FlagWhen high, first byte of instruction is being fetched
DB6D-FlagWhen high, indicates delay cycle is started; that is, second byte of DLY instructions being fetched
DB7H-FlagWhen high, indicates that HALT instruction has been executed. (In some system configurations, the H-Flag output is latched and, in conjunction with the CONTinue input, provides a programmed halt).
DatabusStandard Output 
DB0-DB7Databus input/outputDuring the assertion of NWDS or NRDS data is written to or read from external devices. Except for NADS-time, at all other times the databus is floated in (TRI-STATE) modus.
VccPlus 5 voltsPower lead
GND *Ground (0 Volts)Power ground lead SC/MP-II (P-MOS)
VggMinus 7 VoltsPower negative lead SC/MP-I (N-MOS)
XIN/ XOUTClock Crystal inputsA quarts crystal between these leads will determine the clock-frequency of the SC/MP CPU. The SC/MP-II has an internal divide stage so its clock-frequency divided by two.

INS8060 or SC/MP Instruction format

Scmp Opcode

The SC/MP executes either 1 or 2 byte instructions, the first byte is called the OPCODE the optional second byte is the OPERAND. When the most significant bit of the OPCODE is set to 1 it will be a 2 byte instruction, the programcounter (P0) is automatically incremented to fetch the OPERAND byte. Most 2 byte instructions are memory reference instruction that will access memory external to the CPU. With the exception of the ILD and the DLD instruction the SC/MP will initiate a single byte read or write memory access, the ILD and the DLD instruction will do a read-modify-write instruction.

Scmp Registers

The internal register set of the INS8060 or SC/MP is VERY simple, it has only a few internal registers.

Accu

This is a standard accumulator register that contains the result of the most operations and usually holds one of the source operands.

Extension

The extensionregister has a multi purpose usage, it can be used to hold secondary operands to the extension instructions, it can be also be used to temporarily save the accu and it can be used as an 8-bit index register to facilitate relative indirect addressing. Whenever the 2nd byte operand of a memory reference instruction (called the displacement) holds a value of &H80 the content of the extension register is taken as the displacement instead of the 2nd byte operand. Also the extension register is used for the build in serial I/O capability of the SC/MP. The MSB of the extension register is connected to the SIN input and the LSB is connected to the SOUT output line.

Status

The status register contains a number of standard flags like the carry flag and the overflow flag and the interupt enable flag. However, the carry and overflow flags are not directly tested by branch-instructions. They must be copied to the accu first (CAS-instruction) and their state must be ascertained with bitwise logical instructions. Branch testing is only done on the state of the accu-register. Flag F0, F1 & F2 are connected to the flag pins for output. Sense SA & SB that are connected to the sense input pins.

The Pointer Registers P0-P3

The Pointer registers P1-P3 are used as datapointer, stackpointer and subroutine / interupt service pointers. Pointer register P0 is used as the Programcounter, the main difference with a normal programcounter is the fact that the SC/MP PC is incremented prior to fetching a new instruction, so the program always continues the next instruction at PC+1. Another feature of all pointer registers is that whenever a pointer-register is incremented by a auto indexed addressing mode instruction or an effective address is calculated that crosses a page boundary, the effective address folds back to the beginning of the page. Only when loading an absolute address into the pointer register the page boundary can be crossed! National Semiconductor recommends the following pointer register roles as a rule of thumb: P0 = Program Counter, P1 = Data of I/O Pointer, P2 = Stackpointer, P3 = Subroutine/interrupt Pointer. The XPPC instruction can exchange the content of the PC with any of the other pointer-registers so any Px can service a subroutine but only P3 can service a service routine for an interupt, because the XPPC3 instruction is generated automatically whenever an interupt is received.

INS8060 or SC/MP addressing Modi

All memory reference instructions make use of addressing modes to calculate the effective address of the memory reference. This could be to access the content of a memory location but also to determine the target adress of a branch or jump instruction. The SC/MP features the following addressingmodes:

PC Relative/Pointer-register Indexed Addressing

The 2nd byte of an instruction is taken as a displacement in 2s complement fashion and added to the current content of the designated pointer register to calculate the effective address. When the PC (P0) is used as the designated pointer register we call this PC relative mode. A 2s complement 8 bit value can contain any value from 127 dec to +127 dec. In the case of a PC relative Jump (branch) one should take into consideration the the programcounter will be incremented by 1, prior to the next opcode fetch.

Indirect Addressing

In SC/MP documentation indirect addressing is regarded as a special case of PC-relative and indexed addressing, in the event that the second byte of an memory reference instruction contains &H80 as a displacement value it is not taken as a negative displacement of 128 dec, but the content of the extension register is used as the 2s complement displacement to calculate the effective address.

Immediate Addressing

The second value of the instruction in a memory reference instruction is immediately used as source data for the instruction, no further address calculation is required.

Auto Indexed Addressing

This addressing mode is a bit like Indexed addressing but this time the pointer register itself is modified by the displacement in a pre decrement and post increment way. In the case of a negative displacement the pointer register is replaced with the effective address and then the memory access is executed. In the case of a positive displacement the memory access is executed with the current value of the designated pointer register, prior to replacing Px with the new modified calculated EA value. In this way we can used P1, P2 or P3 as a LIFO stackpointer.

Mnemonic@-modesOpcode1Opcode2TypeFlagsDescription
CO
ADD@DISP(X)1111.0maapppp.ppppMRXXBinary ADD mem. w. Carry
ADEe0111.0000 EXXBinary ADD extension w. Carry
ADIi1111.0100dddd.ddddIXXBinary ADD immediate w. Carry
AND@DISP(X)1101.0maapppp.ppppMR  Logical AND accu w. mem.
ANEe0101.0000 E  Logical AND accu w. extension
ANIi1101.0100dddd.ddddI  Logical AND accu immediate
CAD@DISP(X)1111.1maapppp.ppppMRXXADD memory complement w. Carry
CAEe0111.1000 EXXADD extension complement w. Carry
CAIi1111.1100dddd.ddddIXXADD immediate complement w. carry
CASst0000.0111 ST!!Move Accu to Status
CCLcy0000.0010 MF Clear Carry-flag
CSAst0000.0110 ST  Move Status to Accu
DAD@DISP(X)1110.1maapppp.ppppMRX Decimal ADD memory w. Carry
DAEe0110.1000 EX Decimal ADD extension w. Carry
DAIi1110.1100dddd.ddddIX Decimal ADD immediate w. Carry
DINT 0000.0100 M  Disable Interrupt
DLDDISP(X)1011.10aapppp.ppppMR  Decrement & Load memory
DLYi1000.1111dddd.ddddM  Delay
HALT 0000.0000 M  Halt instruction
IEN 0000.0101 M  Enable Interrupt
ILDDISP(X)1010.10aapppp.ppppMR  Increment & Load memory
JMPDISP(X)1001.00aapppp.ppppJ  Jump Absolute
JNZDISP(X)1001.11aapppp.ppppJ  Jump Non Zero
JPDISP(X)1001.01aapppp.ppppJ  Jump Positive
JZDISP(X)1001.10aapppp.ppppJ  Jump Zero
LD@DISP(X)1100.0maapppp.ppppMR  Load accu from memory
LDEe0100.0000 E  Load accu from extension
LDIi1100.0000dddd.ddddI  Load accu immediate
NOP 0000.1000 M  No operation
OR@DISP(X)1101.1maapppp.ppppMR  Logical OR accu w. memory
OREe0101.1000 E  Logical OR accu w. extension
ORIi1101.1100dddd.ddddI  Logical OR accu immediate
RR 0001.1110 SR  Rotate right accu
RRL 0001.1111 SRX Logical Rotate right w. Carry
SCL 0000.0011 MT Set Carry Flag
SIO 0001.1001 E  Serial I/O extension
SR 0001.1100 SR  Shift right
SRL 0001.1101 SRX Logical Shift right
ST@DISP(X)1100.1maapppp.ppppMR  Store accu to memory
XAE 0000.0001 E  Exchange accu w. extension
XOR@DISP(X)1110.0maapppp.ppppMR  Logical XOR accu w. memory
XREe0110.0000 E  Logical XOR accu w. extension
XRIi1110.0100dddd.ddddI  Logical XOR accu immediate
XPAH x 0011.01aa X  Exchange pointer high with accu
XPAL x 0011.00aa X  Exchange pointer low with accu
XPPC x 0011.11aa X  Exchange pointer with PC

The MK14

Mk14

An well known INS8060 or SC/MP board was the MK14 single board conputer, it was not an Acorn product but a first step in the creation of Acorn Computers. Chris Curry worked
with Clive Sinclair on the development of the MK14 as a Science of Cambridge / Sinclair product. The MK14 was made by Science of Cambridge (later becoming Sinclair Computers and
finally Sinclair Research), it was based on the National Semiconductors SC/MP (INS8060) processor and was sold as as a kit.

National Semiconductor produced quite a lot of other documentation for the SC/MP processor which will be of interest to MK14 owners:

Schematics

There were a number of versions of the MK14, the early version schematic is most likely the first version, the later version schematic refers to a version 5 that includes the updated address decoding required for the VDU.

Firmware

There are two versions of the MK14 monitor program, the first was on the first release of the MK14 and is just National Semiconductors SCMPKB. Then there was an upgrade that included the tape interface routines.

The MK14 PIC implementation

I found a very nice MK14 clone on this page an I intend to build this one. The PIC14 program will run in a PIC16F876, Ports A, B and C providing an interface to the display and keyboard. This is a very neat design and a nice piece of programming, it is a hardware clone of the MK14 using a PIC microcontroller.

Pic14

You can find this project on: Karen’s Microprocessor Projects

INS8060 or SC/MP related documents

INS8060 or SC/MP links, tips and webpages

More pages on embedded software

[catlist name=”Embedded software”]

Posted on 3 Comments

SC/MP processor IDE

Scmp2

This is a page about my SC/MP IDE program which is an editor / emulator / debugger / assembler / disassembler for the SC/MP processor all in one portable Windows executable. When I was 15 years old the Dutch magazine Elektuur published a lot of articles and designs about SC/MP computer boards and as I was fascinated. But I did not have the money to buy these chips and boards, so I build myself a paper version of the SC/MP board with a lot of ones and zeros on little paper. This is how I learned microprocessors and programming. Ten years later I would become a professional software / hardware engineer but mainly on Z80 based boards. Up until a few years ago I forgot about the SC/MP that was my first love but then I build a MK14 board (Karen Orton design) based on a PIC processor and I got interested again. You cannot buy a SC/MP processor anymore for a reasonable price and again I found a solution, I wrote a MK14 emulator for Windows. That gave me another challenge, there was no good assembler available except for a few multiple processor cross assemblers like the SB-assembler. But they all had errors in code generation, strange syntax so every source file had to be rewritten, and most annoying was that the offset (EA) calculation was wrong most of the time. In the sourcecode asm files you would see programmers correcting this by adding or subtracting values but this was not what I wanted. I could not find a decent assembler, so I decided to write my own SC/MP assembler, based in the syntax of the old original assembler. Then I added support for most of the syntax of the other assemblers as well. But in one thing I do not compromise, labels are followed with a colon. As I build IDE’s before for other processors I decided to write a complete development suite for the SC/MP processor, including assembler, disassembler, emulator, MK14,ELBUG and NIBL support, and a single step debugger. It is a portable program in x64 and x32 for Windows, it will run fine under WINE and the exe files are digitally signed with my code certificate. Have fun, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

SC/MP workbensch editor / emulator / debugger

Scmp Ide

To be able to program for the SC/MP (INS8060) you need an assembler but I could not find any good functioning one for Windows 10 / 11. There were still some programs to download but most of them did not work fine or needed extra runtime installed. After some searching I decided that it was time for a new hobby project, building a complete integrated SC/MP (INS8060) development environment. I wrote my own SC/MP (INS8060) assembler in good old portable C code and and re-used the SC/MP emulator that I had wrtitten for the MK14 emuator, and most of the rest I had somewhere in my code library. The result is SC/MP (INS8060) workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a terminal window, an MK14 compatible seven segment display with 8 LEDs and keyboard support.

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system. The zip file contains the exe files an a example program directory.

First time use

To practice there is an alarmclock_f20.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. The emulator is timing correct, you can adjust the processor speed in the top bar. You can now modify the program, reassemble it and run it again.

The IDE supports four configurations, the SIMPLE one is basically the first simple Electuur design with just 8 leds at 0x100 and keys on 0x200. The MK14 is a fully working MK14 emulator include the type 2 rom. The ELBUG emulation is the second design of Elektuur with a seven segment display and a monitor program. The NIBL implementation is the BASIC computer emulation, including the original rom and a hardware serial I/O emulation. In all configurations you can use the full IDE features including assembler and debugger.

By means of the step button you can execute the program instruction by instruction and check the output and the registers, and with trace on you can see each instruction that is executed. You can also enter the break address for code and ram read/write access. the emulator will then stop at this address and display the registers of that moment. When 0000 is entered in the break fields will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real SC/MP circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

Memory map

The emulator has the full 64K of ram memory and a part can be protected as rom by setting the Rom-end address. The memory mapped I/O is exactly like the machine hardware that is emulated including the shadow addresses. The keyboard is mapped to the hardware memory address bits of the emulated hardware so I could use original roms without any modifications.

Assembler

The assembler is a typical two pass assembler, on the first pass it does syntax checking and it collects and defines all symbols and during the second pass it will generate the code. The notation of the opcodes is the same as in the SC/MP (INS8060) datasheet, but for PTR register you can either use simply 1 of P1. The assembler contains an expression evaluator that will follow the regular mathematical rules first functions, then * and / and then + and -. The two functions are H() for the high byte of a word value and L() for the low byte of a word value. For compatibility reasons you can also use /label for H() and #label for L(). There are two special symbols that are overloaded, if a operand only contains a * or . this will represent the current address pointer.

The assembler knows the following directives:

.ORG <expression>Sets the current address pointer to <expression>
.ORsame as .org
.BYTE <expression> [,<expression>]Defines one or more bytes that will be stored in memory
.DBSame as .byte
Label: .EQU <expression>Adds a label with value <expression> to the symbol table
=Same as .EQU
.BS <expression>reserves <expression> bytes of memory at current address
.=Same as .BS
.DSSame as .BS
.WORD <expression> [,<expression>]Defines one or more words that will be stored in memory
.DWSame as .word
.ENDdefines the end of the source file
.ENSame as .end
.CRDummy ignore
.TFDummy ignore
.LFDummy ignore

Labels may contain _ A..Z and 0..9 and numbers can be written as: 99 (decimal), 0x99, 0X99, 0H99 or 99H (Hexadecimal)

Version 1.02

This is my second release version 1.02 the code has been heavily tested and debugged by myself and there might still be some little bugs in the program, I am open to bug reports and feature requests.

Download

Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, and example directory.

Download at: https://www.heinpragt.nl/?product=sc-mp-processor-ide

  • Version 1.02
    • Fixed .DW and .WORD bug.
  • Version 1.01
    • Initial release.

INS8060 or SC/MP Processor

This page is dedicated to my fist microprocessor, the INS8060, also called the SC/MP processor. At the time I was 13 years old and did not have much money, I could afford to buy an electronics magazine called Elektuur every month, and they published a simple computer board based on the SC/MP processor. I was very interested in computer technology at that time and I read all I could about the SC/MP processor. The SC/MP is my first processor and nowadays you cannot get the processor anymore (at least not at a reasonable price), but there are emulators in software and hardware that are still available. I have to say that I recemtly bought a SC/MP processor in China for 20 Euros. On this page I will share all documentations, links, schematics and code that I have or have found.
INS8060 or SC/MP Processor page

More pages on software development

[catlist name=”Software development”]

Posted on Leave a comment

Apple 1 emulator

Apple1

The original Apple Computer was designed by Steve Wozniak. They were designed and hand-built by Steve Wozniak. Wozniak’s friend Steve Jobs had the idea of selling the computer. The Apple 1 computer board was fist demonstrated in July 1976 at the Homebrew Computer Club in Palo Alto, California. The rest is history and although only a few machines were sold and a lot of them were lost in time, only a few machine are left and they are VERY expensive nowadays. Wozniak’s first wanted to use the Motorola 6800 processor but this was very expensive ($175) at that time and so he choose the much cheaper MOS Technology 6502 processor ($25). I started with the ISN8060 and the Z80 processor and I really disliked the 6502 processor, it was a simple and very limited processor in my view. A few years ago I build all kinds of replica machines in hardware and I also build and Apple 1 replica. It was then that I read the book IWoz and learned about the history of the machine. In modern design the Apple 1 was quite simple, Wozniak had build a terminal with a lot of logic chips in the past, he just added a cheap cpu, a small rom and ram and a PIA chip to create the Apple 1 computer. And yes, the Wozmon was a complete monitor program in just 256 bytes, that is something I respect. The basic version that Wozniak wrote was really bad, did not meet any standards and used integer arithmetic only. They hired Bill Gates and Paul Allen to write a decent basic for their new machines. I had written a decent Z80 emulator and a Intel 8052 emulator, this time I wrote a 6502 emulator. The first idea I had was building the Apple 1 computer emulator as I knew the design. The result is a portable Apple 1 emulator program for Windows 10 and 11. Regards, Hein Pragt.

Copyright

I respect copyright and I will not distribute illegal software. But this program includes the Apple 1 roms, and the zip file includes some old programs that still might be copyrighted. BUT in my opinion the copyright was from 40 to 45 years ago, these products have not been on the market for a lot of years and I think that no one would not care if someone was using a 40 year old basic interpreter on their own Windows 10 machines. As for the software, I feel the same, I do not ask any money for this package and the main goal is to keep the old spirit alive. I anyone can identify him or herself as a legal copyright owner and has problems with the distribution I will remove that content. But I seriously believe there is no one to object to distributing these old artifacts as freeware. My program itself is closed source but freeware.

What is inside this Apple 1 emulator

Apple1 Emulator

This Apple 1 emulator is exactly like the original Apple 1 computer with the Wozmon, but with a build in basic rom.

  • Emulates: Apple 1 computer with keyboard and TV monitor attached;
  • Basic: The original basic is loaded at startup at location E000;
  • Keyboard: Emulated by the PC keyboard;
  • CPU: MOS 6502 emulator the speed does not match the old hardware;
  • RAM: 64 kb with Wonzmon at FF00 and basic at E000;
  • VRAM: none;
  • Textmode: 40 chars x 24 lines;
  • Graphics: None;
  • Color: Black and white on green with screen;
  • Sound: None;
  • I/O: Emulation of the 6821 chip is done;
  • OS: No disk and no DOS.
Apple1 Wozmon

Keyboard mapping

The keyboard is mapped to the original Apple 1 keyboard mapping, f.i. the backspace key is converted to the Apple 1 mapping. Alle characters are converted to uppercase, just like the original Apple 1 keyboard would do.

Wozmon

At startup of this program it will load the Wozmon and the Basic in memory and then start the Wozmon. You can play with the Wozmon, and go to basic using the E000R command. But you can also go the basic using the menu on top, or reset the machine back to the Wozmon monitor program. In Wozmon mode, you can download .woz (hex files) to load machine code programs from your Windows filesystem. But you can also save of load binary files into memory and execute them with the xxxxR command.

Apple 1 basic

I also load the original Aplle1 basic on startup of the program, you can start basic with the E000R command from Wozmon of with the top menu bar. You can type in your own programs or load them from your Windows filesystem. This is done by keyboard redirection. I have found some Aplle1 basic programs and games to demonstrate the old Aplle1 basic, they are included in the download zip file.

Apple 1 figFORTH 1.1

You can start a port of figFORTH 1.1 for the Apple I from the top menu, resulting in a powerful programming environment for experimentation or computer control applications. The binary file is in the root directory together with the exe files and can be exchanged. It will be loaded at 0x0300 and after loading it will be executed at 0x0300.

Download

Here you can download the latest version if this Apple 1 emulator. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, and a directory with programs in .BAS and .WOZ format. It use a portable program, just unpack it somewhere on the disk and start it by clicking it. This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download x64 (and x32) version 1.03 of Apple 1 emulator (2023)

  • Version 1.03
    • Added support for Forth, you now can also select in the top menu to load and run Forth on the Apple 1 emulator, the binary file is external.
  • Version 1.02
    • Rom is now external so you can experiment with different roms or build your own rom for the Apple1 hardware.
  • Version 1.01
    • First (beta release) version, the program has been testen by myself on my hardware.

Download old versions

Download x64 (and x32) version 1.01 of Apple 1 emulator (2022)

Apple1 replica hardware kit

Apple1 Replica

There is also a nice DIY project to make a working Appl1 1 replica, with the correct 6502 / 6821 / ram / rom hardware and a Arduino Nano to emulate the keyboard and video circuit hardware. It is a nice compact kit and this emulator is based on this kit. I sell the PCB and a partial Kit in my webshop.

The PCB together with alls the chips and sockets.

The PCB of this board only.

Retro computing webshop

Heinpragt.nl is a daughter site of this website and a webshop focused on retro computer parts, retro electronics components and chips and other articles that have a connection with old retro computers. It is a small webshop that I run myself and I also try to get some more information about retro computers and electronics. Shipments are only made to countries within the European Union.
Retro computing parts webshop

More pages on emulator software

[catlist name=”Emulators”]

Posted on Leave a comment

MK14 emulator

Mk14

This page is about my MK14 emulator for Microsoft Windows. The the INS8060, also called the SC/MP processor was the first real processor I studied when I was 13 years old, but at that time I did not have much money,so I could not afford to buy a real computer board. I read all I could about the SC/MP processor and I would draw the internal of the processor on a big piece of paper, with the RAM / ROM / keyboard and display as registers and I would have a lot of small zero and one papers to simulate the flow of the bits and bytes in the (paper) circuit. Looking back this was ridiculous, but this is the way I learned computer design and binary logic. The SC/MP is my first processor and nowadays you cannot get the processor anymore (at least not at a reasonable price), but there are emulators in software and hardware that are still available. After building two PIC14 boards I decided to also write a MK14 emulator for Microsoft Windows. I dedicate this program to Karen Orton (R.I.P.) who left us the amazing PIC14 hardware emulator. Regards, Hein Pragt.

Copyright

I respect copyright and I will not distribute illegal software. But this program includes the MK14 rom, and the zip file includes some old programs and documents that still might be copyrighted. BUT in my opinion the copyright was from 40 to 45 years ago, these products have not been on the market for a lot of years and I think that no one would not care if someone was using a 40 year old file on their own Windows 10 machines. I do not ask any money for this package and the main goal is to keep the old spirit alive. If anyone can identify him or herself as a legal copyright owner and has problems with the distribution I will remove that content. But I seriously believe there is no one to object to distributing these old artifacts as freeware. My program itself is closed source but freeware.

What is inside this MK14 emulator

Mk14 Board

This emulator of the MK14 has full memory expansion on 200H, 800H and B00H and the first 0x200 bytes contain the second version of the MK14 rom. The on screen keys work as they should do, you can also us the keys on your keyboard, the mapping of the command keys is on top of the key.

Mk14 Menu

You can load programs in hex format using the top menu, the last digits of the filename is the starting address. Press reset or abort then enter the address and push the go button. You can also save the memory to a hex file, the first option only saves the original memory 0xf00 to 0xfff, the second option saves the entire ram from 0200 to 0fff. The instructions are cycle precise and the MK14 emulator runs on the same speed as an original MK14 would, so it can be slow sometimes, but its real.

Mk14 Disk

This is a so called portable program, you do not need to install it. Just download the zip file and unpack it on an logical location on your disk. I have all my portable application in a top directory “portapps”. There is a win62 and a win32 version of the MK14 emulator, both are digitally signed for your safety. There is also a directory containing a lot of example programs I collected, with sourcecode and hex files. The is also a documentation directory that contains the original MK14 manual and some SC/MP programming manuals and datasheet.

Download

Here you can download the latest version if this MK14 emulator. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, and a directory with example programs. It use a portable program, just unpack it somewhere on the disk and start it by clicking it. This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download x64 (and x32) version 1.01 of MK14 emulator (2023)

  • Version 1.01
    • First (beta release) version, the program has been testen by myself on my hardware.

Retro computing webshop

Heinpragt.nl is a daughter site of this website and a webshop focused on retro computer parts, retro electronics components and chips and other articles that have a connection with old retro computers. It is a small webshop that I run myself and I also try to get some more information about retro computers and electronics. Shipments are only made to countries within the European Union.
Retro computing parts webshop

More pages on emulator software

[catlist name=”Emulators”]

Posted on Leave a comment

MPF-1 emulator

Mpf 1

The Micro-Professor MPF-1 was introduced by Multitech in 1981 and it was Multitech’s first computer product and probably one of the world’s longest selling single board computers. Multitech changed its name to Acer in 1987. The MPF-1 was based on the Zilog Z80 microprocessor and designed specifically to teach the fundamentals of machine code and assembly language. The MPF-1 doesn’t look like a standard microcomputer board, it comes in a plastic book that folds out into two parts, along with two audio cassettes and a training manual. When closed, the MPF-1 can be placed on a bookshelf for easy storage which made it more attractive as it was easy to store. There are still quite a few MPF-1 boards for sale and you see them regularly on auction and marketplace websites. I haven’t owned an MPF-1 myself, but I’ve read a lot about it and secretly hoped I could get one someday. In the end I wrote a full implementation of an MPF-1 emulator including the old keyboard and seven segment displays. Regards, Hein Pragt.

Copyright

I respect copyright and I will not distribute illegal software. But this program includes the MPF-1 rom, and the zip file includes some old programs and documents that still might be copyrighted. BUT in my opinion the copyright was from 40 to 45 years ago, these products have not been on the market for a lot of years and I think that no one would not care if someone was using a 40 year old file on their own Windows 10 machines. I do not ask any money for this package and the main goal is to keep the old spirit alive. If anyone can identify him or herself as a legal copyright owner and has problems with the distribution I will remove that content. But I seriously believe there is no one to object to distributing these old artifacts as freeware. My program itself is closed source but freeware.

What is inside this MPF-1 emulator

Mpf1 Emulator

This MPF-1 emulator emulates a standard MPF-1b, but the rom is in the subdirectory and you could replace it if you like. It uses the old display that is also emulated and the on screen keyboard acts like the original keyboard of the MPF-1. In this version there is no sound support, I will add this in the future. Its has full memory expansion and emulates all the hardware components.

Mpf1 Emulator Menu

You can load and save programs in hex or binary format using the top menu. Press the go button to execute the program. When loading and saving the program will prompt for start and end adressed, this will require some knowledge of the memory map of the MPF-1 board.

This is a so called portable program, you do not need to install it. Just download the zip file and unpack it on an logical location on your disk. I have all my portable application in a top directory “portapps”. There is a win64 and a win32 version of the emulator, both are digitally signed for your safety. There is also a directory containing the rom and example programs I collected, with sourcecode and hex files.

Download

Here you can download the latest version if this MPF-1 emulator. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, and a directory with example programs. It use a portable program, just unpack it somewhere on the disk and start it by clicking it. This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download x64 (and x32) version 1.01 of MPF-1 emulator (2023)

  • Version 1.01
    • First (beta release) version, the program has been testen by myself on my hardware.

Retro computing webshop

Heinpragt.nl is a daughter site of this website and a webshop focused on retro computer parts, retro electronics components and chips and other articles that have a connection with old retro computers. It is a small webshop that I run myself and I also try to get some more information about retro computers and electronics. Shipments are only made to countries within the European Union.
Retro computing parts webshop

More pages on emulator software

[catlist name=”Emulators”]

Posted on 3 Comments

TRS80 emulator

Trs80 Model1 Level2

The Trs80 model 1 level II was my first computer in 1978 and I have worked on it for many years. I upgraded it to 64 Kb ram by piggybacking the ram chips and I did the lowercase modification. My TRS80 had some extra buttons on the backside for the modifications I did, but I never owned a expansion unit and I never had disks. It was a 64 kb TRS80, with lowercase mod and a joystick interface and a cassette player / recorder for loading and saving programs. I wrote a lot of programs in these days, in Basic and assembler. My TRS80 machine broke and was stored in the basement and on one of my moves to another house it got lost. I still write programs for the Z80 and I have written a good emulator and programming IDE with CP/M emulation and so the idea for building a virtual TRS80 was born. There are several good emulators, but mostly not in a true Window (most of them are console applications) and most of them emulate an awful lot including the cassette and disks (even with the original sound) and the waiting for a program to load for more then 10 minutes. These are the true FULL emulators that emulate the old hardware including all the faults. These programs mostly do not include roms and they have a lot of settings, I used them but the lot of settings and the painful loading was annoying to me. I like simple and easy to use portable programs that can be used out of the box. And so this TRS80 emulator was born, it is a easy to use emulator that will give you the experience of using the old machine, but with modern loading speed and cassette tapes on the PC storage. On this page I will tell you what it is, what it can do and also what it cannot do. Regards, Hein Pragt.

Copyright

I respect copyright and I will not distribute illegal software. But this program includes the model I and III roms, and the zip file includes a lot of cassette tapes of old programs that still might be copyrighted. BUT in my opinion the copyright was from 40 to 45 years ago, these products have not been on the market for a lot of years and I think that for instance Microsoft would not care if someone was using a 40 year old basic interpreter on their own Windows 10 machines. As for the tape software, I feel the same, I do not ask any money for this package and the main goal is to keep the old spirit alive. I anyone can identify him or herself as a legal copyright owner and has problems with the distribution I will remove that content. But I seriously believe there is no one to object to distributing these old artifacts as freeware. My program itself is closed source but freeware.

What is inside this emulator

Trs80 Emulator1

This emulator is exactly like my own old TRS80 computer with one added extension and that is the Model II roms.

  • Emulates: TRS 80 Model I level 1 and level 2 and the Model III computer;
  • Basic: Level 1 (4k ROM) / Level II (12k ROM) / Model III (14k ROM);
  • Keyboard: 53 keys emulated by the PC keyboard;
  • CPU: Zilog Z80 / 1.77 MHz, the speed is recalculated to match the old hardware;
  • RAM: 64 kb;
  • VRAM: 1 kb;
  • Textmode: 32 x 16 of 64 x 16;
  • Graphics: 128 x 48 pixels, screen is resizable;
  • Color: Black and white on green with screen;
  • Sound: Emulated on PC hardware from the cassette port;
  • I/O: Emulation of the Joystick on thge arrow keys of the PC and the spacebar;
  • OS: No disk and no DOS.
Trs80 Emulator3

Keyboard mapping

The keyboard of the TRS80 had a different layout than modern keyboards, I chose to map all the keys and special characters of the PC keyboard to the corresponding key of the TRS80. There is one key that is not in a PC keyboard and that is the BREAK key, this key is mapped to the END key of the PC keyboard. The cursor keys are mapped to emulate several joystick extensions on the TRS80, on most games that used the joystick, the cursor keys and spacebar will work fine.

Casette I/O

One of the things that was annoying in the old days was the waiting for a program to load. This could easily take up 5 to 10 minutes and most of the emulators use the internal old rom routines to read cassette tape files. Even first loading a tape, then type cload and then press play on the virtual cassette recorder. It is like he original experience but I did not like that. So I patched the roms to reroute the CLOAD and CSAVE to my own Windows routines that can load and save in a few seconds and even can read (and write) several cassette formats. A basic CAS file will auto-run, I find that convenient, and Ascii based basic fille will not auto-run. You can also load and save with the menu on top of the window. But you could load a basic file in Ascii and save it to a CAS file. There are only a few settings, like selecting a machine and resetting a machine. Maybe in the future I will expand this a little, but never too much.

Trs80 Emulator2

Download

Here you can download the latest version if this TRS80 emulator. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, some directories with programs in .BAS and .CAS format. It us a portable program, just unpack it somewhere on the disk and start it by clicking it. This program is digitally signed with my own code certificate and it is trusted by Microsoft windows.

Download x64 (and x32) version 1.00 of hmp_trs80_emulator (2022)

  • Version 1.00
    • First (beta release) version, the program has been testen by myself on my hardware.

Links to information, documentation and tips

A very extensive description with schematics of the TRS80 Model I level II computer.
Sams ComputerFacts – Model I (1985)(Howard Sams)(pdf)

The well-known technical reference manual that Tandy sold and which was very poorly available.
Radio Shack TRS-80 Micro Computer Technical Reference Handbook 2nd

This is the technical reference manual of the TRS80 expansion interface.
Expansion Interface Service Manual (19xx)(Radio Shack)(pdf)

Wikipedia’s page about the TRS80 model 1.
TRS80 wikipedia page

A very complete page with information about the TRS80 model 1.
www.trs-80.org/model-1.

Another very complete page with information about the TRS80 model 1
oldcomputers.net/trs80i

A nice page about bringing a TRS80 Model 1 computer back to life.
classic-computers.org.nz/blog/2015-03-13-trs-80-model1-L1-fix

A site with a lot of information about all TRS80 computers (Ira Goldklang).
Ira Goldklang’s TRS-80 Revived Site (Engels)

More pages on emulator software

[catlist name=”Emulators”]

Posted on 1 Comment

Z80 on Arduimo Mega

Z80 Mega05

Zilog Z80 Arduino Mega I found an interesting project on the Internet of a Z80 processor on a breadboard that was connected with wires to an Arduino Mega board. It had some code with it, it was far from complete but it triggered me. I adopted the idea and improved it, rewrote the Arduino code and improved the hardware design. The Z80 processor in this project is running at 200 Khz, clocked from the Arduino and the Arduino emulates 8 kb of ROM and 6 kb of RAM and serial input and output. With this simple and cheap configuration you have a complete working Z80 based computer. With some adjustments I even got a complete Basic interpreter running on this hardware with the serial I/O of the Arduino as interface. But it is also nice to write your own assembler code and see it not only running in an emulator, but also on a real Z80 processor. Just put your generated HEX code in the memory.h file and recompile the Arduino sketch and upload it to the Mega board. On reset the Z80 will execute the code in the ROM section of the MEGA. Have fun! Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

Building a Z80 Arduino Mega computer

What do you need for this project? Well at first an Arduino Mega board, then a development shield, a 40 pin socket for the Z80 processor, some breadboard wires and two rows of header pins. At least, that’s how I build it and the parts are all re-usable. You can also put the Z80 on a breadboard beside the Arduino Mega and use longer wires. Longer wires will effectively have some influence on the reliability and the speed. I soldered the socker on the development shield and also soldered the two rows of header pins alongside the socket. For a more permanent solution you could also solder all the connections from the Z80 socket to the header pins of the Arduino. There are many possibilities, its up to you how to make this project. The wiring diagram is below.

I noticed that the below configuration will only work with a NMOS version of the Z80 processor, I used a AB1 version!

Z80 Mega04

The pins on the Arduino are chosen to pair the data and address lines to fixed 8 bit ports of the Arduino Mega so its easy to process them. The data lines are connected to pins 42-49 and this is the port L register of the Arduino Mega. The lower 8 address lines are connected to pin 22-29 and this is the port A register of the Arduino Mega. The upper address lines are connected to pins 32-37 and this is the port C register of the Arduino Mega. The INT, RESET and WAIT pins are outputs of the Arduino Mega and inputs on the Z80. The M1, IQREQ and MREQ are input pins on the Arduino and output pins on the Z80. These are control signals and the pins on the Arduino Mega are not dedicated. The CLK line is, this is connected from pin 10 of the Arduino Mega to the Z80 and pin 10 is the output pin of one of the internal timers of the Arduino Mega, to generate the clock signal for the Z80. You can program the speed by programming the divider in the Arduino. The most important lines are the RD and WR lines of the Z80, we connect them to the Arduino pins 18 and 19 so they can be used to generate interrupts on the Arduino Mega for the read cycle and the write cycle of the Z80 processor. On the Z80 some unused pins must be connected to +5V and the ground pin must be connected. That’s all.

Z80 Mem Cycles

The RD and the WR are used to trigger interrupts on the Arduino Mega, so all the read and write actions will be processed in the background. The triggers od the interrupts are on the falling edge of the signals, that is de start of the RD and WR signal. On read we will first read the address from the address lines and if its below 2000h we will read the flash memory array (8K) of our Arduino (our Rom) and it its above 2000h we will read the memory array (6K) of the Arduino (out Ram) and put this data on the data bus to be read by the Z80. On WR we also read the address pins and also read the data pins, then we will store it in the memory array inside our Arduino memory. You cannot write to Rom so we do not need to handle that. It seems quit simple.

But we also need to process IO requests, so at the start of the interrupt routines we first check the MREQ pin. If this is active it is a memory request and we do the above. Then we test the IOREQ pin, if this is active it is an IO request. We now read the lower part of the address register (the Z80 only uses the low bytes) to determine the port. If it is an IO read, we read the data and if its port 1 we will send the data to the serial port of the Arduino. If it’s a IO read we check the lower address line for the port number and then its important to activate the WAIT l ine. Because we are going to do some serial IO things on the Arduino Mega, this will take more time on the Arduino Mega than the length of the read cycle of the Z80. The Z80 has a feature for slow IO devices that’s called the WAIT pin. When this pin is active the Z80 waits the IO operation until the device has the data ready and deactivates the WAIT pin. We now have enough time to poll the Serial buffer of the Arduino Mega and return the data (character received or the buffer status) on the data pins for the Z80 to read.

Z80 Mega06

In basic we now have a complete emulation of Rom, Ram and IO device to the Z80 processor. At the start of the Arduino sketch, I first declare the pins of the Z80 to map them to Arduino registers. I also have some macros to read the state of pins or set the state of pins. This makes it easier to use in the code. Then I set the correct lines to input and output, its important to use the internal pullups on the address lines. Then initialize the serial port of the Arduino to a high speed and activate the RESET pin of the Z80 processor. This will start running and executing the instructions that I reads from our Arduino Flash memory array and read / write data to the ram memory array inside our Arduino Mega. We can start the serial terminal of the Arduino to see the serial output and send characters to the Arduino Mega and thereby to the Z80. You can also use any other terminal program. I included a version of the (little modified code) of the basic interpreter I got form the website of Grant Searle, a great electronics designer.

You can use my Z80 IDE to develop programs for this device, just set the rom area to 0000-2000 and the ram to max 3800 and then you can write, test and debug your Z80 assembly code. Do not forget toe initialize the SP register somehere in the Ram area. When its working, just export it to a HEX C style array (files menu) and cut and paste that code to the memory.h file of the Arduino sketch. Recompile the sketch and send it to the Arduino Mega, on reset the Z80 program will run on a REAL Z80 processor. I think that is cool.

You can expand the Arduino sketch, currently there is no code in the loop(), you can add your own code here, f.i. to read sensors or and SD card, but you can also use the ports of the Arduino as digital or analog input / outputs (just add an IO port section) to interface the Z80 processor. It’s up to your own creativity. Be aware that in this setup I tested that the maximum reliable clock speed of the Z80 is about 200 kilohertz, so that’s rather slow. You cannot speed this up too much, the Arduino will not respond in time on the Z80 requests and the wires will also cause a loss in signal quality. But is is a nice experiment if you want to play around with the old Z80 processor, I had a lot of fun building and developing this. Have fun!

The code and schematics

Z80 related documents and webpages

More pages on embedded software

[catlist name=”Embedded software”]

Posted on 16 Comments

Z80 processor IDE

Z80 Header2

This is a page about my freeware Z80 IDE program which is an editor / emulator / debugger / assembler / disassembler for the Z80 all in one portable Windows executable. Many years ago when I was programming the Z80 professionally and at home, tools were very expensive. There was not much freeware or opensource, but trough my employer I had most of the tools I needed. When I was twenty years old in 1979 I bought my first real computer, the Tandy TRS-80 model I level II with a Z80 processor at its heart. I wrote a lot of programs in Z80 assembler for this computer and all computers I bought after that had a Z80 processor like the Sinclair Spectrum and later the MSX. My first IT job was developing hardware and software on embedded Z80 systems (cash register and machine control systems) in assembler and PL/Z. After that I started working at Micro Technology (an MSX hardware supplier) and there I was also programming a lot in Z80 assembler, bat I also learned to write in C and I had a good C compiler for the Z80. assembler. The Z80 was a genius design for its time and its funny that this processor is still used a lot in for instance the Nintendo Gameboy but also in the Texas Instrument scientific calculators. Also there is a growing group of computer hobbyist that keep the processor alive by creating new single board computers based on the Z80 processor. For development and debugging Z80 assembler code, this freeware IDE can be used. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

Z80 workbensch editor / emulator / debugger

Z80 Workbench

To be able to program for the z80 you need an assembler or compiler. I personally still like to write in Z80 assembler but I could no longer find tools for Windows 10. There were still some programs to download but most of them worked at DOS level. After some searching I decided that it was time for a new hobby project, building a complete integrated Z80 development environment. I found a pretty good assembler and good portable C code from an emulator and the rest I had somewhere in my code library. The result is Z80 workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a terminal window, an MPF-1 compatible seven segment display with 8 LEDs and keyboard support.

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.

First time use

To practice there is an example4.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.

The basic2.asm is an example of the basic assembler file from Grant Searle, I only added a modified BIOS file at the end and an .org 0000h at the end to set the start adresss.

The monitor.asm is an example of the sourcode of a simple monitor program to input hex bytes a an address, dump bytes of ans address to terminal and call an aadress in memory.

By means of the step button you can execute the program instruction by instruction and check the output and the registers. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real Z80 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The emulator has a standard number of I/O ports for input from the keyboard and output to the terminal screen or the seven segment displays / LEDs. In example4 there is an example of both.

  • In port 1: Returns the character of the keyboard in A register, when there is no sign a 0 character will be returned.
  • In port 2: Return the status of the keyboard, 0 no keystroke is available, unequal to 0 means a keystroke is available. The character must then be read on port 1.
  • Out port 1: Data for terminal or seven segment display. When Out port 2 is a 0, the data will go to the terminal. If port 2 is unequal to zero, the data will go to the seven segment display.
  • Out port 2: Selection terminal (0) or seven segment display. When a segment select bit (0..5) is 1, the display data will be send to each seven segment display that has its bit set to 1. It is therefore possible to address each display individually as well as multiple displays at the same time. To turn everything off, first set 0xff to port two and then a 0 to port 1. To switch back to the terminal, you have to write a 0 to port 2 again. (In contrast to the MPF-1, the data of the display is latched.)
  • Out port 3: This port is a latch to the eight LEDs where each bit controls an LED.

Credits: Credits go to Jorge Giner Cordero for letting me use and distribute his Z80 assembler.

Version 2.01 – 2.04

After version 1.07 I decided to add full support for a Z80-MBC2 emulator including CP/M 2.2 because I use this board and then I noticed some errors in the Z80 emulator code. So I decided to fix that and before I knew I was starting to rewrite all of the emulator code and now it is good and supports a lot of extra undocumented features of the Z80 processor. For CP/M 2 I needed a VT100 terminal, I had the code from 30 years ago when I write my own terminal when I was working with a DEC 750 VMS machine so I could reuse this code with some adjustments for Windows. When debugging the Z80 emulator I needed better breakpoint and tracing so I also added all these features. By this time I realized this would not just be version 1.08 but it is clearly a major upgrade so I decided to go for version 2.01. I included som CP/M disks and some old CP/M programs I still had as well. Just click Z80-MBC2 CP/M 2.2 in the main menu and then push the RUN button and you are on a Z80-MBC2 emulator machine with VT100 terminal and a few disk drives.I hope you like the new features and I will continue to improve this Z80 workbench, I have some new options in mind, like CP/M disk management and support for emulating more hardware and machines as well. In version 2.04 I added full support for hardware and software emulation of the famous MPF-1 board. I support the basic board, with an on screen keyboard, the 8255 I/O chip and the keyboard and display scan as well. I do not support tape load and tape save, these buttons link to the standard save hex and load hex as nice replacements. You can use the debugging solutions of the MPF-1 in combination with the debugging solutions of the IDE and you can use the assembler / disassembler together with the MPF-1. For the MPF-1 I also added support for the Z80 None Maskable Interrupt because the MPF-1 uses that for single stepping. And as usual I added one example program for the MPF-1.

Buy Z80 chips and support chips

I also have a webshop where you can buy all kind of Z80 chips and support chips to repair or create youre own Z80 board.

https://www.heinpragt.nl/?s=z80&post_type=product

Download

Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, two example directories, a CP/M disks directory and an assembler directory and a MPF-1 directory. The zip file is just a container, only copy the “z80_workbenchdirectory from the zip file to a location on your harddrive.
There was a last minute bug in the 204 version, the SIMPLE mode did not work correct anymore, this is fixed in the 204A version.

https://www.heinpragt.nl/?product=z80-processor-ide

  • Version 2.04
    • Fixed seven segment display blanks and errors after heavly use.
    • Fixed seven segment display lines are wider now.
    • Fixed R register is now functioning like it should.
    • Added MPF-1 emulation, with original ROM and keyboard and display in true MPF-1 mode.
    • Added MPF-1 hardware emulation (8255) and ram / rom mapping.
    • Added mpf1 directory with hex code of ROM and example assembler file.
    • Added None Maskable Interrupt button and correct handling in emulator.
  • Version 2.03
    • Included latest version 1.10 of uz80as.exe in this project.
    • Added -u option to assembler to enable undocumented instructions.
    • Fixed false caret display in VT100 terminal.
    • Fixed error in VT100 terminal with 80th character on next line.
  • Version 2.02
    • Fixed error in VT100 handling that would cause a crash of the program.
    • Added new cursor handling in VT100 using the Windows caret.
  • Version 2.01
    • Complete rewrite of the Z80 emulator code, it now also supports all the undocumented features.
    • Added full Z80-MBC2 emulation mode (inluding CP/M 2.2), including R/W SP/M disk images from Z80-MBC2.
    • Added the CP/M drives from Z80-MBC2 and an extra drive H: that contains some old CP/M programs I had like Sargon Chess, an Aventure game and Zork.
    • Click Z80-MBC2 CP/M 2.2 in the main menu, push the RUN button and you are on a Z80-MBC2 machine with VT100 terminal and a few disk drives.
    • Changed the layout of the screen to fit a complete functional VT100 terminal emulation.
    • Added a notification window for errors and tracing.
    • Removed cycle counting.
    • Added new top menu items for window and terminal settings.
    • Added support for monitting and editing 4 memory locations realtime (Handy for memory mapped I/O).
    • Added support for breakpoint on memory access.
    • Added support for start of trace on breakpoint instead of stopping.
    • Added support for loading binary files (like roms) into memory.
    • Improved disassembler, better syntax and newlines after jumps and return statements.
    • Added realtime tracing in notification window with address and disassembled instruction.
    • Beside x64 there is also now a x32 version.
    • Added feature to write all terminal output to a file in the base directory.

Extentions to the IDE

George Kordogiannis wrote some nice additions to the IDE that I will include in the new version. For now I want to make the additions available to all existing users with this download. Just download the file and add (overwrite) the subdirectories of the z80_ide. It will also add a cpmtools directory.  F.i. it makes it possible to send HEX programs to your CP\M environment, and run them. Inside the cpmtools folder you will find 4 BAT files.

LS.BAT shows the contents of your CP\M folder

TRANSFER.BAT transfers the file you put inside the BAT file to your CP\M folder

With TRANSFER1.BAT it asks you to write the name of the HEX file you want to transfer.

With KILL.BAT we delete the given file from your CP\M folder

Finally in CP\M now with the LOAD command we can convert it to COM and run it.

This way you can write, save it in examples folder and develop a program on Z80 testing it directly in CP\M environment without having to transfer it to Z80-MBC2 which is a time-consuming process.

Download this zip file here: z80_wb_additions.zip

Z80 links, tips and documents

More pages on software development

[catlist name=”Software development”]

Posted on 6 Comments

Adventure interpreter

Pirate Adventure Start

In 1980 I started playing games on my TRS-80 computer and my favorite games were adventure games and especially the adventure games from Adventure International. During that time I also wrote my own adventure game in basic based on an article by Scott Adams (the man behind Adventure International) (www.msadams.com) about his adventure interpreter. Years later I came into contact with Scott and a friendship developed and even now I still have regular contact with my American friend. In 1997 I adapted the scottfree version of the adventure interpreter and I improved it and added missing features. I wrote a windowed version for Microsoft Windows (Visual C) and this version is released on a CD with a large collection of old Adventure games in America. In 2005 I made a new version and in 2013 I also made a new improved version with a new user interface. Now it is 2023 and I have written some emulators and for the adventure games I went back to basic. No more MS Windows multiple windows, but just an old terminal screen just like the way it used to work in 1980. Version 4.0.1 of my adventure interpreter is back to the basic. Sometimes it is nice to get a taste of the very old atmosphere of the old text adventure games.

Download Scott Adams adventure interpreter 4.0.1.

Download link:   AdvInt401.zip

*) The zip file contains a x64 and x32 version of the program and all the Scott Adams game file and some extra game file from other authors.

This program is a so called portable program, you do not need to install it. Just download the zip file and extract it in a directory on your disk. I have all my portable programs in a root directory “portapps”. There is a x64 and x32 executable, both files are digitally signed with a coding certficate for your safety and to be trusted by Windows defender and virusscanners. If you find as bug or have a remark, I like to receive feedback to improve this program.

Version 4.0.1

  • In this version the user interface has completely changed to a terminal emulation like the old personal computer screens.
  • There is no Spanish translation in this new version, the old Spanish version is still available.
  • I renamed all the adventure dat files and added some more from my archive.
  • There is no longer a dropdonw of the verbs and nouns, but there is a Hint command in the top menu that will show them.

I hope you will enjoy playing this old games, just like the old times. Regards, Hein Pragt

Older versions

I deleted some things in the new version, there is no Spanish version anymore, there is no dropdown of verbs and nouns, but there is a hint command in the top menu that will show all verbs and nouns. For people who like the old interface I still have the older versions on this page as well.

Download Scott Adams adventure interpreter 3.0.6.

Download link: AdvInt306.zip

  • In this version 3.0.6 the game flags are reset when loading a game, and the typed command is put into the message window. Also there is a English and a Spanish version in the zip file.
  • In version (3.0.4) 2018 you can stretch the main window to make the inventory field wider.
  • In version (3.0.3) 2014 I fixed a bug in loading a saved game and a bug that prevented one action to be executed.
  • The previous version (3.0.2) 2013 was the Windows XP verdion. The current versdion works fine on Windows 10.

With this interpreter program you can play the old text adventures of Scott Adams (Adventure International) on your Windows PC. Fourteen original adventure games are included in the same zip file.

The latest version has a greatly improved (English) user interface, buttons for the most used commands, a separate inventory window and dropdown lists with all commands and objects. This makes it easier to play as sometimes the old games were more “guess the right words”. This version of the program makes it easier to play these old adventure games with a modern user interface. I made this version “just for fun” because sometimes programmers just have to make something fun without any commercial interest just because “it’s fun!”. I hope you will also enjoy this program and the old adventure games.
Regards, {-Hein Pragt}

Download Scott Adams game interpreter older versions.

Link: advent201.zip
This ia an older version (2.01) 2005 of the windows95 / 98 / NT / 2000 / XP version of the Scott Adams adventure interpreter.

Link: advent105.zip
This is a very old version (1.05) 1997 of the windows95 / 98 / NT / 2000 / XP version of the Scott Adams adventure interpreter.

Scott Adams adventure games dat files.

Link: advents.zip
This zip file contains all data files from Scott Adams’ text adventure games, you can also visit Scott’s homepage Adams himself (www.msadams.com) where you can also play more recent adventure games.

Games in this zip file:

  • #1 Adventureland (1978)
  • #2 Pirate’s Adventure
  • #3 Mission Impossible (1979)
  • #5 The Count (1981)
  • #6 Strange Odyssey
  • #7 Mystery Fun House
  • #8 Pyramid of Doom
  • #9 Ghost Town
  • #10 Savage Island, part 1
  • #11 Savage Island, part 2
  • #13 Sorcerer of Claymorgue Castle (1984)
  • #14 Return to Pirate’s Island

About Scott Adams.

Scott Adams wrote the first commercial text adventure game for the personal computer. He wrote Adventureland fot the TRS-80 computer in BASIC. Scott based his play on Colossal Caves, written by Will Crowther and Don Woods on one DEC PDP-10. Scott Adams started a company called Adventure International in 1978 and between 1978 and 1984 he wrote fourteen text adventure games for the TRS-80, Atari, Apple II, C64, Sorcerer, TI and CP / M computers. All games used the same two word command parsers with which the games could play the game. GO EAST, GET SNEAKERS and SAY YOHO were well-known commands.

Scott Adams started selling the Adventureland game by placing a small ad in a computer magazine and turning on the game sell cassette tapes. One of his first sales was fifty copies to the then well-known Radio Shack company in Chicago. In December 1980, Byte magazine wrote an article about Scott Adams’ adventure games and its peak period Adventure International company had a turnover of 3 million dollars. They also signed a major contract with Marvel Comics all known action figures to release an adventure game.

But when the first dip came in the video games market in the mid-80s, Adventure International unfortunately went bankrupt and all licences of the games went to the bank that held them for years. At the end of the last century, Scott got the rights to his old games back and made them freely available to play. He did retain the copyright on these games. Scott Adams now lives in Wisconsin and has worked for years as a senior programmer for Avista Inc. He is now retired, enjoying life and still working on computer games.

Text adventures.

The origins of the text adventure genre began in 1976 with the game “Colossal Cave Adventure”. This game was created by the American programmer and amateur caver William Crowther. In this game, the player has to explore a huge subterranean labyrinth, search for hidden treasures and fight with dwarves and dragons. All this was just represented by text on the screen with a description of the environment and the objects at that location. The game was controlled by two word commands such as “go east”, “get ax” and “open door”. In the great labyrinth of Adventure you can quickly get lost, you have to defeat dragons and a dwarf throws an ax at you, your treasures are regularly stolen by a pirate who then hides them elsewhere and where you have to use magic to get where you want.

Due to their simplicity, the text adventures became the first commercial games for home computers. Legendary Developers of text adventures are Scott Adams and the company Infocom founded in 1979 by students at MIT with titles like “Zork”, “Planetfall” and “Deadline”. Unfortunately, in the 80s, the text adventure fell victim to the increasing processing capacity of computers and graphics games made their appearance. Text adventures were replaced with graphics adventures as well and they were called point and click adventures. Well-known developers of these adventure games were Sierra On-Line with the famous Roberta Williams as the creator of beautiful adventures such as King Quest and Space Quest series and Leisure Suit Larry. But there was also Lucasarts with Maniac Mansion, Monkey Island and Indiana Jones who are exceptional due to their graphic design, sound and humor. In the mid-90s, the genre changed slightly again with adventure games full of puzzles such as The Seventh Guest and the legendary Myst and Riven.

But even nowadays people are still interested in text adventures because it can be played as a kind of interactive book. The player must form his own image of the world in the adventure himself and must be very creative in order to use the right path and find your way through the adventure with the right objects. Some experience with the genre of game will help, if you know that you have to pick things up and drop them again, a “locked door” requires a “key” that you can probably find somewhere else you can play the games faster and enjoy them more. New text adventures are still being created by a small group of people but there are also people that are interested in the old games. This is also because these games often excel in one good story and smart puzzles while modern games are often better graphically but less good in a good story.

Walkthrough Scott Adams Pirate Adventure.

There are two “treasures” in Pirate Adventure:

  1. Gold Dubleons
  2. Rare Stamps
Flat in LondonGET CRACKERS, GET SNEAKERS, GET RUM, GO STAIRS
AlcoveGET BOOK (“There’s a strange sound”), GO PASSAGE
Secret PassagewayGO EAST
Musty atticGET TORCH, GET DUFFEL, EXAMINE DUFFEL, OPEN DUFFEL, DROP DUFFEL, GET MATCHES, GO WEST
Secret PassagewayGO WEST
AlcoveREAD BOOK, GO WINDOW
Outside open window on ledgeSAY YOHO
Sandy beachDROP SNEAKERS, DROP BOOK, GO EAST
MeadowGO SHACK, GIVE RUM, WAIT (for Pirate to take rum), GO WEST, GO EAST
Foot of a caveGO PATH
Top of a hillGO CRACK
Dark locationLIGHT TORCH
Large cavernGO SHED
Tool shedGET HAMMER, GET WINGS, GO NORTH, GO CRACK
Top of a hillUNLIGHT TORCH, GO DOWN, GO WEST, GO WEST
Sandy beachDROP WINGS, DROP TORCH, DROP MATCHES, DROP SACK, GET BOOK, GET SNEAKERS, SAY YOHO
Outside open window on ledgeGO WINDOW
AlcoveGO PASSAGE
Secret passagewayGO EAST
Musty atticGET BOTTLE, GO WEST, GO WEST, GO DOWN
Flat in LondonGET NAILS (The rug is nailed down!), GET RUG, DROP RUG, GET KEYS, GO STAIRS
AlcoveGO WINDOW
Outside open window on ledgeSAY YOHO
Sandy beachDROP BOOK, DROP HAMMER, DROP SNEAKERS, DROP NAILS, GET WINGS, GO LAGOON
Shallow lagoonWAIT (For tide to come in), GO NORTH
OceanGET WATER, GET FISH, GO SOUTH
Shallow lagoonGO SOUTH
Sandy beachDROP WINGS, GET TORCH, GET MATCHES, GO EAST
MeadowGO EAST
Foot of a caveLIGHT TORCH, GO CAVE
Maze of cavesGO DOWN
PitTHROW FISH, DROP BOTTLE, UNLOCK DOOR, GO HALL
Long hallwayGO EAST
Large cavernGO SHED
Tool shedGET SHOVEL, GO NORTH
Large cavernGET LUMBER, GET SAILS, GO WEST
Long hallwayGO PIT
PitGO UP
Maze of cavesGO WEST
Foot of a caveUNLIGHT TORCH, GO WEST
MeadowGO WEST
Sandy beachDROP LUMBER, DROP SAILS, DROP TORCH, DROP MATCHES, GET SACK, GO EAST, GO SHACK
Grass shackUNLOCK CHEST, LOOK CHEST, GET PLANS, LOOK CHEST, GET MAP, GET PARROT, GO WEST, GO WEST
Sandy beachDROP KEYS, WAIT (For the tides to change)
Shallow lagoonGO LAGOON, DIG ANCHOR, GET ANCHOR, GO SOUTH
Sandy beachDROP ANCHOR, BUILD SHIP, DROP PLANS, GET SNEAKERS, GET BOOK, SAY YOHO
Outside open window on ledgeGO WINDOW, GO PASSAGE, GO EAST
Musty atticWAKE PIRATE, GO WEST, GO WEST, GO WINDOW, SAY YOHO
Sandy beachDROP BOOK, DROP SNEAKERS, GO SHIP
Aboard pirate shipSET SAIL (You may need to WAIT for the tide to come in!), GO BEACH
*Treasure* IslandDIG, WAIT (Pirate grabs rum), GO SOUTH
Spooky graveyardGO EAST
Large barren fieldPACE 30, DIG, GET BOX, DROP SHOVEL, GO MONASTERY
Deserted monasteryDROP PARROT, GET DUBLEONS, GO WEST, GO WEST
Spooky graveyardWAKE PIRATE, GO NORTH
*Treasure* IslandGO SHIP
Aboard pirate shipSET SAIL, GO BEACH
Sandy beachGET HAMMER, OPEN BOX, GET STAMPS, DROP HAMMER, DROP BOX, GET BOOK, GET SNEAKERS, SAY YOHO
Outside open window on ledgeGO WINDOW, GO DOWN
Flat in LondonDROP DUBLEONS, DROP STAMPS, SCORE

More pages on game development

[catlist name=”Game development”]

[catlist name=”games”]

Posted on Leave a comment

Unity game engine

Unity Header

Unity LogoWhen I started planning my first 3D first person adventure game “Bon Vivant – the tale of a mysterious guesthouse”, I had to decide on a fame development engine and roughly there are two big leaders in the market, Unreal and Unity. Unity and Unreal Engine are both very good game engines. A game engine, also called game architecture is a key component to game development as it combines all the different game elements like sound, graphics, animation and user interface into a single visual development program. Core functionality includes: a rendering engine for 2D and 3D graphics, physics engine to control movement, sound, scripting, animation, AI, VR support and networking. Both platforms allow you to develop games for PC, consoles and mobile and for most operating systems like Android, Microsoft Windows, Mac and Linux. Choosing the right game development environment can be crucial to your success as a game developer.

The key difference between Unity and Unreal Engine is the native programming language, Unity uses C# and the Unreal Engine uses C++. I am a huge C++ fan and also an trained C++ developer so that was the big plus for Unreal. But in my daily work I switched to C# and now I am also a big C# fan as indeed being the logical successor to C++. (C# stands for C++++). Although the compiled performance of C++ is just a little better then C#, in most cases you will not notice that. Then there is ease of Use and I tried both and Unity is much easier to use especially when you are used to Microsoft visual studio. I think Unity has a great and very logical user interface and it takes some time to get used to it and know where everything is, but there is so much online information and tutorials, that you can learn it without a book or manual.

Unity is a the best platform for the indie game designer just starting out, as it is still the most used platform there us a lot of online support, you can start making games right away without any extra investment. In my opinion the Unreal Engine is more suited for the big game development studios that aim for fine-tuned graphics and lightning-fast render speeds and want to pay for that. I have been working with Unity for more than six years now and I have created several games, I am a huge fan of Unity.

Why I use Unity

Unity IdeUnity is a great choice of game development environment to work with. To start, go to the website www.unity3d.com to download the software. The URL is a leftover from Unity’s original focus on 3D games, support for 3D games remains strong, but Unity works great for 2D games as well. Although there are some advanced features only available in paid versions, the base version is completely free and most of these advanced features are not needed by the average game developer. And as long as you have a free personal license and not earn or receive more than $100,000 in revenue or funding, Unity is completely free. Although there are also a lot of free assets in the Unity asset store, you will eventually start to buy dedicated assets for your game, but that is expected.

This website is mostly about programming in Unity, there are plenty other resources to discuss other aspects of game development and Unity. You can build a complete game with Unity without writing a single line of code, but when you want something not out of the box and more sophisticated, you need to write of modify C# code. Also a basic knowledge of math is needed to understand what you are doing. Unity is a very professional-quality game engine used to create video games targeting a variety of platforms. The ease of visual editor and a very high degree of cross-platform support is a big pro for Unity. Once you learned all the drag and drop features (also in the property fields) you will find it very easy to develop in Unity.

You can also get a lot of addons in the Unity Asset Store that will extend the IDE and most of these addons neatly integrate into the existing IDE blocks. Unity is also very strong in rapid application development, you can mover things around or change a property and immediately test this in running the game withing the IDE. Unity uses a component based approach instead of a strict hierarchy of classes, this makes it very flexible, but you are able to make things a complete mess. Furthermore every script you write like a singleton gamestate class, must be connected to an object in the editor view, but this can be and empty base object. After a while this becomes natural and it is nice to have a visual representation of all the C# code in your project.

To be continued!

More pages on gamedevelopment

[catlist name=”Game development”]

[catlist name=”games”]

Posted on Leave a comment

Parallax Scrolling

Background

Parallax scrolling is a technique used by game developers where background images move past the camera more slowly than foreground images and so creating an illusion of depth in a 2D scene of a game. In the early 1980s developers tried to make their 2D games mor attractive by adding a kind of 3D feel by using multiple layers that moved at different speeds. There are several methods od achieving this effect, the most common (also in modern game engines) is using several screen layers. These layers are all virtual screen layers, that will create the whole game screen when they are put on top of each other. The one thing you will need is a transparent color, this is a color value that is not transferred to the read game screen. I will illustrate this bye a simple example.


Layer1

The first layer is the layer with all the foreground elements that will cover the player and the rest of the scene, most of the time this will be trees and small objects, it is not so nice if this layer covers the game player sprite too long because then the player disappears from the scene. In this example I created only one tree. Notice the white is the transparant color her and this color will be ignored when the layer is copied to the actual screen layer. This layer can be filled with normal game sprites.

Layer2

The second layer is the layer that the player sprite walks on, this is the “platform” that has all game elements, the player sprite and the enemy sprites will all be displayed on top of this layer so the sprites will cover the area of this layer, giving the illusion that this is in the back and below the player figure.

Background

The last layer is the background layer, this shows items on the horizon and most of the times also a sky with elements like sun, clouds or moon and stars. This will be the layer that is most in the back of the scene and this does not have a transparent color as it will be used to fully erase and initiate the building of a new game frame screen. Most of the time this is a very wide image that tiles on both ends so the viewport can be moved by just selecting a new top / left location within the wide background image.

Bg And Layer2

Now when we want to create a new game screen frame, we start by copying the selected area from the wide background image to the game screen, clipping on both sides of the screen. Now we render the layer 2 screen with all the game elements and put this on top of the background that is already in the game screen. Notice the transparent areas are not copied to the screen.

Print Sprite

Now it is time to render the game sprites like the game player sprite and the other moving game sprites like enemies and other elements that can interact with the player sprite. In this case I just put the player sprite on the screen covering everything that is already there so it will look like it is in front of everything.

Plus Layer1

Now we can render the layer 1 and copy this on top of everything that is already on the screen, notice that the transparent color is very important because on the part that actually contains some image pixels will be copies to the screen. It now looks like the player sprite is hiding partially behind a tree. We now have a complete game screen frame that cam be copied to the physical screen for display.

And now Parallax Scrolling

When you look closely at the background of a game, you often see that it seems to move slower than the foreground. This creates a kind of 3D depth in the game. When you’re on a train and you’re watching outside then things that are close by seem to move quite quickly and as the distance increases things slow down. This has everything to do with the principle of how we as humans see depth. Also, things that are further away from us appear smaller than things close by. These are effects that we can use to enhance our 2D game to give it more depth.

The effect can be easily achieved by using layers where the layers are built up from back to front, like the example above. The layer must support transparency or be able to be printed in small parts, otherwise the layer will cover everything from the previous one layer and you would only see the front layer. The back layer is usually not transparent because this is our horizon scene. Within game design packages, these layers are often also called “layers” and have a so-called Z value that indicates the distance to the physical player. Please note that horizontal and vertical scrolling are very intensive processes for a computer, if it is possible the number of layers should be limited. The easiest way to create a beautiful and realistic parallax scrolling effect is to make the scroll factor of the back (background) layer half that of the foreground layers. So when the foreground layer shifts 24 pixels, the background layer shifts only 12 pixels. By painting the layers each “frame” from the rear layer to the front layer, the depth effect is created automatically.

It is true that the level can sometimes be enormously wide and high, making a background image that is half the size will then still produce a huge image that will take up a lot of memory and a huge amount of processor time to edit. Most games do this a lttle smarter by using a smart tiling background image. This image is two or four times the size of the screen but connect perfectly on the left to the right and possibly also above and below, so that the image like a kind of tile can be pasted next to each other. Because the user does not look at the background in such detail and there are often also a lot of things in front of it, hardly anyone will notice that the background will repeat.

Happy game development, regards, Hein Pragt.

More pages on gamedevelopment

[catlist name=”Game development”]

[catlist name=”games”]

Posted on Leave a comment

Game programming

Game Design

I have been a software developer since 1977 and I was one of the home computer developers in the early beginning of personal computing. From the very beginning (on my TRS80 Model 1 Level II) I was playing computer games and writing computer games myself. I really liked adventure games at that time so after reading and article from Scott Adams in a magazine I started to write my own adventure games. Years later on the IBM-PC I wrote the first Scott Adams adventure interpreter and that was published in the USA on a CD disk with all the classic game files. After contacting Scott we became friends and we are still friends up to today. I made several improved versions of the Scott Adams adventure interpreter and release them on my website. I was also very interested in the game Reversi so I also wrote some strong Reversi programs.

I also write other software like emulators, development IDE’s and utility programs but that is mostly out of a need, because there is (or was) no good alternative. Last ten years I have been writing games using the Unity game engine and after a while I became an experienced Unity developer. My first real Unity based game was Bon Vinant and after that I worked for more than a year on the walking simulator Amerwold woods. Currently I am still working on Unity games and on this page, and my Facebook page I will inform you about the progress. Regards, Hein Pragt.

Facebook: Fascebook Hein Pragt Games

Introduction to game programming

Programming games is fun, addictive, a source of a lot of annoyance but also a lot of fun. But how can you program a game? Graphics and sound are the first things we notice when we look at computer games. But beautiful animations and good sound effects are just the outer layer of this fascinating form of technology. 3D technology requires some knowledge of mathematics and a game is often one complicated structure of logic and rules. Games also often touch on the subject of psychology because the game is a form of action and reaction and the player is one human being who responds to the game in a human way. How one suspects that the player will react is often well thought out in advance. Also it is that in adventure games or role playing games (rpg) the game characters have their own character, this also requires some insight into the human psyche. It game programming often brings together many disciplines, techies, programmers, graphic designers, storytellers, etc.

Game programming is essentially no different from any other form of programming, except that it often has to be very efficient and for very speed optimized. You will have to learn to write programs that can display 2D and 3D images quickly and efficiently, that capable of displaying music and sound effects and responding to user input at lightning speed. When you write a multiplayer game that can be played over a network, you will also need to write network code. Programming games is not a simple matter and requires definitely a lot of study. Of course many of these tasks have already been done for you, there are several code libraries you can use. This libraries are built to perform specific tasks such as displaying graphics, rendering sound, and handling user input. There are also libraries that can be used as APIs as interfaces between the program and the underlying hardware. A successful game programmer knows what to do himself and what to “borrow” from others.

Basic game design skills

If you want to make your own games, you still need a few basic skills. Please note, you need these skills to a greater or lesser extent, depending on whether you want to make a game all by yourself or in a team. In a team, each developer usually has a specialist skill, one is very good at creating graphics, the other is good at sound and music, another is good at designing levels, and yet another can be a good programmer. The smaller the team, the more skills every team member must have. So the basic skills are: graphic design, sound and music, game concepts and last but not least programming.

Graphic design

When you watch a computer game you immediately see how important graphic design is. Most novice games can often be recognized by poor graphics. All elements in the game need an appearance, even a fairly static game such as checkers or chess requires a nice graphical representation. Being in a platform game game characters, levels, backgrounds and menu screens. All these graphical elements must be created. Some knowledge of color and depth effect is useful, as is mastering a graphic package. There are countless software packages available, from free packages to very expensive professional packages. A well-known open source and free package is: Gimp but in my opinion this package does not excel in user-friendliness. In addition, there are the (usually not free) packages such as: Photoshop, illustrator, paint shop pro and paint.net. Choose one of packages and learn to work with it by getting started with it. I prefer to work in Photoshop myself because I already have this package know for a long time and meanwhile know exactly where all the tools and functions are.

In addition to specific elements, you should also think about the overall graphic style of your game, playful, loose, tight, much colors or little. In any case, make sure you apply the style consistently throughout the game, an inconsistent user interfac can be very annoying. Take a look at how other games within the same genre are doing, better good imitated than ill-conceived. Please note that you are not a thief, just copying things is not allowed. Often it works well to start by just sketching everything on paper, you can of course also do this in a drawing package on the computer. When you don’t have enough graphics skills, you can also use open source graphics. On the Internet many free graphic sets made available to download and use in your own game. Please note whether commercial use is also permitted and whether you must acknowledge the source. When in doubt, it is wise to always request written permission from the original creator.

You need animation techniques to make objects move in your game. This means you have multiple versions of a picture, each of which is part of a movement, which are played one after the other. How many pictures needed you can decide for yourself, the more pictures the more realistic the movement. For example, you can walk with two tiles per direction, but four tiles look nicer. For more complex movements such as fighting, there are often even more pictures the animation sequence. For a really smooth movement you need at least 30 frames per second! Everything that moves in a game is made up of a series of still pictures.

Sound and Music

Within a game we can use background music to enhance the atmosphere of the game and use sound effects to enhance effects in the game. When opening a door you can adjust a sound, but enemies can also use their have their own sound to make them even more menacing. You can create sound effects yourself by recording with your computer and to edit afterwards, there are also many open source sounds that you can download on the Internet. You can also use one sound editing program cut pieces from existing sound files to create your own effects. Many developers and game development packages use wav files or other sound file formats to play effects. These files can often take up a lot of space and it is especially important for an online game (but also for the load times for offline games) to make the files as small as possible and to reuse them as much as possible.

For the use of background music, people often use midi for the music played by a virtual synthesizer. The advantage is that this format is very compact and you can therefore play very large pieces of music playback, the downside is that you need a software synthesizer module in your code and that you need a package to create and edit these files where knowledge of music is necessary. Game designers often opt to divide a repetitive piece of music into chunks that can be played randomly one after the other so that the background music is not too monotonous. The individual pieces can be saved in MP3 format, for example. please note Please note that the size of the files and thus the loading time can also be very important here.

Again, if you don’t have enough music skills, you can also use open source music. Many free background music pieces can be downloaded from the Internet that have been made available for use in your own home game. Also with these files, please note whether commercial use is also permitted and whether you must acknowledge the source. When you are in doubt, it is wise to always request written permission from the original creator.

Game Concepts

In addition to all technical and graphical skills, knowledge of game concepts is also important. A good idea for beginning gamemakers is recreating their favorite game. This is a good exercise to master game design skills. Playing and watching computer games is also very important, especially in the genre you want to make yourself. But it only gets really interesting when you really try to make something new. Lots of people getting to this point want to make something new but always fall back on games they already know. It’s good practice to sketch your ideas on paper before you get started. You can then show the developed ideas to a few people and test the idea, which often will results in good comments or additions. Don’t start the building for real too soon, a good design in advance can save a lot of time afterwards. Nothing is more frustrating than a complete rebuild a game when you are half way.

Unity game engine

Unity LogoI am a big fan of the Unity game engine. Unity is the favorite engine of more than 45% of the game developers and this would make it the most widely used engine in the world. The same survey shows that their closest competitor (Unreal Engine) is just over a third of the market share. The engine is free and easy to install on either Windows PC or Mac (Linux support is coming) and a lot of online tutorial can be found both in text and in YouTube movies and it is even possible to follow a real training with certification. Also a bonus for the aspiring game developer is the Unity Asset Store where you can find everything from 3D models to sound libraries, custom scriptring solutions and even complete projects to poke around and learn from others. Most of the content is created by the community and costs some money, but there are many free versions of certain items, and Unity itself often uploads completely free content. You can make a complete game without programming, but if you still want something special or something different from the standard behavior, you can add functionality in C#. The funny thing is that the scripts themselves can be linked to components with drag and drop. The Unity API is online very well documented and gives a clear understanding of how a particular feature works or should be used. This guide is constantly being updated updated, and if you can’t figure it out, there’s always the forum.

On Windows, the Unity development environment is integrated with Microsoft Visual Studio, which simplifies editing C# code. The entire Unity’s interface takes some getting used to but is ultimately very user-friendly, although at first it is a bit of a search in the huge list of options and settings. The best way to learn is to follow the tutorials and experiment a lot yourself. Try opening one door, figure it out, experiment with code and some graphics and everything will eventually fall into place. With a few exercises you are in able to make a simple game that looks very good and you get a lot of standard functionality “out of the box” as standard. In any case, I was sold within a few days and hooked on the Unity engine and development environment.

More pages on gamedevelopment

[catlist name=”Game development”]

[catlist name=”games”]

Posted on Leave a comment

The Amerwold Inheritance game

The Amerwold Inheritance

Welcome on the homepage of the Windows ™ single room adventure game The Amerwold Inheritance. After the events in Amerwold Woods one of the brothers inherited the big house of the other brother. His brother was autistic but also a brilliant programmer and he earned a lot of money with his software. He bought this big house, far away of the busy world and together with some friends he turned the attic into a big escape room. You are exploring the house and find yourself trapped om the second floor at the stairs to the attic. It seems that the only wat to get out again is solving alle the puzzles that are spread around the several rooms of the attic.

The game contains a lot of puzzles of all types and all puzzles could work in real life. The attic is also the workshop that he used to create all the puzzles. There is no special knowledge needed, alle the knowledge you will need to solve the puzzles is available in the game. It will take several hours to solve all the puzzles and the progress is automatically stored every time you leave  the game. The puzzles are not extremely hard but also not too easy. Puzzles require logic thinking and for some puzzles you will have to collect clues.

Amerwold20
Amerwold Inher01
Amerwold30

Download

As there is almost no money to be earned as game developer, I stopped programming games and concentrate on other progams and tools that do make some money. As of now all games are free to download.

https://heinpragt.itch.io/the-amerwold-inheritance


Amerwold woods

This game is a sequel to the Windows ™ first person walking simulator game Amerwold woods. This game is a walking simulator, an exploration game that tells an interactive story to the player. In this game you can freely move around the whole game, even go through bushes, walk beside the paths, the whole wood is accessible beside some areas that are clearly bordered with fences or bushes too thick to walk through. The idea is that you get to know the main character and try to understand what has happened. The story leans heavily on the fact that the main character is an autistic young man. I really hope that you will enjoy this game, I have been working on this game for almost two years.

https://heinpragt.itch.io/the-amerwold-inheritance

Posted on Leave a comment

Bon Vivant

Header

Welcome on the homepage of the Windows ™ first person 3D adventuregame Bon Vivant – the tale of a mysterious guesthouse. This is the first big game I wrote using the Unity game engine. The current release is 2.21, in the second release all the Dutch translations were gone and voiceover was added and in the third upgrade the graphics were improved and some extra puzzles have been added. The storyline is still the same, I hope you enjoy this game, the puzzles are not that hard (although there is one that is more complex) and the exploring of the big house is fun. Regards, Hein Pragt.

Bon Vivant point and click 3D adventuregame

Bonvivant02

This free walking point and click 3D adventuregame takes place in an abandoned and boarded-up guest house in a forest somewhere in the middle of the Netherlands. Ten years ago a drama took place in the guest house and since then it has been abandoned and boarded up. In the nearby village it is said that mysterious things still happen around the old guest house and children are told that they absolutely can not go there. You wanted to examine the story on your holiday trip but your partner did not want you to go. Now a year later you lost your job, your partner and as a rebellious act you are planning to investigate the mysterious guest house to discover what has happened.

You have to solve obstacles that you encounter in this guest house and gradually you learn more and more about the eccentric old residents, their relationships and problems and the dramatic event that happened ten years ago. One of the features of the game is that all the puzzles and problems you have to solve are really possible, the game tries to be realistic in everything and not to break the atmosphere and zeitgeist.

The game is a first person adventuregame, which means that you look through the eyes of the player. In the game you have a flashlight in the left hand and the possibility to carry one large object in your right hand. So when you take a new large object, the old object will fall and remain there. You can bring several small items in your backpack, this makes the game realistic to play. The game has voice over and has background sounds and sounds that objects make within the game. The game can be played in semi-random order, but in order to be able to continue on certain points, you must have done a number of things. An attempt has been made to make the illusion that you are really walking around as realistic as possible. The game does not have a hint system, you sometimes get an indication as if it was an idea that occurred in your own thoughts.

Download

As there is almost no money to be earned as game developer, I stopped programming games and concentrate on other progams and tools that do make some money. As of now all games are free to download.

Download: https://heinpragt.itch.io/bon-vivant

Bonvivant01 1
Bonvivant02 1
Bonvivant03
Bonvivant04
Bonvivant05
Bonvivant06
Bonvivant07
Bonvivant08

Download

Download: https://heinpragt.itch.io/bon-vivant

Posted on Leave a comment

Amerwold woods game

Welcome on the homepage of the Windows ™ first person adventure game / walking simulator game Amerwold woods. A walking simulator is usually an exploration game that tells an interactive story to the player and in some way it is also an adventure game. In this game you can freely move around the whole game, even go trough bushes, walk beside the paths, the whole huge wood is accessible beside some areas that are clearly bordered with fences or bushes too thick to walk through. There is also not a straight line for the story, the order of all the fragments is determined by the way the player walks through the woods. Only some scenes are scripted, like the end scene but the idea is that you get to know the main character and try to understand what has happened. The story of this game leans heavily on the fact that the main character is an autistic young man. I really hope that you will enjoy this game, I have been working on this game for almost two years. Regards, Hein Pragt.

Download: https://heinpragt.itch.io/amerwold-woods


The main character of this adventure game / walking simulator is an autistic young man that returns to the woods where his parents had a cabin and where he spent his entire youth with his brother, father and mother during weekends and holidays. In the beginning it seems that he is back in the woods to escape the world around him, the world that is not so friendly to autistic people. As he walks through the woods old memories appear but also recent memories come to mind. There is also a raven that seems to be following him, he does not quite understand why, but in the end it all becomes clear. The player guides the young man trough the woods and also tries to understand the stories.

The forest in this adventure game is very large with a lot of areas and a lot of small lakes and small rivers and the player must travel all the paths and roads. It is possible to run, but then you will probably not enjoy the beautiful landscapes. There is a lake with and island, a secret set of caves, animated animals and sounds that matches the surroundings. The only thing the player has to do, is to memories the paths and roads and navigate the main character through the woods while listening to different parts of the story or the thoughts of the young man. In some cases the player needs to click on items to activate them, but that is minimal. The game also has a few abandoned buildings to explore, that all played a role in the life of the main character.

This adventure game is also about autism, I am a little autistic myself but as I have High-Functioning Autism it is not so clear to everyone. It was not clear to me also for a long time. A lot of my own experiences can be found in the stories of the main character, but in a different way, everyone with autism is unique and there is not one clear definition of autism. But in this case it fits well in the story and I hop that the player will be helpful and understanding towards the main character of this game. People with autism might understand the main character of thjis game better and share some of his experiences.

The game is developed in the Unity game engine with a lot of C# code, it took me about two years to develop and the idea of the game changed with the knowledge I gained on game development and knowledge of the Unity game engine. The game is completely in the English language and all the voices are generated by Speechelo. The game also has subtitles that cannot be turned off. The music is taken from an old piano concert and changed into loops using Audacity. The game as a Windows installer that is digitally signed and also the game executable is digitally signed for the security of the customer. The game menu has a lot of settings for screen quality, sound and game control and the game can be played fullscreen but also inside a window. I prefer full screen because it get you fully into the game.

Download page

As there is almost no money to be earned as game developer, I stopped programming games and concentrate on other progams and tools that do make some money. As of now all games are free to download.

Download: https://heinpragt.itch.io/amerwold-woods

New games

I am currently not working on any new game, the time, money and effort that I have spend on my previous games has resulted in almost no earning, I also write other software that does make some money, so I will spend my time on that.

Posted on Leave a comment

Arduino based LED marquee

I build myself a scrolling led message board and every Christmas and new year I have this in my front window to greet the people in front of my house. Every year I reprogram the Arduino Uno with the wishes I want to display. I has become kind of a tradition here. I used an Arduino Uno (clone) and six MAX7219 based LED Matrix Displays forming a 192 x 8 led marquee. I chose these number of displays because it would fit my window, but the number of displays you want to use is not limited. When a line is displayed it will scroll on the display from right to left and when the display
is fully filled it will scroll on until the whole message is displayed. Then it will wait for a few seconds, clear the display with animation and start a random new message.

What components do you need?

  • An Arduino Uno board; (Nano will also work)
  • MAX7219 LED Matrix Display 8×32 (2 – 8);
  • 5V DC Power supply at least 3A;
  • Board to build it on.

I used an Arduino Uno clone but an Arduino Nano would also be possible, you would have to find the SPI and SS lines for the Nano yourself. I mounted the led displays on a wooden board with stands and the Arduino Uno at the back. In my first design I included a power supply board (the power supply of the Arduino is by far not sufficient) but in the end it was better to use a switching external power supply of 5V DC to feed the Arduino (Vin) and the Led displays. The led displays will take a lot of current, so more displays means a more powerful power supply. The connections are very easy, just two power lines and three SPI lines. The Matrix units come in 8×8 times four on a single board, with holes for the connectors at both sides. The treick is to mount the display tight together.

The software

I wrote a standalone Arduino sketch that you can modify according your own ideas, you can find the complete sourcode on my software website using the link below.

https://www.heinpragt-software.com/software_development/arduino_scrolling_text_display.html

Posted on Leave a comment

MPF1 emulator (Windows)

MPF1_emulator

The Micro-Professor MPF-1 was introduced by Multitech in 1981 and it was Multitech’s first computer product and probably one of the world’s longest selling single board computers. Multitech changed its name to Acer in 1987. The MPF-1 was based on the Zilog Z80 microprocessor and designed specifically to teach the fundamentals of machine code and assembly language. The MPF-1 doesn’t look like a standard microcomputer board, it comes in a plastic book that folds out into two parts, along with two audio cassettes and a training manual. When closed, the MPF-1 can be placed on a bookshelf for easy storage which made it more attractive as it was easy to store. There are still quite a few MPF-1 boards for sale and you see them regularly on auction and marketplace websites. I haven’t owned an MPF-1 myself, but I’ve read a lot about it and secretly hoped I could get one someday. In the end I wrote a full implementation of an MPF-1 emulator including the old keyboard and seven segment displays.

This MPF-1 emulator emulates a standard MPF-1b, but the rom is in the subdirectory and you could replace it if you like. It uses the old display that is also emulated and the on screen keyboard acts like the original keyboard of the MPF-1. In this version there is no sound support, I will add this in the future. Its has full memory expansion and emulates all the hardware components. You can load and save programs in hex or binary format using the top menu. Press the go button to execute the program. When loading and saving the program will prompt for start and end adressed, this will require some knowledge of the memory map of the MPF-1 board.

https://www.heinpragt-software.com/software_development/MPF1_emulator.html

Posted on Leave a comment

CPMBox emulator (Windows)

cpmbox2

The second operating system I used (after TrsDos) was CPM on a Z80 development machine. Some time ago I build the Z80 MBC2 board and I played with CPM again. I included a fully working MBC2 emulation in my Z80 IDE program but after using DosBox I got the idea of creating CpmBox. CpmBox is a full CPM 2.2 implementation on a Z80 emulator for Windows, including a VT100 terminal and 8 CPM disks based on the MBC2 with the looks of a real terminal. It is a portable windows program (one single executable) and the zip file contains the emulator, a directory with a lot of disks and the bootdisk and a dos based directory to load CPM files from and to dos. It is also possible to save and load programs from dos and save or load them to a CPM disk. This emulator is exactly like a Z80 MBC2 computer running CPM 2.2 (without the i/o chip) and connected to a VT100 terminal.

  • Emulates: Z80 and VT100 terminal;
  • OS: CPM 2.2;
  • Keyboard: full 53 keys emulated by the PC keyboard;
  • CPU: Zilog Z80 the speed is depending on the PC hardware;
  • RAM: 64 kb;
  • Textmode: 24 x 80 characters;
  • Graphics: None;
  • Color: White on green screen;
  • Sound: None;
  • I/O: 15 CMM disks and access to DOS disk;
  • Design: Like an old terminal screen.

https://www.heinpragt-software.com/software_development/cpmbox.html

Posted on Leave a comment

Apple 1 emulator (Windows)

Apple1_emulator

I wrote a 6502 emulator. The first idea I had was building the Apple 1 computer emulator as I knew the design. The result is a portable Apple 1 emulator program for Windows 10 and 11. This Apple 1 emulator is exactly like the original Apple 1 computer with the Wozmon, but with a build in basic rom and build in Forth.

  • Emulates: Apple 1 computer with keyboard and TV monitor attached;
  • Basic: The original basic is loaded at startup at location E000;
  • Keyboard: Emulated by the PC keyboard;
  • CPU: MOS 6502 emulator the speed does not match the old hardware;
  • RAM: 64 kb with Wonzmon at FF00 and basic at E000;
  • VRAM: none;
  • Textmode: 40 chars x 24 lines;
  • Graphics: None;
  • Color: Black and white on green with screen;
  • Sound: None;
  • I/O: Emulation of the 6821 chip is done;
  • OS: No disk and no DOS.

https://www.heinpragt-software.com/software_development/apple1_emulator.html

Posted on 3 Comments

RCA 1802 Retroshield

Retroshield1802

I have a lot of Retroshields here at home because it is a nice way to play with a microprocessor without having to build a complete computer. This Retroshield (that is available in this webshop) is a little different from the common ones, this one covers the whole Arduino Mega, but has the advantage that it uses no SMD components (the small one does) and it has an experiment area and a connector to connect a SPI device.

This is my build, as you can see it is quite simple to do. This shield adds an RCA 1802-processor to your Arduino Mega 2560 and with the provided code it will run a lot of 1802-based software from the good old 70s. This board is based on software and designs by Erturk Kocalar, there is a small prototyping area to the left side that you can use to a button, an extra blinking LED and an I2C header was added, perfect for those cheap 0.96″ I2C OLED displays.

Above is a screenshot of the startup screen of the Retroshield. This board is completely compatible with the small board and all the software will run on this board as well. The software contains a Monitor program, a Tiny basic and a full basic implementation. As it is all in the Arduino sketch you can add whatever you want or modify it, the software is on Github and open source. You can find the link to the Github project at the bottom of this page. I had some fun building this and playing with the software.

Sourcecode of this project

Link hardware: https://github.com/tebl/RetroShield1802-PCB

Link software: https://gitlab.com/8bitforce/retroshield-arduino

Links about the RCA 1802

Posted on Leave a comment

RCA 1802 (1974)

CPD1802ACE

I have read a lot about this rather strange microprocessor but I have not (yet) used it myself. I have a number of them in the webshop and if I have time and a nice project I will definitely do something with them. But why is this processor so weird? When the processor came out it was a very fast processor (6.4 MHz) but the processor did need 10 Volt power supply. Later versions no longer had these limitations. The chip had sixteen 16-bit registers that could also be used as thirty-two 8-bit registers and an accumulator register D.

It had a limited form of DMA and any register could be used (selected) as a PC (program counter). All instructions were 8 bit, 4 bit opcode and 4 bit operand. The processor had no real conditional branching (some form of conditional skips), had no subroutine support, and no real stack, but with some clever use of registers this could be programmed around.

There are a number of microcomputers based on the 1802, including the COSMAC ELF (1976), Netronics ELF II, Quest Super ELF, COSMAC VIP, Comx-35. The processor is still (limited) available and there are still a number of enthusiastic hobbyists who build and develop new devices with it. At the bottom of the page is an overview of 1802 projects.

Links RCA 1802

Posted on Leave a comment

AT90S2313 vs ATTiny2313

at90s2313

I sell AT90S2313 chips in my webshop but also ATTiny2313 chips, what is the difference and are can one replace the other. Well the answer is not that plains simple, yes, both chips are pin compatible and have the same architecture. In fact the ATTiny2313 is an enhanced version of the AT90S2313 chip. If you look at the datasheets you will see that they are almost the same, with some little upgrades in the ATTiny2313. The big question is, are they compatible and can I swap them out. Yes, you could replace the AT90S2313 with a ATTiny2313, this will work most of the time. The other way around will also work in a lot of cases, when the enhanced features of the ATTiny2313 are not used.


So why choose for the AT90S2313 instead of the ATTiny2313, well it is a little cheaper. If you really want to know ALL the small differences, you can download the documentation I found on the Atmel site, it is a few pages of PDF that will explain a lot. Meanwhile I use them both, for the projects that I am making it does not make a difference, only in price of the chip.

Posted on Leave a comment

Sram pin comparison table

hy6116alp

Static rams come in several different sizes, the first computers boards had very little ram, because sram was very expensive at that time. So if you had 2 KB x 8 Sram you were very lucky. The next big step was 8 KB x 8 Sram chips, you will find them in a lot popular boards of the 70ties. The next step was 32 KB x 8 Sram, these are still used in some designs where in a 64 Kb 8 bit computer the memory is divided in 32 Kb of rom and 32 KB of Sram. There are 64 KB x 8 Srams that are still using 28 Pins, but 128 KB x 8 Srams and 256 KB Sram use 32 Pins.

To make it easier to swap different Srams they were clever on the extending of the pins, they did this on the TOP side, The Ground pin is always on the left bottom side, and on the right top, it does not matter if you supply 5V to the pins of the bigger chips at the old position, because these are select or address pins that can be 5V too. This is also the reason the CE2 (select 2 pins) are not inverted. Very clever, you will not destroy a chip so easy. So you can easily use a bigger chip on an old board with a little extra wiring. To make things easier I made a picture of the pins of most common Sram chips.

Hope this will help solving some Sram connection issues.

Posted on 1 Comment

Computer geschiedenis 1939-2000

history

Op deze pagina staat een overzicht van de geschiedenis van computers en digitale techniek vanaf het begin van de vorige eeuw tot het jaar 2000. De geschiedenis van de computer begint met de geschiedenis van het rekenen, als heel vroeg hebben mensen hulpmiddelen ontwikkeld voor berekeningen die niet gemakkelijk uit het hoofd gemaakt konden worden. Het telraam (abacus) was hier een goed voorbeeld van. Toen de behoefte aan berekeningen steeds complexer werd ontwikkelde men tabellen met getallen als hulp bij het vermenigvuldigen. Ook de rekenliniaal was een uitvinding om meer complexe berekeningen met een beperkte nauwkeurigheid eenvoudiger te maken, deze verdween echter in de jaren 70 met de uitvinding van de zakrekenmachine.

Geschiedenis van de computer in grote lijnen

Charles Babbage, een wiskundige, was erg geïnteresseerd in de astronomie. Een grote kwelling voor een astronoom in die tijd was echter het feit dat in iedere rekentabel onvermijdelijk fouten zaten. Babbage vroeg zich af of de tabellen niet machinaal gegenereerd konden worden en hiervoor bedacht hij in 1822 de differentiemachine die tabellen van veeltermen kon uitschrijven. Hij begon aan de bouw van de machine, maar het bouwen ervan viel niet mee. De machine werkte mechanisch en de tandwieltechniek was nog niet geavanceerd genoeg om tot een goed resultaat te komen. Verder veranderde Babbage steeds het ontwerp van de machine. Een hedendaagse grap is dat dit het eerste automatiseringsproject was dat uit tijd en budget gelopen is, net als (bijna) alle projecten tegenwoordig.

Eind 19e eeuw construeerde Herman Hollerith telmachines die werkten op basis van invoer met ponskaarten maar pas in 1938 werd de eerste computer gebouwd door Konrad Zuse. Ook Zuses machine werkte nog mechanisch, maar Zuse had het zichzelf een stuk eenvoudiger gemaakt door van het binaire stelsel gebruik te maken. Door de Tweede Wereldoorlog kreeg de ontwikkeling van computers een snelle vlucht deze werden namelijk gebruikt om berichten te kraken die met de Duitse Lorenz-codeermachine vercijferd waren.

Deze computer was de Colossus en deze werd ontwikkeld door Tommy Flowers en was de eerste elektronische computer, gebruik makend van elektronenbuizen. De eerste computer in Amerika was de ENIAC (Electronic Numerical Integrator And Calculator), die enkele zalen in beslag nam, 18.000 elektronenbuizen, 70.000 weerstanden, 10.000 condensatoren, en 6000 verschillende schakelaars bevatte. De eerste computer in Nederland was de ARRA I bij het Mathematisch Centrum.

De computers werden al een stuk kleiner toen in 1947 de transistor werd uitgevonden, maar IBM beweerde dat er wereldwijd niet meer dan een stuk of 7 computers nodig zouden zijn wat achteraf de beste grap in de historie van de computer is. Het tijdschrift “Popular Mechanics” voorspelde zelfs dat er ooit een computer zou komen die ‘maar’ 1500 kilo zou wegen. Tegenwoordig zit er meer rekenkracht in een eenvoudige mobiele telefoon dan in de minicomputers van 1500 kilo uit deze jaren.

Met de enorme ontwikkeling van de elektronica en de halfgeleiders, toegepast in transistoren, kon de computer veel kleiner en sneller worden. Later werden de transistors geïntegreerd in een computerchip ook wel geïntegreerde schakeling (integrated circuit, IC) genoemd. De complexiteit van de chips werd in de jaren 70 verbeterd zodat het mogelijk werd om een complete processor (CPU) op een chip te integreren. Het werd daardoor veel goedkoper om computers te bouwen.

Home computers uit de periode 1975-1985 waren o.a. de Apple I, de Apple II, de TRS-80, de Commodore PET, de ZX-81, de Nascom, de Commodore VIC-20, de BBC Micro, de MSX 1 en opvolgers, de Commodore 64 en de Acorn-Atom. Op 12 augustus 1981 presenteerde IBM hun personal computer wat een heel nieuw tijdperk aankondigde. Tegen het einde van 1982 werd op werkdagen al een computer per seconde verkocht. De pc werd steeds goedkoper en gemakkelijker te gebruiken waardoor steeds meer bedrijven en huisgezinnen er een kochten. De ontwikkelingen gaan nog steeds door elk jaar verdubbeld de capaciteit en halveren de prijzen. Zakenmensen gebruiken veelal een laptop om met hun computer op stap te gaan. De steeds verdere miniaturisering leidde er toe dat de kleine Personal Digital Assistant (PDA) met steeds meer mogelijkheden in beeld kwam. Ook veel apparaten zoals wasmachines, videorecorders, digitale camera’s en dergelijke bevatten tegenwoordig een computer om allerlei zaken te regelen. Ondertussen ging ook de ontwikkeling van besturingssystemen, opslag media en netwerken gestaag door de laatste vijftig jaar en ook hiervan probeer ik hier een overzicht te geven.

Computer geschiedenis met een overzicht per jaar

1939Z1 computer z1 computer Konrad Zuse studeerde in Berlijn vanaf 1927 werktuigbouwkunde, en haalde zijn diploma in 1935. In 1938 voltooide Zuse de Z1, de eerste programmeerbare rekenmachine ter wereld, deze werkte nog geheel mechanisch, maar wel binair. Helaas heeft de Z1 nooit betrouwbaar gewerkt. wikipedia Z1
1939Z2 computer z2 computer Konrad Zuse voltooide in 1938 de Z1, de eerste programmeerbare rekenmachine ter wereld, deze werkte nog geheel mechanisch, maar wel binair. In 1939 volgde de Z2, een proefmodel dat bestond uit het mechanische geheugen van de Z1, een kaartlezer, en een uit tweehonderd relais opgebouwde processor. wikipedia Z2
1940CNC computer cnc computer In 1939 voltooide Bell Telephone Laboratories deze rekenmachine die ontworpen was door de wetenschapper George Stibitz. Maar al in november 1937 besloot Stibitz om te kijken of relais konden worden gebruikt om eenvoudige wiskundige functies uit te voeren en hij bouwde met geleende hardware uit het Bell-magazijn thuis een eenvoudig computersysteem Het systeem bestond uit de relais, een batterij, zaklampen en metalen strips die uit een tabaksblik waren gesneden. Stibitz’ collega’s gaven later de naam “K-Model” aan deze primitieve computer omdat deze op zijn keukentafel was gebouwd. In 1939 stemde de toenmalige leiding van Bell labs in voor de bouw van een groot experimenteel model en het eindproduct werd voor het eerst in gebruik genomen op 8 januari 1940. De machine, de Complex Number Calculator (CNC) genoemd, had de capaciteit om complexe getallen op te tellen, af te trekken, te vermenigvuldigen en te delen. George R. Stibitz Biography
1941Z3 computer z3 computer In december 1941 was de Z3 gereed, de eerste volledig elektromagnetische computer ter wereld, Konrad Zuse lag hiermee ruim drie jaar voor op de geallieerden. Van de Z3 zou later bewezen worden dat deze Turing-volledig was, wat dit apparaat zou kwalificeren voor het predicaat “eerste computer”. Overigens hadden de Z1 en de Z3 logisch gezien in grote lijnen hetzelfde ontwerp, de Z1 heeft echter door precisieproblemen nooit betrouwbaar gewerkt. wikipedia Z3
1942ABC computer Abc computer In 1943 werd de Atanasoff-Berry Computer (ABC) voltooid, na demonstratie van een proof-of-concept type in 1939 krijgt professor John Vincent Atanasoff geld om een echte machine te bouwen bij het Iowa State College. De ABC was het middelpunt van een octrooi rechtzaken met betrekking tot de uitvinding van de computer, dat in 1973 werd opgelost toen werd aangetoond dat mede-ontwerper van ENIAC John Mauchly de ABC gezien had vlak nadat deze operationeel was. Atanasoff werd uitgeroepen tot de bedenker van verschillende basiscomputerideeën, maar de computer als concept werd niet-octrooieerbaar verklaard. Een werkende replica op ware grootte van het ABC werd in 1997 voltooid en is momenteel te zien in het Computer History Museum. Geen bron
1943Colossus computer colossus computer De Colossus wordt gezien als de eerste elektronische computer en werd eind 1943 in productie genomen. Daarmee was de topgeheime computer twee jaar eerder in bedrijf dan de publiekelijk bekende ENIAC. Hij werd tijdens de Tweede Wereldoorlog door de Britten gebruikt om het Duitse berichtenverkeer te ontcijferen. De Colossus was opgebouwd uit twee grote rekken met ongeveer 1500 elektronenbuizen voor de tellers, schuifregisters en logische bewerkingen. Hij had een systeem om ponsbanden te lezen met de Baudotcode, zoals ook de telexmachines in die tijd gebruikten, maar dan met fotosensors in plaats van mechanische aftasting. Het leessysteem haalde een snelheid van 5000 karakters per seconde. De Colossus kon geprogrammeerd worden via een paneel met schakelaars, stekkers en kabels. De Colossus computers waren zeer succesvol en braken een enorm aantal topgeheime Duitse berichten. Na de oorlog werd Bletchley Park (waar de Colossus computers stonden) gesloten en werden acht Colossus computers vernietigd om veiligheidsredenen en de laatste twee computers verhuisden naar Cheltenham en werden ontmanteld in 1960. De Colossus computers en hun taak tijdens de oorlog waren topgeheim en bleven dat ook voor vele jaren na de oorlog en lange tijd was niemand op de hoogte van de Colossus. Hierdoor kreeg de Amerikaanse ENIAC de onverdiende roem van eerste programmeerbare digitale computer, dit is later hersteld. wikipedia Colossus computer
1944Harvard Mark I computer Harvard Mark I computer Deze computer was eigenlijk een IBM Automatic Sequence Controlled Calculator (ASCC) die door de staf van Harvard University Mark I genoemd, was. Het was een elektromechanische computer voor algemeen gebruik die werd gebruikt in de oorlogsinspanning tijdens het laatste deel van de Tweede Wereldoorlog. Een van de eerste programma’s op de Mark I werd op 29 maart 1944 geïnitieerd door John von Neumann. Von Neumann werkte op dat moment aan het Manhattan-project en moest bepalen of implosie een haalbare keuze was om de atoombom die een jaar later zou worden gebruikt tot ontploffing te brengen. De Mark I berekende en printte ook wiskundige tabellen, wat het oorspronkelijke doel was geweest van de Britse uitvinder Charles Babbage voor zijn “analytische machine”. De Mark I werd in 1959 gedemonteerd, maar delen ervan werden tentoongesteld in het Science Center als onderdeel van de Harvard Collection of Historical Scientific Instruments. Andere universiteiten hadden ook “Mark I”-computers, maar de Harvard Mark I wordt meestal bezien als dé Mark I. wikipedia Harvard Mark I computer
1945Z4 computer z4 computer De Z4 computer was net als de Z1, de Z2 en de Z3 ontworpen door de Duitse ingenieur Konrad Zuse en gebouwd door zijn bedrijf Zuse KG en werd in september 1950 verkocht aan ETH Zürich in Zwitserland. Het was de eerste computer ter wereld die echt werd verkocht en versloeg daarmee de Britse Ferranti Mark I en de UNIVAC I computer. De Z4 was de opvolger van de Z3 en net als de Z3 was het een elektromechanische machine. Geen wikipedia pagina
1946Eniac computer eniac computer In 1943 bundelden de Moore School of Electrical Engineering (Univ. van Pennsylvania) en het (militaire) Ballistic Research Lab hun krachten om een elektronisch computer te ontwerpen die het bestaande rekentuig verre zou overtreffen. Met een militair budget van $ 150.000 begon men de constructie van de ENIAC, het was een kolos van 30 keer 3 keer 1 meter, dat met 17.468 radio-buizen 140 kilowatt gebruikte en permanente koeling eiste. Getallen van 0 tot 9 werden vanuit een IMB-ponskaartlezer de ENIAC ingevoerd en in verschillende soorten geheugens opgeslagen, in elektromechnische telwielen, en in elektronische geheugens bestaande uit paren vacuümbuizen die flipflop-schakelingen vormden. De ENIAC was in staat om 5000 optellingen en 300 vermenigvuldigingen per seconde te verrichten. wikipedia ENIAC computer
1947Williams tube Williams tube De Williams tube won de race voor een praktisch directe toegankelijk geheugen. De heer Frederick Williams van de Universiteit van Manchester wijzigde een kathodestraalbuis door punten en streepjes van fosforescerende electrostatische lading op een scherm te schrijven en zodoende nullen en enen vast te leggen. Een plaat voor het scherm las de electrische lading en gaf dus een een of een nul terug. De lading werd maar een fractie van een seconde vastgehouden en moest dus wel “ververst”worden. Het geheugen had voor die tijd een grote capaciteit van 500 tot 1000 bits. wikipedia Williamsbuis
1948Eerste computerprogramma Eerste computerprogramma In 1948 werd het allereerste computerprogramma op een computer uitgevoerd, daarvoor werden de stappen nog handmatig ingevoerd. De onderzoekers Frederic Williams, Tom Kilburn en Geoff Toothill van de University of Manchester ontwikkelen de Small-Scale Experimental Machine (SSEM), beter bekend als de Manchester “Baby”. De Baby is gebouwd om een nieuwe geheugentechnologie te testen (de Williams Tube) wat het eerste snelle elektronische random access-geheugen voor computers was. Hun eerste programma, bestaande uit zeventien instructies en geschreven door Kilburn, liep op 21 juni 1948. Dit was het eerste computerprogramma in de geschiedenis dat op een digitale, elektronische computer met een opgeslagen programma’s draaide. Wikipedia EDSAC computer (Eng)
1949EDSAC computera EDSAC computer In 1949 werd de EDSAC computer gebouwd aan de universiteit van Cambridge met behulp van vacuümbuizen en kwikvertragingslijnen voor geheugen. Het EDSAC-project werd geleid door de Cambridge-professor en directeur van het Cambridge Computation Laboratory, Maurice Wilkes. Een belangrijke vooruitgang in het programmeren was het gebruik van een bibliotheek met korte programma’s, ‘subroutines’ genaamd, die op geperforeerde papieren tapes waren opgeslagen en die werden gebruikt voor het uitvoeren van algemene repetitieve berekeningen binnen een groter programma. Het hoofdgeheugen van de EDSAC bestond uit 1024 locaties van 18 bits, maar het bovenste bit was altijd niet beschikbaar vanwege timingproblemen, dus er werden slechts 17 bits gebruikt. Geen bron
1950ERA 1101 computera Era 1101 computer In 1950 werd de ERA 1101 computer (later omgedoopt tot UNIVAC 1101) geleverd, een computersysteem dat was ontworpen en gebouwd door Engineering Research Associates (ERA). De eerste klant van het bedrijf was de Amerikaanse marine. De 1101, ontworpen door ERA maar gebouwd door Remington-Rand, was bedoeld voor zeer snelle berekeningen en kon 1 miljoen bits opslaan op zijn magnetische trommel, een technologie die ERA had geperfectioneerd. Veel van de elementaire architectonische details van de 1101 werden tot de jaren zestig opnieuw gebruikt in latere Remington-Rand-computers. Wikipedia UNIVAC 1101
1951Univac computer univac computer De eerste computer bedoeld voor algemeen gebruik en met een commercieel oogmerk, was de UNIVAC computer: de Universal Automatic Computer. Remmington Rand een verre voorganger van het huidige UNISYS, verkoopt ‘s-werelds eerste computer aan het Amerikaanse buro voor volkstelling. Het is de UNIVAC 1. (Universal Automatic Computer). Het apparaat woog een paar duizend kilo, rekende met 5000 electronenbuizen met een snelheid van duizenden berekeningen per seconde. Het geheugen van 256 Kb, was opgebouwd uit ferrietringen. Eén van de beroemdste klusjes van de UNIVAC was het voorspellen van de uitslag van de Amerikaanse presidentsverkiezingen van 1952. Nadat het ‘rekenmonster’ één procent van de stemmen had geteld wist hij al dat Dwight Eisenhouwer zou winnen en hij kreeg gelijk. wikipedia UNIVAC computer
1952ARRA computer Arra computer De ARRA (Automatische Relais Rekenmachine Amsterdam) was de eerste computer van het Mathematisch Centrum. De machine werd gemaakt door Carel Scholten en Bram Loopstra en het was een binaire relais computer. De relais hadden een onbetrouwbare schakeltijd van een paar milliseconden en kwamen uit een Engelse oorlogsdump. De machine had een trommelgeheugen met 1024 woorden van 30 bits. De ARRA had zestien verschillende instructies, waaronder vermenigvuldigen met en zonder rest, en delen met en zonder rest. Voor de in- en uitvoer van de machine werd een bandlezer, die papier las, en een telex gebruikt. De ARRA was zo onbetrouwbaar dat de computer praktisch onbruikbaar was. De computer werd eind 1952 uit elkaar gehaald. Er zijn geen overblijfselen van de ARRA meer over. wikipedia ARRA computer

Testudo computer Testudo computer Testudo, oorspronkelijk bekend onder de naam ARCO (Automatische Relais Calculator voor Optische berekeningen, of Automatic Relay Computer for Optics), is de eerste computer die ontworpen is door Willem van der Poel en daarna ook echt gebouwd is. Hij begon eraan te werken in 1947. Van der Poel heeft de computer zelf niet afgebouwd; dat werd door anderen gedaan. Vanaf 1952 tot 1964 was de Testudo in gebruik bij de Technisch Physische Dienst voor het doorreken van lenzen. Daar kreeg de computer de naam Testudo, het Latijnse woord voor schildpad. Deze computer was dan ook erg traag, maar zeer betrouwbaar. Een optelling of een aftrekking duurden beide 30 seconden en een vermenigvuldiging, deling of worteltrekking duurden elk 45 seconden. Ook de wortel van 1 min een getal in het kwadraat duurde 45 seconden. Deze instructie was handig voor het converteren van een sinus in een cosinus. De testudo deed ‘s nachts in 16 uur wat een optisch ontwerper in 8 uur zou kunnen doen. ‘s Middags om 5 uur werd de Testudo gevoerd met gegevens en de volgende morgen gaf de machine het resultaat terug. wikipedia Testudo computer

IBM 701 computer IBM 701 computer In 1952 produceert IBM de 701, de eerste machine waarin de elektromechanische schakelingen zijn vervangen door elektronenbuizen. Een veel kleinere en vooral snellere machine, die zo’n 2200 bewerkingen per seconde haalt. Aanvankelijk slechts bedoeld voor overheidsdiensten en wetenschappelijk gebruik. Maar al spoedig past men de nieuwe techniek ook toe in apparatuur voor het bedrijfsleven. Het systeem gebruikte 72 “Williams tubes” als geheugen die elk een capaciteit hadden van 1024 bits wat een totaal van 2048 woorden van 36 bits opleverde. Instructies waren 18 bits lang, 5 bits voor de opcode wat 32 verschillende instructies betekende en 12 bits voor het adres, getallen waren of 36 bits of 18 bits lang. wikipedia IBM 701 computer
1953ARRA 2 computer Arra II computer De ARRA II was een computer van het Mathematisch Centrum, de letters staan voor Automatische Relais Rekenmachine Amsterdam II. Alleen in naam was het de opvolger van de ARRA, want het ontwerp was geheel anders. Maar tegenover de geldschieters konden de makers van de ARRA II het niet maken om geld te vragen voor een compleet nieuwe machine. Op 1 november 1952 sloot Gerrit Blaauw zich aan bij Carol Scholten en Bram Loopstra om een betrouwbare versie van de ARRA te maken. In december 1953 voerde de ARRA II zijn eerste programma uit en tot midden 1956 was de computer onafgebroken in gebruik. De ARRA II was geheel elektronisch, in plaats van elektromechanisch. De computer had trommelgeheugen met 1024 woorden van 30 bits. De gemiddelde snelheid van de ARRA II was ongeveer 40 instructies per seconde. De ARRA II kon hardwarematig vermenigvuldigen en delen en er waren 25 verschillende instructies. Er is niets van de ARRA II bewaard gebleven. wikipedia ARRA II computer

PTERA computer PTERA computer PTERA staat voor PTT Elektronische RekenAutomaat, in Den Haag gebouwd door Leen Kosten en Willem van der Poel in 1953 op het Centraal Laboratorium van de PTT. De PTERA bestond uit 700 elektronenbuizen en 120 relais en had een trommelgeheugen van 2048 woorden (elk 31 bits lang). De machine heeft 100.000 gulden gekost, hetgeen weinig was in vergelijking met machines uit het buitenland. De in- en uitvoer van de PTERA gebruikte een ponsband. In september 1953 werd de computer in gebruik genomen en in 1958 werd de PTERA in een paar uur tijd grondig gesloopt toen een ZEBRA computer zijn plaats innam. De uptime van de PTERA was ongeveer 50%. De andere 50% van de tijd bestond uit het repareren van de computer, er is niets van bewaard gebleven. pagina over de PTERA computer
1954IBM 650 computer IBM 650 De IBM 650 was een van de eerste computers van de firma IBM en ook de eerste die in grote aantallen geproduceerd is. De computer werd in 1953 aangekondigd en vanaf 1954 tot 1962 zijn er meer dan 2000 systemen verkocht, in 1969 stopte de support. De IBM 650 was een decimale machine met radio-buizen en een trommelgeheugen en gebruikte ponskaarten voor de invoer van data.
wikipedia IBM 650 computer

Fortran(Programmeertaal) programmeertaal Fortran Fortran is een programmeertaal die speciaal ontwikkeld is voor rekenwerk in de exacte wetenschappen. Het woord Fortran is afgeleid van The Formula Translating System. Fortran is om verschillende redenen belangrijk, ten eerste was het de eerste hogere programmeertaal die in algemeen gebruik kwam, waardoor Fortran een belangrijke stempel op alle navolgende programmeertalen gedrukt heeft. Ten tweede was het de eerste taal die door het ANSI gestandaardiseerd werd (FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95 en Fortran 2003), waarbij de compatibiliteit met voorgaande versies zo veel mogelijk behouden bleef. Het was decennialang de meest toegepaste taal voor technische, natuurwetenschappelijke en econometrische vraagstukken. wikipedia Fortran programmeertaal
1955FERTA computer Ferta computer De FERTA (Fokker’s Eerste Rekenmachine Type ARRA, of Fokker Electronische Rekenmachine Te Amsterdam) was een verbeterde versie van de ARRA II met verfijnde bit verschuif instructies, die speciaal is gemaakt voor Fokker door het Mathematisch Centrum. Dankzij de verbeteringen was de FERTA ongeveer twee keer zo snel als de ARRA II. In mei 1954 werd er begonnen aan de ontwikkeling van de FERTA en op 1 april 1955 werd de computer overhandigd aan Fokker. De FERTA werd tot 1963 gebruikt, totdat de computer werd vervangen door een X1 computer. Fokker gebruikte deze machine voor het berekenen van eigenwaarden van matrices die werden gebruikt voor het ontwerp van de vleugels van de Fokker F27 “Friendship”. wikipedia FERTA computer
1956ARMAC computer ARMAC De ARMAC (Automatische Rekenmachine van het MAthematisch Centrum) was de opvolger van de ARRA II. Er werd intern gebruik van gemaakt in het Mathematisch Centrum. De computer werd in gebruik genomen in juni 1956. Het ontwerpen en het bouwen van de ARMAC duurde anderhalf jaar Het was de laatste computer die werd gebouwd in het Mathematisch Centrum. Fysiek is er helaas niets van overgebleven. Het geheugen van de ARMAC bestond uit twee delen: trommelgeheugen, net zoals de ARRA II, en het nieuwere en snellere magnetisch kerngeheugen. Dit magnetische kerngeheugen werd gebruikt als een buffer om de inhoud van een track van het trommelgeheugen in op te slaan. Het trommelgeheugen van de ARMAC had 3584 woorden van 34 bits, 33 data bits en 1 pariteit bit. Een klokpuls duurde 13,3 milliseconden. Het kerngeheugen had twee keer 32 woorden en het duurde 20 microseconden voor een klokpuls. De computer bestond uit 1200 buizen en verbruikte 10 kiloWatt. Volgens Loopstra was de gemiddelde snelheid van de ARMAC ongeveer 1000 instructies per seconde. wikipedia ARMAC computer

Z22 computer z22 computer De Z22 was het zevende computermodel dat Konrad Zuse ontwikkelde (de eerste zes waren respectievelijk de Z1, Z2, Z3, Z4, Z5 en Z11). De belangrijkste versiesprong van de Z11 naar de Z22 was het gebruik van vacuümbuizen, in tegenstelling tot de elektromechanische systemen die in eerdere modellen werden gebruikt. De eerste gebouwde machines werden verscheept naar Berlijn en Aken. Tegen het einde van 1958 had men een werkende ALGOL 58 compiler gebouwd voor de Z22 computer. De Hogeschool Karlsruhe heeft nog steeds een operationele Z22 die in permanente bruikleen is bij het ZKM in Karlsruhe. In totaal werden er 55 van deze Z22 computers geproduceerd. wikipedia Z22 computer pagina (Eng)
1957PETER computer PETER De PETER (Philips Experimentele Tweetallige Electronische Rekenmachine) was de eerste computer die Philips heeft gemaakt. De computer werd ontworpen door H.J. Heyn en Arie Slob en in 1956 was de machine klaar. Het was een kleine, maar voor zijn tijd erg snelle computer, die voor een deel parallel werkte met snel trommelgeheugen en nog sneller kerngeheugen. Maar de PETER was ook erg onbetrouwbaar. Een woord was 20 bits lang. De opcodes waren 4 bits en adressen 12 bits. Een optelling duurde 15 microseconden. wikipedia PETER computer

ZEBRA computer ZEBRA De ZEBRA was een computer en stond voor Zeer Eenvoudige Binaire Reken Automaat. De ZEBRA is ontworpen door Willem van der Poel en gebouwd door Standard Telephones and Cables Ltd. in Groot-Brittannie. Er zijn ongeveer 55 ZEBRA’s verkocht over de hele wereld, waarvan negen in Nederland. Zo was de ZEBRA de eerste computer van de universiteiten van Groningen, Utrecht en Delft. Het trommelgeheugen van de ZEBRA bestond uit 8192 woorden van 33 bits waarvan 1 bit voor het teken. De eerste versie van de computer had 600 vacuumbuizen, maar latere versies waren volledig getransistoriseerd. De ZEBRA had twee rekenregisters en twaalf hulpregisters. De computer had geen hardwarematige vermenigvuldig en deling. Voor de ZEBRA bestond een interpretator voor Simple Code. Het inverteren van een 30 bij 30 matrix met behulp van een programma geschreven in Simple Code kostte 63 minuten. Er zijn twee ZEBRA simulators voor de PC geschreven, waarvan een door Willem van der Poel zelf. wikipedia Willem van der Poel

X1 computer X1 De X1 is de eerste computer die Electrologica heeft uitgebracht. De X1 was een volledig getransistoriseerde computer. In september 1956 werden de specificaties van de X1 opgesteld. Eind 1956 was het gedetailleerde ontwerp klaar. En eind 1957 deed het prototype van de X1 zijn eerste berekening. De X1 was een binaire computer, de woordlengte was 27 bits. Het geheugen bestond volledig uit magnetisch kerngeheugen en was maximaal 32768 woorden groot, waarvan 8192 woorden bestonden uit read-only geheugen. De X1 had een interruptsysteem dat een interrupt genereerde als een in- of uitvoer opdracht klaar was. Edsger Dijkstra en Jaap Zonneveld hebben de eerste ALGOL 60 compiler ter wereld geschreven voor de X1. wikipedia X1 computer
1958Eerste chip eerste computer chip De eerste chip of integrated circuit werd gemaakt, Jack Kilby van Texas Instruments ziet kans een aantal transistoren op een plaatje halfgeleidermateriaal met elkaar te verbinden, en hij bouwt zo het allereerste geïntegreerde circuit (IC). De microprocessor zal nog tot 1971 op zich laten wachten.
wikipedia Jack Kilby

Algol (Programmeertaal) programmeertaal Algol Algol is een zeer invloedrijke programmeertaal, de naam is een afkorting voor Algorithmic Language. De taal is voortgekomen uit de wens om een machine-onafhankelijke programmeertaal te maken die zoveel mogelijk moest lijken op gebruikelijke wiskundige notatie. De taal was daarmee een reactie op de weinige andere destijds al bestaande programmeertalen, Cobol en Fortran. Algol was ook de eerste taal die alle programmeerparadigma’s zou combineren, alle moderne programmeertalen ontlenen wel ideeën aan Algol. Ironisch genoeg was de taaldefinitie zo ontzettend uitgebreid, dat nooit iemand het voor elkaar heeft gekregen een compiler voor de complete taal te maken… Toch waren de gedeeltelijke implementaties, die gebruik maken van een interpreter. In 1960 kwam Algol-60 uit, als resultaat van werk van John Backus, Peter Naur en Edsger W. Dijkstra. De Amerikaans beroepsvereniging ACM besloot dat deze taal de standaardtaal zou worden voor het weergeven van algoritmes in haar blad Communications of the ACM.
wikipedia Algol programmeertaal
1959Hein Pragt geboren Hein Pragt geboren Dit is het jaar dat ik geboren ben, mijn geboortejaar valt dus samen met het geboortejaar van de programmeertaal Cobol! Leuk om te vermelden dat ik ook ooit het praktijkdiploma Cobol programmeur gehaald heb maar het verder nooit gebruikt heb behalve in 1999 toen ik een in Cobol geschreven applicatie jaar 2000 proof gemaakt heb.

Cobol (Programmeertaal) programmeertaal Cobol Cobol is ontwikkeld in 1959 in opdracht van het Amerikaanse Department of Defense, het moest een taal zijn die gemakkelijker te lezen, schrijven en onderhouden was dan de tot dan toe gangbare talen en die op meerdere typen computers inzetbaar moest zijn. De eerste versie van Cobol stamt uit 1960, COBOL-60. De thuisbasis van COBOL is het IBM-mainframe, tegenwoordig draait COBOL daarnaast ook op onder meer Microsoft Windows en Unix. Van oudsher was de taal gericht op het makkelijk omspringen met (grote) gegevensbestanden in een batch-georiënteerde omgeving. Nog zeker 30 procent van alle software die momenteel in gebruik wordt is in Cobol geschreven, echter het vinden van goede Cobol programmeurs wordt steeds moeilijker. wikipedia COBOL programmeertaal

DEC PDP 1 computer DEC PDP 1 computer De PDP-1 (Programmed Data Processor-1) is de eerste computer van Digital Equipment Corporation en deze kwam in 1959 op de markt. Men noemde het een Programmed Data Processor in plaats van een computer om politieke redenen en de naam PDP is daarna blijven hangen. Deze computer is legendarisch omdat hierop de hacker cultuur bij het MIT ontstond en het eerste echte computerspel “Spacewar” op deze computer ontwikkeld is. The PDP-1 gebruikte een 18-bit word geheugen van standard 4096 words. The PDP-1 bestond uit 2,700 transistoren en 3,000 diodes op diverse printplaten in een 19 inch rack en de rekenkracht was vergelijkbaar met een draagbare rekenmachine van begin jaren 90 vorige eeuw. The PDP-1 woog ongeveer 730 kg.
wikipedia DEC PDP 1 computer (Eng)
1960PASCAL (Programmeertaal) PASCAL De PASCAL (vernoemd naar Blaise Pascal, tevens een afkorting voor Philips Akelig Snelle CALculator) was de tweede computer die Philips heeft gemaakt. De PASCAL begon als een betrouwbare PETER, maar uiteindelijk werd besloten om een geheel nieuwe computer ervan te maken. Toen hij klaar was, was het de snelste computer in de hele wereld, zelfs sneller dan de X1. De hoge werkfrequentie, dankzij het erg snelle trommelgeheugen en een nieuwe oplossing voor het probleem met de tien transfer, resulteerde in de hoge snelheid. Philips gebruikte de PASCAL in het Philips Natuurkundig Laboratorium in Eindhoven om berekeningen te doen aan cryogeen materiaal, halfgeleiders, televisies en hete lucht motoren. Van deze computer werd later en kopie gemaakt, de P3, het logische ontwerp en de snelheid was hetzelfde, maar de P3 was volledig opgebouwd uit transistoren. Deze computer is gebruikt in het researchlaboratorium van Manufacture Belge de Lampes Electriques in Brussel. wikipedia PASCAL computer
1961Eerste TTL IC TTL TTL technologie werd uitgevonden in 1961 door James L. Buie. Transistor-transistorlogica of TTL is een standaard voor digitale logica. TTL werkt met geïntegreerde schakelingen waarvan het typenummer meestal begint met 74. Er bestaan ook TTL-chips voor militaire toepassingen. Deze hebben zwaardere specificaties en het typenummer begint met 54. TTL-chips gebruiken een voedingsspanning van 5 Volt. Ze hebben verder aan aantal digitale in- en uitgangen waardoor ze met elkaar gekoppeld kunnen worden. Oudere huiscomputers waren vaak voor een groot deel uit TTL-chips opgebouwd. wikipedia TTL
1962DEC PDP 4 computer DEC PDP 4 computer De DEC PDP-4 was de opvolger van de DEC PDP-1 die door Digital Equipment Corporation in 1992 voor het eerste geleverd werd. Van de tussenliggende nummers 2 en 3 zijn er geen echte exemplaren verkocht. De PDP-4 was eigenlijk een goedkopere (en langzamere) versie van de PDP-1. De machine woog ook maar 490 kg (i.p.v. de 730 kg voor de PDP-1) en er zijn er c.a. 54 exemplaren van verkocht. wikipedia DEC PDP 4 computer (Eng)
1963DEC PDP 5 computer DEC PDP 5 computer De DEC PDP-5 computer was de eerste echte commercieel geproduceerde computer ter wereld en deze verscheen in 1993 op het toneel. Het was de eerste 12 bits computer van DEC en de instructieset was de grondslag voor de oh zo bekende PDP-8. De minimale configuratie van de PDP-5 bestond uit één enkele 19-inch kast met 150 printplaten die samen meer dan 900 transistors bevatten. De machine werd aangeboden met 1024 tot 32.768 12-bits woorden ringkerngeheugen. Er werden meer dan 1000 exemplaren van gebouwd en verkocht. wikipedia DEC PDP 5 computer (Eng)
1964DEC PDP 6 computer DEC PDP 6 computer De PDP-6 was in 1964 DEC’s eerste “grote” computer, het gebruikte 36-bits woorden, net als IBM, Honeywell en General Electric. De adressering bleef 18-bit, zoals in eerdere DEC-machines en de machine werd geleverd met een ringkerngeheugen 32.768 woorden. Daarnaast bevatte de PDP-6 ook 16 geheugenlocaties die door middel van snelle flip-flops waren opgebouwd en deze werden als snelle registers gebruikt als eerste 16 geheugenlocaties van het geheugen. De PDP-6 woog ongeveer 770 kg. Wereldwijd werden er slechts 23 exemplaren, de machine was complex en duur om te bouwen, maar ook moeilijk te installeren en werkend te krijgen op de locatie van de klant. Commercieel gezien was de computer geen succes. wikipedia DEC PDP 6 computer (Eng)
1965Multics (Os) multics besturingsysteem In 1965 werkte Bell Telephone Laboratories (Bell Labs, een afdeling van AT&T ) met General Electric en Project MAC van MIT aan het schrijven van een besturingssysteem genaamd Multics. Helaas besloot Bell Labs dat het project nergens toe leidde en brak de groep uiteen, hierdoor bleef Bell Labs achter zonder goed besturingssysteem. Dit systeem was echter wel de basis van het latere Unix besturingsysteem. wikipedia Multics (Os)

PDP-7 computer pdp-7 De DEC PDP-7 is een minicomputer die gemaakt werd door Digital Equipment Corporation. De introductie was in 1965, het was het eerste system dat hun Flip-Chip techniek gebruikte en de prijs was voor die tijd maar $72,000 USD. De PDP-7 was de derde tak van de Digital 18-bit machines met ongeveer dezelfde instructie set en architectuur als de PDP-4 and the PDP-9. Ook een leuk details is dat het de eerste wire-wrapped PDP machine was. Er draaien momenteel nog steeds een paar PDP-7 machines. wikipedia PDP-7

X8 computer X8 De X8 is net zoals zijn voorganger, de X1, gemaakt door Electrologica en was min of meer upward compatible met de X1. Het kerngeheugen had minimaal 16384 woorden en maximaal 262144 woorden. Een geheugencyclus duurde 2,5 microseconden. De X8 had drie registers van 27 bits en een register van 54 bits. Al deze registers waren bruikbaar als indexregisters. De X8 had hardwarematige ondersteuning voor floating-point getalen. De computer had een aparte communicatie-processer die CHARON (Centraal Hulporgaan Autonome Regeling Overdracht Nevenapparatuur) werd genoemd. Deze computer heet de X8 omdat deze machine was ontworpen als een computer die acht keer zo snel zou zijn als de X1. Uiteindelijk was de X8 ongeveer twaalf keer zo snel als de X1. wikipedia X8 computer

Computer muis eerste comnputermuis Uitvinding van de muis door Doug Engelbart in het Stanford Research Instituut. In die tijd deed men daar al onderzoek naar zaken als grafische gebruikersinterfaces. De eerste muis was nog geheel van hout en maakte gebruik van twee schijven die haaks op elkaar stonden. Muizen met bal zouden nog jaren op zich laten wachten. De muis is pas echt doorgebroken bij de introductie van de Apple-Macintosh-computer in 1984. wikipedia computer muis
1966 
1967Floppy disk Floppydisk De diskette en floppy disk drive (FDD) werd in 1967 uitgevonden door de IBM-technicus Alan Shugart. De eerste floppydrives gebruikten een schijf met een diameter van 8 inch, ongeveer 20 centimeter en een capaciteit van slechts 80 kilobytes. Leveranciers van homecomputers, die tot dan toe gebruik maakten van magnetische tapes (compact cassette), zagen al snel de mogelijkheden van het nieuwe medium. De eerste floppydisk in een thuiscomputer was de 5¼” versie (ongeveer 13 centimeter), klein genoeg om in een desktopmachine te passen, met een capaciteit van 360 kB. Omdat deze machines nog geen harde schijf hadden, werd het besturingssysteem geladen van een floppy, waarna het schijfje werd vervangen door een ander waarop de applicatie stond. Latere machines hadden twee drives zodat de schijf met het besturingssysteem in drive A kon blijven terwijl de applicatieschijf in drive B werd geladen. Latere disketteversies konden 1,2 megabytes bevatten. wikipedia Diskette
1968HP9100A programmeerbare rekenmachine hp9100a In 1968 bracht HP zijn eerste computer op de markt en hoewel het eigenlijk een volwaardige computer was noemde HP het om marketing redenen een programmeerbare rekenmachine. Hoewel HP (Hewlett-Packard Company) al bestond sinds 1939, maakte men in de beginjaren alleen maar elektronische apparatuur. Dit was hun eerste stap naar het bouwen van computers. Het idee voor het apparaat stamde van de ingenieur Thomas “Tom” E. Osborne en het was een technisch hoogstandje omdat er geen geïntegreerde schakelingen in zaten, de CPU was volledig uitgevoerd in discrete componenten. Vanwege de overeenkomsten tussen de machines van Hewlett-Packard en Olivetti volgde een juridische strijd die gewonnen werd door Olivetti waarna HP een flink bedrag aam royalty’s moest betalen. wikipedia HP0100A
1969 
1970PDP-11 pdp-11 In 1970 kwam de PDP-11 uit, PDP staat voor Programmable Data Processor. De PDP-11 computers werden geproduceerd door de Amerikaanse leverancier Digital Equipment Corporation (DEC). De PDP-11 was de opvolger van DEC’s PDP-8 computer. Door de 16 bits architectuur kon de PDP-11 64 kilobyte geheugen adresseren. Op den duur was dat een belangrijke beperking. De PDP-11 werd in de 80-er jaren opgevolgd door de 32 bits VAX minicomputer van DEC. wikipedia PDP-11 computer
{mid_ad}
1971Unix (Os) unix In 1965 werkte Bell Telephone Laboratories aan het schrijven van een besturingssysteem genaamd Multics, dit project werd gestopt waarna Ken Thompson op eigen initiatief verder ging eerst op een ongebruikte PDP-7. Later werden er een hoop nieuwe hulpprogramma’s geschreven door Ritchie en Thompson en anderen en het systeem ontwikkelde zich steeds meer tot een volwaardig bruikbaar besturingssysteem op de PDP-7. Om te laten zien wat het besturingssysteem waard was werd het in 1971 overgezet naar de PDP-11, financiering voor dit experiment was beschikbaar omdat de patentenafdeling van Bell Labs een nieuw tekstverwerkingssysteem nodig had; dit zou samen met het nieuwe systeem ontwikkeld worden. Intussen was UNICS veranderd in Unix. In 1973 werd nagenoeg het hele systeem herschreven in C waardoor het makkelijker overdraagbaar werd naar andere computertypes en er steeds meer gebruikers bij kwamen. wikipedia Unix OS

4004 (Processor) 4004 processor Een Japanse klant vraagt het nog jonge Intel Corporation of ze een serie chips wil maken voor een programmeerbare rekenmachine. Dat lijkt ingenieur Ted Hoff een uitdaging. Alleen vindt hij losse chips maar lastig en nodeloos ingewikkeld. Waarom niet één programmeerbaar “logisch apparaat” dat verschillende taken aankan en zijn instructies uit halfgeleidergeheugenput? Samen met collega’a Les Vadasz, Stan Mazor en Federico Faggin gaat Hoff aan het werk, en uiteindelijk weten ze alle schakelingen op één chip onder te brengen. Het resultaat is de allereerste microprocessor , de Intel 4004. Deze processor draaide op een kloksnelheid van 108 KHz en kon een geheugen van maximaal 640 bytes aanspreken. De 4004 is een 4-bits processor. (8-bits architectuur waarvan slechts 4-bits werden gebruikt. Deze processor had 2300 transistoren, die samen evenveel rekenkracht hebben als de kolossale ENIAC van een kwart eeuw eerder. Maar hij kost maar 200 dollar, dat is ruim 2000 keer goedkoper. De 4004 heeft een 16-pens behuizing, ter vergelijking, de huidige Intel Core heeft er 1366. De 4004 heeft 2300 transistors aan boord, zoveel waren er in die tijd nog nooit op één chip geplaatst. De 4004 chip heeft 46 (later 50) instructies en werkt maximaal op 740 kHz. De 4004 heeft een voedingsspanning van maar liefst 15 volt nodig, dat is bijna 15 keer zo veel als zuinige processoren nu. Het is niet zo dat er in één cyclus één instructie kan uitgevoerd worden, bijna alle instructies hebben meerdere cycli nodig. Toch was het voor die tijd een revolutionaire uitvinden. wikipedia 4004 (Processor)

Pong (Spel) Pong spel Pong was in 1971 de eerste commercieel echt succesvolle game. Het stond in speelhallen, bowlingbanen en snackbars en was verpakt in een nep-houten kast met een knalgeel front waar in grote zwarte letters Pong op staat. Twee besturingsknoppen, twee balkjes en een balletje op een zwart Tv-scherm, dat is het. Dankzij z’n eenvoud is het spel een onmiddellijk en enorm succes, in het eerste jaar verkoopt Atari 8500 kasten à 1200 dollar (fabricagekosten: 500 dollar)! wikipedia Pong videospel
1972C (Programmeertaal) Programmeertaal C De programmeertaal C (gemaakt door Dennis Ritchie) is gebaseerd op de programmeertaal B, die weer op BCPL was gebaseerd. Het is een zeer praktische programmeertaal die meer op Algol lijkt dan op andere voorlopers zoals in historische volgorde Fortran, Cobol en BASIC. Pascal is ook een versimpeling van Algol, maar dan in een andere richting. Terwijl Pascal juist meer afstand neemt van de machine waar het op moet werken, ligt C juist dicht tegen de machine aan; het is betrekkelijk ‘low-level’. De invloed van C is zo groot dat sindsdien de meeste nieuwe talen zoals C++, Objective C, Java, Javascript, C# en PHP grotendeels de syntaxis van C gebruiken. Hoewel het in eerste instantie bedacht was om besturingsystemen mee te schrijven (Unix is volledig met C gemaakt) werd het een hele populaire taal voor vele toepassingen. De taal C is binnen de Unix wereld nog steeds de broncode distributie voor vele programma’s en voor “snelle” spellen was en is het nog steeds populair. wikipedia programmeertaal C

HP-35 rekenmachine hp35 rekenmachine In 1972 bracht HP de HP-35 uit en dit was de eerste zakrekenmachine en ook werelds eerste wetenschappelijke zakrekenmachine. Rond 1970 daagde HP mede-oprichter Bill Hewlett zijn collega’s uit om een “HP-9100 (hun kantoor rekenmachine) in zakformaat” te maken en zo ontstond deze rekenmachine. De “35” in de naam van de rekenmachine kwam van het aantal toetsen. De originele HP-35 was verkrijgbaar van 1972 tot 1975. Intern was de rekenmachine gemaakt met een seriële (1-bits) processorchipset die onder contract door Mostek gemaakt werd, die 56-bits drijvende-kommagetallen kon verwerken.
wikipedia 8008 (Processor)

8008 (Processor) 8008 processor De Intel 8008 processor is een type processor van Intel, die diende als de opvolger van de 4004. Deze processor was de eerste 8-bit processor en bevatte al 3,500 transistors. De adresbus was 14-bits en kon daarmee 16 kB geheugen adresseren. Omdat de constructie van een hardware met een enkele processor eenvoudig was, werd hij veel in laboratoria gebruikt en bij het technisch onderwijs als studiemateriaal. De processor werd weinig in computers toegepast omdat de prestaties niet bijzonder waren en de processor ingewikkelde elektronica nodig had. wikipedia HP35
19738080 (Processor) 8080 processor De Intel 8080 was een microprocessor ontworpen en gefabriceerd door Intel. De 8-bits CPU werd in april 1974 uitgebracht met een klokfrequentie van 2 MHz. Door de brede 40-pinsbehuizing van de 8080 kan de processor een 16-bits brede adresbus en een 8-bits brede databus gebruiken, waardoor de adresruimte 64 kilobytes bedraagt. Er zijn zeven 8-bit registers, een 16-bits stack pointer en een 16-bits program counter, de eerste microcomputer op één enkele kaart werd gebouwd op basis van de 8080. De 8080 werd gebruikt in veel computers uit de begintijd, zoals de MITS Altair 8800 en de IMSAI 8080, waarmee de basis gelegd werd voor machines met het CP/M-besturingssysteem. De ontwerpers van de processors begonnen na een verschil van mening met Intel hun eigen fabriek en brachten de kloon Z80 (Zilog) op de markt, deze processor is veel uitgebreider maar verder volledig compatibel met de 8080.
wikipedia 8080 (Processor)
1974Altair 8800 computer Altair 8800 De Altair 8800 had geen muis, geen toetsenbord en geen beeldscherm. Op basis van de Intel 8080 microprocessor, waarin 4800 transistors waren verwerkt was het de eerste personal computer. Klanten moesten de Altair zelf in elkaar zetten en programmeren, aanvankelijk werden de gegevens op audiocassettes opgeslagen. Een zekere Bill Gates schreef hiervoor samen met Paul Allen een programmeertaal (Basicversie). De invoer gebeurde door schakelaartjes in de drukken, de uitvoer was antwoord door lampjes te laten knipperen. De Altair had een geheugen van welgeteld 256 bytes en kostte als bouwpakket 400 dollar.
wikipedia Altair 8800
1975Oprichting Microsoft Oprichting Microsoft In 1975 converteerden Bill Gates (19) en Paul G. Allen (22), twee jeugdvrienden uit Seattle, de programmeertaal BASIC wat tot die tijd een populaire mainframe-computerprogrammeertaal was, voor gebruik op een eenvoudige personal computer, de Altair. Altair Basic functioneerde in maart en het “Micro-soft”-partnerschap werd in april bezegeld, maar zou pas een paar maanden later zijn naam krijgen. In de daaropvolgende jaren verfijnden ze BASIC en ontwikkelden ze andere programmeertalen, MS-DOS en MS-Windows.
wikipedia History of Microsoft

Basic (Programmeertaal) Basic programmeertaal De programmeertaal BASIC was bedoeld om mensen snel te kunnen leren programmeren. De naam is een acroniem voor Beginners All-purpose Symbolic Instruction Code. Er is een grote gelijkenis met de taal Fortran. Microsoft schreef in 1975 de eerste BASIC-interpreter voor de MITS Altair 8800 computer. Deze werd daarna ook verkrijgbaar veel andere computers. Veel oude computers, waaronder de originele IBM PC uit 1981, werden geleverd met een BASIC interpreter in ROM, genaamd BASICA, zodat de computer na aanzetten onmiddellijk kon worden geprogrammeerd. Op computers voor thuisgebruik (Commodore64 e.a.) werd rond 1980 een variant van BASIC geleverd die door Microsoft was gestandaardiseerd en uitgebreid: MSX-BASIC (de MSX staat hier voor Microsoft eXtended). Microsoft zou later ook BASIC-interpreters uitbrengen voor MS-DOS 3 (GWBASIC, 1985), gebundeld met MS-DOS 5.0 (QBasic, 1991), met een grafische interface (Visual Basic 1.0 voor MS-DOS en Windows, 1991) en gebundeld in het pakket Visual Studio (1996). Over de versie Visual Basic .NET (ook wel VB7 genoemd, 2002) zegt Microsoft zelf dat de taal zodanig veel veranderd is dat alle oude gebruikers hem helemaal opnieuw zullen moeten leren.
wikipedia Basic (Taal)
{mid_ad}
1976Apple I computer Apple 1 Apple Computers, Inc. werd op 1 april 1976 opgericht door schoolverlaters Steve Jobs en Steve Wozniak, die het nieuwe bedrijf een visie gaven om de manier waarop mensen naar computers keken te veranderen. Jobs en Wozniak wilden computers klein genoeg maken voor mensen om ze in hun huis of kantoor te hebben. Jobs en Wozniak begonnen met het bouwen van de Apple I in jobs garage en verkochten deze voor 695 dollar. Dit systeem bestond uit een hoofdkaart die op een stuk triplex was geschroefd, een kast en een voeding zaten er niet bij. Er werden maar een paar van deze computers gemaakt, het werkgeheugen was . Wozniak verliet Apple in 1983 omdat hij niet zoveel interesse had in het managen van het bedrijf Apple Computers.
wikipedia Apple I computer

Z80 (Processor) Z80 processor De Z80 (mijn eerst liefde als processor) ontstond in 1974 toen Federico Faggin vertrok bij Intel om samen met Ralph Ungermann het bedrijf Zilog te starten. Faggin werkte eerder als hoofdontwerper onder meer aan de Intel 4004 en de 8080 processor. De Z80 is een 8 bit processor en werd officieel uitgebracht in 1976. De processor is opcode compatibel met de 8080 van Intel (wat een erg slimme zet was), maar had meer instructies, registers en adresseringsmethoden. Het ontwerp van de Z80 was gericht op het gebruik in computerterminals, printers, kasregisters, maar er zijn ook zeer veel thuiscomputers gemaakt op basis van de Z80 computer zoals de TRS80, de Sinclair computer reeks, de Philips P2000 en de bekende MSX computers. Zelf heden ten dage is er nog een club fanatieke hobbyisten die ontwerpen bouwen voor de Z80 microprocessor. De chip is nog steeds leverbaar.
wikipedia Z80 (Processor)  –   Mijn eigen pagina over de Z80 (Processor)

INS8060, of SC/MP (Processor) sc/mp processor In 1976 bracht National Semiconductor de INS8060 of SC/MP (uitgesproken als scamp) processor uit als Simple Cost-effectieve Micro Processor. De processor had een paar vreemde eigenaardigheden zoals een 12 bits program counter en vier bank switch adres bits en de vreemde mogelijkheid om via een control pin drie processoren op één enkele set geheugen te laten werken waardoor er heel eenvoudig een multiprocessor systeem te maken was. Ook had het on kosten te verlagen een 1 bit ALU waardoor de processor niet echt snel was. Maar het was een mooi simpel ontwerp en het bekende elektronicablad Elektuur bouwde er meerdere systemen mee. Dit was mijn eerste kennismaking met een microprocessor. Sinclair bracht een board met de naam MK14 uit met daarop een SC/MP processor. Voor de hobbyist was het een leuke en relatief goedkope processor, in de industrie sloeg het niet aan. wikipedia SC/MP (Processor) (Eng)  – Mijn eigen pagina over de SC/MP (Processor)
1977TRS80 Model I computer trs80 model I Dit was een computer in de vorm van een dik toetsenbord, dat werd aangesloten op een losse monochrome monitor. De computer beschikte over een BASIC-taal in ROM en was standaard uitgerust met 4 kB RAM en er kon een cassetterecorder op worden aangesloten, waarop programmatuur en data kon worden opgeslagen. De eerste BASIC-versie betrof een eenvoudige versie (level 1). Deze werd al spoedig vervangen door een uitgebreidere door Microsoft gelicenseerde versie (level 2). De TRS-80 model 1 level 2 kon ook uitgebreid worden met een zogenaamde Expansion Interface (EI). Hierdoor kon beschikt worden over meer geheugen (tot 48kB) en een aansluiting voor een parallelle printer. Ook kon men hierdoor de computer verder uitbreiden met (tot 4) diskettestations (single sided, single density 5¼”-diskettestations) en een seriele verbinding RS232. Naast BASIC kon men ook programma’s ontwikkelen in zogenaamde assembler of machinetaal. Veel hobbyisten hebben de model 1 zelf uitgebreid met hardware-aanpassingen zoals de processor versnellen (van 1,7 naar 2,5 MHz), het weergeven van kleine letters (lower case), het in het toetsenbord uitbreiden van het geheugen, enz. In Nederland werd op 1 oktober 1978 de ‘TRS-80 Gebruikersvereniging’ opgericht die 2-maandelijks het blad ‘Remarks’ uitgaf.
wikipedia TRS80 Model I computer  

Apple II computer Apple II De Apple II was een pc voor thuisgebruik, gebouwd met de Motorola 6502 microprocessor met een geheugen van 16 kB. Deze computer wordt aangesloten op een (kleuren!) tv, de data wordt bewaard op cassettebandjes. Het geheugen was 4 kB, uit te breiden tot 64 kB. Deze Apple II wordt een enorm succes en Apple II levert Apple de eerste miljoenen op. Het was een kant-en-klaar systeem met ingebouwd toetsenbord, geluid, kleurengraphics en optioneel een diskettestation. Met een prijs van $2600.- was het de duurste thuiscomputer.
wikipedia Apple II computer

Atari 2600 spelcomputer Atari 2600 spelcomputer De Atari 2600 spelcomputer die oorspronkelijk de Atari VCS (Video Computer System) werd genoemd, kunnen we beschouwen als de oervader van alle moderne gamecomputers. Er werden totaal meer dan dertig miljoen van verkocht en er werden, samen met andere bedrijven, honderden miljoenen spellen verkocht. Het toestel werd pas echt populair toen het spel Space Invaders werd uitgebracht. Het system was gebouwd rond een 6507 processor en een custom TIA video chip en had maar liefst 128 bytes Ram.
wikipedia Atari 2600 computer

Commodore PET computer Commodore PET computer In juni 1977 bracht Commodore de Commodore PET (Personal Electronics Transactor) op de markt en het was een van de eerste personal computers en het was de basis voor de gehele 8-bits productielijn die Commodore zou gaan opzetten. De computer bevat een MOS 6502-processor en maximaal 96 kB intern geheugen en de videochip was in de eerste modellen een TTL videocircuit en later een MOS 6545. De computer had ingebouwde BASIC programmeertaal in ROM-geheugen.
wikipedia Commodore PET computer

MK14 computer MK14 computer De MK14 computer is gebaseerd op de SC/MP CPU (INS8060) van National Semiconductor en wordt standaard geleverd met 256 bytes RAM en 512 bytes ROM. Het gebruikte een achtvoudige rode zevensegmentendisplay en er was ook een optionele VDU die 32 × 16 tekst of 64 × 64 afbeeldingen ondersteunde. Invoer was een toetsenbord met 20 membraantoetsen en een resetschakelaar. Een cassette-gebaseerde en PROM gebaseerd opslag waren optionele extra’s net als een zeer eenvoudige geluidskaart. Het was een echte hobby computer die men zelf uit kon breiden en het basis model moest in HEX machinecode geprogrammeerd worden.
wikipedia MK14 computer (Eng)
19788086 (Processor) 8086 processor De Intel 8086 processor was zowel de eerste 16-bit processor als de eerste x86 processor en werd uitgebracht in 1978 door Intel. Intel bracht korte tijd later een versie van de 8086 uit, de 8088, die intern in 16-bit werkte, maar aan de buitenkant een 8-bits bus had, deze processor werd door IBM verkozen voor de eerste IBM PC. De 8086 is uitgebracht in kloksnelheden van 4,77 (de snelheid in de eerste PC) tot 10 MHz. Veel PC-klonen hadden een optie om de processor tussen de oorspronkelijke 4,77 MHz en 8 MHz te kunnen schakelen. Instructies werden in 4 tot ongeveer 200 klokpulsen uitgevoerd. wikipedia 8086 (Processor)

ABC 80 computer ABC 80 computer In 1978 kwam de ABC 80 (Advanced BASIC Computer 80) op de makt, het was een personal computer ontwikkeld door het Zweedse bedrijf Dataindustrier AB (DIAB). De ABC 80 was gebouwd rond een Z80 en 16 KB ROM met een snelle semi-compilerende BASIC-interpreter. Het had 16-32 KB RAM als hoofdgeheugen en een speciale (meegeleverde) bandrecorder voor programma- en gegevensopslag, maar kon ook worden uitgebreid om diskdrives en vele andere randapparatuur. De ABC 80 werd gebruikt in scholen en kantoren in Scandinavië en delen van Europa maar werd ook gebruikt voor industriële automatisering en wetenschappelijke meet- en regelsystemen.
wikipedia ABC 80computer (Eng)
1979Acorn Atom computer Acorn Atom De Acorn Atom, die in Nederland ook bekend stond als de Hobbit Computer, is een uit 1979 stammende hobbycomputer van de firma Acorn Computers Ltd. Het ontwerp was van Sophie (Roger) Wilson die toen daar werkte. De Atom werd geleverd, als bouwpakket of compleet gebouwd, met een uitvoerige handleiding, het complete schema met een technische documentatie. Het was voor de gebruikers een machine die bij uitstek geschikt was voor allerlei experimenten. Hij was gebaseerd op de 6502 processor, voor veel gebruikers was een belangrijk gegeven dat naast BASIC ook een assembler in ROM meegeleverd was. Alles, maar dan ook alles, aan de machine was goed gedocumenteerd.
wikipedia Acorn Atom computer

Motorola 68000 (Processor) 68000 processor De Motorola 68000 processor was in de jaren 80 een bijzonder populaire processor in homecomputers. Onder andere Commodore, Apple en Atari gebruikten deze processoren. Ook de CD-i speler van Philips werkte met een 68000 processor. In de jaren 90 is deze processor in ontelbare apparaten ingebouwd. Type architectuur was CISC (Complex Instruction Set Computer) en het aantal registers was 8 x 32-bit dataregisters en 8 x 32-bit adresregisters. wikipedia Motorola 68000 (Processor)

TI-99 computer TI-99 computer In juni 1981 kwam de Texas Instruments TI-99 op de markt, de computer werd op de antenne-ingang van een televisie aangesloten via een apart kastje. Data bewaren gebeurde met een cassetterecorder, en ook was er een aansluiting voor een joystick. Boven op het apparaat was een uitbreidingsslot waar modules in gestoken konden worden. Helaas had de computer zeer beperkte grafische mogelijkheden behalve een zelf te definiërende tekenset. Mede hierdoor is de computer uiteindelijk voor onder de kostprijs gedumpt op de markt. Wat bijzonder was aan deze computer was de geheel eigen TMS9900 (16-bits-chip processor) van Texas Instruments zelf.
wikipedia TI-99 computer

Atari 400 / 800 computer Atari 400 / 800 computer In 1979 werden door Atari een reeks 8 bit-homecomputers die waren gebaseerd op de MOS Technology 6502-processor. De eerste modellen waren de Atari 400 en 800 en uiteindelijk waren deze computers de grootste concurrenten voor de Commodore 64. De computer was sneller en had meer grafische mogelijkheden, alleen het geluid was minder dan dat van de Commodore 64. Uiteindelijk ging de markt naar 16 bits computers en verdween de Atari 8 bit reeks van de markt.
wikipedia Atari 400 / 800 computer

Acorn System 1 computer Acorn System 1 computer In Maart 1979 kwam de Acorn Microcomputer (later hernoemd tot Acorn System 1) op de markt, met een 6502 op 1MHz, die was bedoeld voor gebruik in laboratoria, maar door de lage prijs ook redelijk populair bij hobbyisten was. In 1980 ontwikkelde Acorn deze computer door naar de System 2 en uiteindelijk naar de System 3, System 4 en System 5. Alle Acorn System-systemen konden worden gekoppeld met een extern toetsenbord die ook voor de Acorn Atom werd gebruikt.
wikipedia Acorn System 1 computer
1980Ada (programmeertaal) ada programmeertaal In de zeventiger jaren was het Amerikaanse ministerie van defensie bezorgd om het grote aantal verschillende programmeertalen dat werd gebruikt voor militaire projecten. In 1975 werd de Higher Order Language Working Group (HOLWG) gevormd met de opdracht om een manier te vinden om dit aantal te reduceren. De werkgroep schreef een serie documenten met eisen waaraan een standaardtaal moest voldoen en er werd een aanbesteding uitgeschreven voor een nieuwe programmeertaal en vier bedrijven werden ingehuurd om hun voorstellen verder uit te werken onder de codenamen Rood, Groen, Blauw en Geel. In mei 1979 werd het Groene voorstel, ontworpen door Jean Ichbiah van Honeywell Bull, gekozen en kreeg het de naam Ada. Het reference manual werd goedgekeurd op 10 december 1980 (Ada Lovelace’s verjaardag). Het Amerikaanse ministerie van defensie eiste het gebruik van Ada voor elk software project dat zij financierden als er meer dan 30% nieuwe code uit zou komen (hoewel er vaak uitzonderingen op deze regel werden toegestaan). De regel werd officieel afgeschaft in 1997. Soortgelijke eisen bestaan in andere NAVO landen. De taal werd een ANSI standaard in 1983 en een ISO standaard in 1987.Ada 95 is de gecombineerde ISO/ANSI standaard (ISO-8652:1995) en is de meest recente Ada standaard. Het oorspronkelijke doel om het aantal programmeertalen binnen het ministerie van defensie te verminderen is gehaald. In 1983 waren er meer dan 450, in 1996 waren dat er nog “maar” 37.
wikipedia Ada (programmeertaal)

ZX80 computer zx80 De Sinclair ZX80 was een eenvoudige thuiscomputer die door het bedrijf Sinclair Research van Clive Sinclair in 1980 werd uitgebracht. Het was de eerste computer die voor minder dan 100 pond verkocht werd in Groot-Brittannië, namelijk voor £99,95. De ZX80 kon enkel via de post besteld worden, en werd geleverd als kit om zelf te assembleren, dan was de prijs £79,95. De machine had een witte plastic kast en een klein blauw membraan-toetsenbord en ze moest op een televisietoestel worden aangesloten. Het display had 24 regels van 32 tekens, voor het genereren van het videosignaal gebruikte de ZX80 een combinatie van (zeer eenvoudige) hardware en software, waardoor ze enkel een beeld kon genereren wanneer er geen programma werd uitgevoerd, dus wanneer de machine wachtte op een toetsaanslag van de gebruiker viel het videosignaal weg. Programma’s kon men bewaren op audiocassettes. De computer gebruikte als CPU een Zilog Z80-kloon, de NEC 780C-1 chip, en had 1 KB RAM-geheugen (optioneel uitbreidbaar tot 16 KB) en een Sinclair BASIC-editor/interpreter samen met het besturingssysteem in een 4 KB ROM.
wikipedia Sinclair ZX80

HP85 computer hp85 In 1980 kwam HP met de Hewlett-Packard serie 80 kleine wetenschappelijke desktopcomputers op de markt. De HP-85 bevatte een CPU en het toetsenbord en een geïntegreerde monitor, met een ROM-gebaseerd besturingssysteem, 16 kB dynamisch RAM, een tapedrive voor DC-100 cartridges (210 kB capaciteit, 650 B/s overdracht) en een thermische printer. Zowel het scherm als de printer geven naast tekst ook afbeeldingen weer en de printer kan alles kopiëren wat op het scherm wordt weergegeven. De machines waren gebouwd rond een HP-gepatenteerde CPU met de codenaam Capricorn die draaide op 625 kHz en had een BASIC-interpreter in ROM (32 kB). Programma’s kunnen worden opgeslagen op DC-100 cartridgetapes of op externe disk/tape-eenheden. Voor de grotere HP-86- en HP-87-serie bood HP ook een plug-in CP/M-processorkaart met een aparte Zilog Z-80-processor.
wikipedia HP 80 series

Intel 8051 (Processor) Intel 8051 In 1980 bracht Intel de 8051 microcontroller op de markt en ik heb zelf veel schakelingen en apparaten (modems) ontworpen met deze processor. De 8051 is een acht bit CISC processor die in heel veel types op de markt is gebracht, ook door vele andere fabrikanten waarvan Atmel wel de bekendste is. Het systeem had santaard 4 kb rom en 256 bytes ram aan boord wat een grote uitdaging was voor de programmeur. Maar er kon ook 64 kb ROM en 64 kb Ram extern aangesloten worden waarbij men dan wel veel I/O pinnen moest opofferen. De processor had standaard een aantal Timers meerdere Interrupt lijnen en een interne seriële uart aan boord en veel programmeerbare I/O pinnen. De processor was ook niet duur en werd in vele apparaten als centrale processor gebruikt. Ook tegenwoordig word deze processor nog steeds gebruikt en is het nog steeds verkrijgbaar.
wikipedia Intel 8051 processor
1981Comodore VIC 20 comodore vic 20 In 1981 kwam de Commodore VIC 20 op de markt als een van de eerste homecomputers. Het grootste verschil met zijn opvolger de Comodore 64 was het beperkte geheugen van 5kB RAM en 20kB ROM. Het RAM-geheugen was wel weer uitbreidbaar met een externe module (cartridges) van bijvoorbeeld 16kB. VIC staat voor Video Interface Chip, waar de 20 voor staat is niet duidelijk. Ondanks het beperkte geheugen waren er toch veel spellen beschikbaar voor deze computer waardoor deze snel erg populair werd.
wikipedia Comodore VIC 20

Philips P2000 computer Philips P2000 computer In 1981 introduceerde Philips de P2000 homecomputer en het was een voor die tijd redelijk geavanceerde computer. De P2000 bestond uit een Z80 microprocessor op 2,5 MHz., 4 KB ROM, 16 KB RAM en 2 KB video RAM. Voor video werd gebruik gemaakt van een Teletext chip waardoor de video mogelijkheden overeen kwamen met Viditel en Teletext (40 tekens en 24 regels). De computer had een platte kast met een daarop vast gemonteerd toetsenbord. Bovenop zaten twee slots, een voor een Rom cartridge en een voor een I/O cartridge. Het bijzondere was een ingebouwde mini-cassettedrive die erg snel was en waarbij het opzoeken en wegschrijven volledig automatisch was. De computer was relatief duur maar wel van erg goede kwaliteit hardware die tegen een stootje kon en de P2000 was daarom redelijk populair in het onderwijs.
wikipedia Philips P2000
{mid_ad}
1982MSX 1 computer MSX 1 computer In 1982 introduceerde ASCII Corporation de MSX-standaard, de afkorting betekende ‘Machines with Software eXchangeability’, al werd ‘MicroSoft eXtended’ ook gebruikt. Het kwam er op neer dat MSX-software op iedere computer kon draaien waar het MSX-logo op stond. Dit voor die tijd revolutionaire idee sloeg aan, mede door Microsoft, die het BIOS, de BASIC en besturingssysteem voor de machines schreef. Grote merken als Philips en Sony brachten meerdere MSX-homecomputers uit. In Amerika en Engeland werd het geen succes; mede daardoor kwam de productie van MSX-computers in 1992 ten einde. Uiteindelijk zijn er wel ruim 5 miljoen systemen verkocht.
wikipedia MSX 1 computer

ZX Spectrum computer ZX Spectrum computer In 1982 introduceerde Clive Sinclair de ZX Spectrum als opvolger van de ZX80 en ZX81 computer. Hoewel de naam van deze computer eerst ZX82 zou gaan worden, werd er voor ZX Spectrum gekozen omdat deze computer met kleuren kon werken. Opvallend aan deze computer waren de kleine rubberen toetsen en de mogelijkheid om via toetscombinaties te kunnen programmeren. Er waren veel spellen voor deze computer beschikbaar. De computer was net als zijn voorgangers voorien van een Z80 microprocessor en een spciale ULA (Uncommitted Logic Array) chip die speciaal voor de ZX Spectrum gemaakt was en waar veel functies in waren ondergebracht. In 1984 werd de Spectrum+ uitgebracht met een grotere behuizing en een toetsenbord met harde plastic toetsen.
wikipedia ZX Spectrum computer
1983Comodore 64 computer comodore 64 De Commodore 64 (ook C64 of CBM64) is een bekende maar ook tamelijk onconventionele homecomputer van de firma Commodore uit de beginperiode voor hobby- en thuisgebruik. Het is met een geschat aantal van 17 tot 30 miljoen exemplaren nog steeds de best verkochte computer aller tijden. Het apparaat kwam in 1983 op de markt, de behuizing bestond uit een soort dik toetsenbord, waarbij het computergedeelte zich onder de toetsen bevond. De Commodore 64 werd aangesloten op een televisietoestel, die als monitor voor beeld en geluid diende. De Commodore 64, die bij de ontwikkeling VIC-30 werd gedoopt, maar nooit onder die naam op de markt kwam, was door Commodore ontwikkeld als opvolger van de VIC-20. Het nummer 64 slaat op het werkgeheugen van 64 kB, onder BASIC was er echter slechts 38 kB vrij voor de gebruiker.
wikipedia Comodore 64 computer

C++ (programmeertaal) C++ programmeertaal C++ is een programmeertaal die ontworpen is door Bjarne Stroustrup in het Bell Labs gedurende 1983-1985. C++ is een uitbreiding van de programmeertaal C, voor 1983 voegde Bjarne Stroustrup als features toe aan C en noemde dat “C with Classes”. He combineerde het gebruik van classes uit Simula’s en object georienteerdheid samen met de snelheid en efficiency van de taal C. De taals C++ was zeer populair, grote delen van windows zijn er in geschreven maar ook voor snelle spellen was de programmeertaal. De taal is door de taal java en het C# voorbijgestreefd maar het heeft als basis voor beide voorgenoemde talen gediend.
wikipedia C++ (programmeertaal)

HP150 computer hp 150 computer HP-150 (ook bekend als HP Touchscreen of HP 45611A) was een compacte, krachtige computer en het was gebaseerd op de Intel 8088. Het was een van ‘s werelds eerste touchscreen computers. Ondanks dat het een aangepaste MS-DOS versie draaide, was de computer niet IBM PC compatibel. De 8088 CPU draaide op 8 MHz (de IBM PC op 4,77 MHz) en met behulp van add-onkaarten kon het hoofdgeheugen worden verhoogd van 256 kB naar 640 kB. Het moederbord had echter geen optie voor een 8087 math coprocessor. Onzichtbaar voor de gebruiker, draait de HP 150 ook het “Terminal Operating System” (TOS) voor de terminalemulator en als laag onder MS-DOS.
wikipedia HP 150

Tulip System 1 computer Tulip System 1 computer In 1983 bracht Compudata (toen nog geen Tulip computers) de Tulip System 1 op de markt. Het was een volwaardige 16 bits microcomputer met een 8086 processor aan boord die op 8 Mhz draaide. Met deze computer waren ze zelfs iets eerder dan de IBM PC op de markt en die draaide op een 8088 (en 16 bits CPU met een 8 bits bus) en op de helft van de snelheid van de Tulip computer. De eerste System I draaide onder CP/M 86, maar na de komst van de IBM PC werd er snel overgeschakeld naar MS-DOS. Standaard had de System I met 128Kb RAM en dat kon naar 896 KB geüpgraded worden en het had een optie voor een 8087 math coprocessor.
wikipedia Tulip System 1 (Eng)
1984Apple Macintosh computer Apple Macintosh Introductie Apple Macintosh, de eerste computer voor thuis met een grafisch scherm. De Macintosh of kortweg Mac is de naam voor een serie computers op de markt gebracht door het Amerikaanse bedrijf Apple. De eerste Macintosh werd in 1984 vooral geïntroduceerd als goedkope opvolger van de Apple Lisa, een computer waarop al een visuele en muisgestuurde gebruikersinterface als op de Macintosh beschikbaar was en die zijn tijd ver vooruit was, maar vooral door zijn hoge prijs geen succes was. De Macintosh is in veel opzichten de grondlegger van wat nu de PC wordt genoemd. Computers zonder muis- en vensterbesturing a la MS-DOS waren rond 2002 nauwelijks meer verkrijgbaar. De eerste Macintosh draaide op 7,83 MHz terwijl in 2003 kloksnelheden tot bijna 500 keer zo groot worden gehaald. Het oorspronkelijke Mac-besturingssysteem (MacOS) werd uitgefaseerd rond 2002 en vervangen door het op BSD Unix gebaseerde Mac OS X.
wikipedia Apple Macintosh computer

HP Laserjet printer eerste HP Laserjet printer In 1984 introduceert HP zijn eerste LaserJet als merknaam voor de lijn laserprinters die op de markt, deze HP LaserJet was werelds eerste desktoplaser printer. Canon leverde zowel mechanismen als cartridges voor alle HP laserprinters. Het was een 300-dpi printer en het gebruikte een 8 MHz Motorola 68000-processor en kon afdrukken in verschillende tekenlettertypen. Het werd bestuurd met PCL3. Vanwege de hoge geheugenkosten had de eerste LaserJet slechts 128 kilobytes geheugen. De eerste LaserJet was een snelle vervanging voor daisy wheel impact printers met alleen tekst en de luidruchtige dot matrix printers. De LaserJet Plus volgde in september 1985.
wikipedia HP Laserjet
1985Atari ST computer Atari ST De Atari ST is een homecomputer die van 1985 tot begin jaren ’90 populair was. Officieel staat “ST” voor “Sixteen/Thirty-two, wat betrekking had op de 16-bits externe bus en 32-bit interne processor. De Atari ST was gebaseerd op de Motorola 68000 CPU-chip, met minimaal 512 kilobyte RAM-geheugen en een 3½-inch floppy diskdrive als opslagmedium. Hij leek op de Apple Macintosh en de Commodore Amiga die ook gebaseerd waren op de Motorola 68000. De 520ST was een alles-in-één apparaat, vergelijkbaar met eerdere homecomputers als de Commodore 64. In de tijd dat de 520ST uitkwam wilden de consumenten een volwaardig toetsenbord, inclusief cursortoetsen en een numeriek toetsenbord. Daardoor viel de 520ST wat groot uit, als men het toetsenbord wilde verschuiven moest de hele computer verplaatst worden.
wikipedia Atari ST computer

Comodore Amiga computer Comodore Amiga In 1984 kocht Commodore de firma Amiga Corp. Op, ze hoopten zo een vervolg te breien op het succesverhaal van de Commodore 64. In juli 1985 werd de nieuwe Amiga voorgesteld in New York, het toestel was in tal van opzichten zijn tijd ver vooruit. Het ondersteunde een kleurenpalet van 4096 kleuren en kon in 4-kanaals stereo (2 kanalen per stereo-kanaal) in 8-bit formaat weergeven. Hierdoor was het in tal van opzichten de eerste echte multimediacomputer voor thuisgebruik. Lang voor Windows beschikte Amiga ook over een grafische interface met elkaar overlappende vensters. Een systeem dat werd geïntroduceerd door Apple. Het besturingssysteem AmigaOS ondersteunde eveneens multitasking, shared libraries en het gebruik van de rechtermuisknop. Het was destijds al mogelijk om meerdere programma’s tegelijk te laten draaien.
wikipedia Comodore Amiga computer

Windows 1.0 (Os) Windows 1.0 De allereerste Windows versie kwam uit in 1985 en heette Windows 1.0 en woog totaal 1 mb. Op de verpakking van Windows 1.0 stond dat het in 256 KB geheugen moest kunnen draaien, maar een recensent van de New York Times schreef: Het draaien van Windows in 512 KB is vergelijkbaar met het schenken van stroop op de Zuidpool. Deze eerste versie van Microsoft Windows was geen groot succes. Het was meer een grafische uitbreiding van MS-DOS en bovendien konden de vensters elkaar niet overlappen, omdat dit principe door Apple gepatenteerd was.
wikipedia Windows 1.0 (Os)

MT-Telcom (Modem) MT-Telcom modem In 1985 werkte ik voor Micro Technology als embedded software ontwikkelaar en (mede) hardware ontwerper en we waren toen al bekend om onze MSX Modems. De gangbare standaard was in die tijd nog V23 (1200/75 baud) en V21 (300/300 baud). Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen.
1986MSX 2 computer MSX 2 In 1986 werd er door de MSX computer producenten een meer geavanceerde MSX2-computer uitgebracht, die in eerste instantie concurreerde met de Atari ST serie en later met de Commodore Amiga. Helaas voor de MSX2 waren er al meerdere 16-bits computers. De MSX2 standaard, hoe geavanceerd ook, was nog gebaseerd op een 8-bits architectuur en kon zich niet meten met de veel snellere, modernere en met grotere geheugens uitgeruste 16-bits Atari’s en Commodore’s. Wel een voordeel was dat diskettes aangemaakt met dit MSX-DOS-besturingssysteem door MS-DOS machines gelezen kon worden en dat er aangepaste CP/M-programma’s op gebruikt konden worden.
wikipedia MSX 2 computer
1987Windows 2.0 (Os) Windows 2.0 Windows 2.0 kwam uit in 1987 en het was een verbeterde versie van Windows 1.0 en leek daar dan ook veel op. In 1988 werden er twee varianten uitgebracht: Windows 2.1/286 en Windows 2.1/386. Deze gebruikten de mogelijkheden van de Intel 80286 en de Intel 80386 chips, zoals de protected mode. Een belangrijke verandering t.o.v. Windows 1.0 was dat vensters elkaar nu ook konden overlappen.
wikipedia Windows 2.0 (Os)

PS/2 computer PS/2 IBM introduceert de Personal System/2 (PS/2) systemen, het PS/2 Model 30 heeft een 8-MHz 8086 aan boord. De modellen 50 en 60 een 10 MHz 80286 en model 80 een 20 MHz 80386. Model 50 heeft een nieuw soort videokaart met VGA. Hierdoor is het mogelijk om 256 kleuren tegelijkertijd te tonen met een resolutie van 320×200 en 16 kleuren bij 640 x 480.
wikipedia PS/2 computer

Motorola 68030 (Processor) 68030 Processor Motorola 68030 is een microprocessor uit de 32 bits in Motorola’ s 68000 familie. Vrijgegeven in 1987, waren 68030 de opvolger aan Motorola 68020, en werden gevolgd door Motorola 68040. De 68030 werd gebruikt in vele modellen van Apple Macintosh II en de Amiga van de Commodore, Sun 3/80 desktopwerkstation, Atari TT en diverse unix werkstations en laserprinters.
wikipedia Motorola 68030 (Processor)

MT-Plusmodem (Modem) MT-plusmodem modem In 1987 werkte ik nog steeds voor Micro Technology als embedded software ontwikkelaar en (mede) hardware ontwerper en we brachten het goedkope (maar later ook redelijk verfoeide) MT-Plusmodem uit dat meegeleverd werd door de Postbank voor hun Girotel telebankier pakket. Er waren in deze tijd ook al V22 modems op de markt die (1200/1200 baud full duplex waren) maar wij gebruikten nog steeds onze oude modem technologie en dat was nog steeds V23 (1200/75 baud) en V21 (300/300 baud). Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen.
1988Laser 128 computer Laser 128 Apple II kloon In 1988 komt het bedrijf VTech uit Hong Kong met een Apple II kloon op de markt. Daarvoor maakte VTech elektronische spellen en educatief speelgoed. In plaats van simpelweg het basic input output system (BIOS) van de Apple II te kopiëren, hebben ze het systeem compleet reverse-engineered en verkochten het voor een veel lagere prijs dan de vergelijkbare Apple II. Hoewel Apple een rechtszaak aanspande om de Laser 128 van de markt te halen, was dat niet succesvol en bleef de Laser een van de weinige Apple “klonen” die te koop waren.
wikipedia Laser 128

MT1200 (Modem) MT1200 modem In 1988 ontwikkelde ik voor Micro Technology het MT1200 modem, ons eerste modem dat als PC insteekkaart V22 ondersteunde en dus ook 1200/1200 full duplex communicatie ondersteunde. Daarnaast ondersteunde het modem ook nog de oude V23 (1200/75) en V21 (300/300) standaard. Al onze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. Modems werden in deze periode veel gebruikt om zogenaamde BBS systemen te benaderen waar berichten en veel software uitgewisseld werd.
1989Intel 486 (Processor) Intel 486n In 1989 introduceerde Intel de 80486-processor als optimalisatie van de 80386-processor. De 80486-processor kon instructies in minder klokpulsen uitvoeren en was bij dezelfde kloksnelheid bijna twee maal sneller dan de 80386 en was er een intern cachegeheugen toegevoegd. Aan de instructieset en functionaliteit was echter nauwelijks iets veranderd. De 80486DX2/66 was de eerste processor waarbij de kloksnelheid van bus en processor gescheiden waren. De 80486DX2/66 draaide intern op 66 MHz, het moederbord draaide op 33 MHz. Ook was de 80486 de eerste processor die koeling nodig had om goed te kunnen werken.
wikipedia Intel 486

MT Quintet (Modem) MT-Quintet modem In 1989 ontwikkelde ik voor Micro Technology het MT Quintet V22Bis modem, ons eerste modem dat als PC insteekkaart V22Bis ondersteunde en dus ook 2400/2400 full duplex communicatie ondersteunde. Daarnaast ondersteunde het modem ook nog de oude V22 (1200/1200), V23 (1200/75) en V21 (300/300) standaard. Al onze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. Modems werden in deze periode veel gebruikt om zogenaamde BBS systemen te benaderen waar berichten en veel software uitgewisseld werd. De snelheid van de modems verdubbelde bijna elk half jaar en elk bedrijf probeerde de eerste te zijn, ook wij.
1990Windows 3.0 (Os) Windows 3.0 Windows 3.0 kwam uit in 1990, met Windows 3.0 werd een grote stap gezet en kreeg het ook een iets ander uiterlijk wat vooral ook grafisch beter was doordat het VGA kaarten ondersteunde. Er werden van versie 3.0 meer dan 10 miljoen exemplaren verkocht. Windows was op dat moment het best verkochte besturingssysteem. In Windows 3.1 kwam vervolgens de tekstverwerker erbij in de vorm van Word waardoor het nog populairder werd plus een aantal games waaronder patience en ondersteuning voor Internet.
wikipedia Windows 3.0 (Os)
1991Linux (Os) Linux besturingsysteem De Finse student Linus Torvalds kondigde in 1991 op Usenet aan dat hij een nieuw, op Minix gelijkend, besturingssysteem heeft gemaakt. “Het heeft al eens gewerkt…” zegt hij gekscherend, hij noemt het besturingssysteem Linux. In 1992 verscgijnt versie 0.12 van Linux onder de GNU general public license. GNU is een verzameling software zonder goed werkende kernel en Torvalds heeft een goed werkende kernel. Het resultaat is GNU / Linux, nog steeds het hart van iedere distributie.
wikipedia Linux (Os)

MT3242 (Modem) MT3242 modem In 1991 ontwikkelde ik voor Micro Technology het MT3242 en het MT2242 modems, deze twee modems ondersteunden ook MMP5 en V42Bis datacompressie waardoor er snelheden tot 19200 baud mogelijk waren over een standaard telefoonverbinding. De MT2242 was goedkoper en ondersteunde alleen V22Bis (2400/2400 baud) als basissnelheid, de MT3242 ondersteunde V32 (9600/9600 baud) als basissnelheid. Op deze modems zat een 80186 processor en alle interne software voor de modem en de compressie protocollen waren geschreven in de taal ‘C’. Ook deze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was maar ook met een FAX programma dat door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. In deze tijd werden modems naast voor BBS systemen ook al voor het Internet (Usenet) gebruikt.
1992Wolfenstein 3D (Spel) Wolfenstein 3D Het spel dat voor de doorbraak van het bedrijf ID zorgde was Wolfenstein 3D, een first person shooter met vloeiende 3D-beelden die toen ongekend waren in computerspellen, en met een gewelddadige game-play die veel spelers wist te boeien. Nadat ze in feite een volledig genre hadden gecreëerd door dit spel. Wolfenstein 3D is één van de eerste First Person Shooters ooit en daarom zeer revolutionair en belangrijk in de gamegeschiedenis. Je speelt het spel als B.J. Blazkowicz en zult verschillende verdiepingen moeten doorlopen om uiteindelijk op verdieping negen te komen waar je de eindbaas moet verslaan. Behalve de negen reguliere levels heb je ook nog een bonus level, welke dan logischerwijs op de tiende verdieping ligt. Deze hoef je echter niet verplicht te halen om het spel uit te spelen.
wikipedia Wolfenstein 3D (Spel)
1993Doom (Spel) Doom spel Doom is een first-person shooter computerspel uit 1993, ontwikkeld door id Software. Het spel is vooral bekend als een van de pioniers op het gebied van 3D-graphics voor computerspellen en multiplayerspellen via netwerken. Het spel kwam oorspronkelijk uit voor de Personal Computer, maar is in de loop der jaren overgezet naar meerdere andere spelconsoles. De opbouw van de levels in Doom is redelijk standaard, de speler baant zich een weg door eindeloze gangen en levensgevaarlijke hallen. Grauw beton, poelen vol radioactieve blubber en levensgevaarlijke plateau’s geven perfect de troosteloze en sombere sfeer weer waarin hij zich begeeft. Een wereld waar pure agressie en snelheid zijn enige kansen op overleven zijn.
wikipedia Doom (Spel)

Pentium (Processor) Pentium processor De introductie van de Pentium processor in 1993 was technisch een flinke stap voor Intel. Logischerwijs zou de processor het nummer 80586 of i586 gekregen hebben, maar de naam werd veranderd in Pentium (het Griekse telwoord voor vijf), omdat getallen niet als merk geregistreerd konden worden. Net als bij de 80486 was er aan de instructieset van de processor nagenoeg niets veranderd. Het accent bij de Pentium lag op snelheid. De grote vernieuwing van de Pentium was dat hij superscalair was, wat betekent dat hij meerdere instructies tegelijk kan uitvoeren. Logica in de processor bepaalde of twee opeenvolgende instructies van elkaar afhingen; zo nee, dan werden ze naar de twee verschillende uitvoeringseenheden in de processor doorgestuurd.
wikipedia Pentium (Processor)

Mosaic en Netscape Mosaic browser In februari 1993 lanceerde NCSA de eerste webbrowser voor het World Wide Web met een volledig grafische interface, genaamd Mosaic. Daarmee legde dit bedrijf de basis voor bijna alle huidige browsers, deze grafische webbrowser wist in korte tijd een revolutie te ontketenen. Eén van de programmeurs van Mosaic was Marc Andreessen, deze ging na afloop werken voor het zojuist opgerichte bedrijf Mosaic Communications, dat later vanwege onenigheid over de naam werd omgedoopt tot Netscape.
wikipedia Mosaic browser

MTD Dolphin (Modem) MT3242 modem In 1993 ontwikkelde ik voor Micro Technology Datacom (MTD) de opvolger van het bedrijf Micro Technology het Dolphin modem, dit modem ondersteunden V32Bis dat (19200/19200 baud) als basissnelheid op een standaard telefoonlijn ondersteunde waardoor samen met MMP5 en V42Bis datacompressie er snelheden tot 57600 baud mogelijk waren. Ook ondersteunde het modem FAX en waren we een van de eersten die Voice over Data geïmplementeerd hadden waardoor er naast data ook tegelijkertijd spraak over dezelfde lijn kon gaan. Dit modem had een nieuwe Rockwell modem chipset en data basis besturing processor was weer een 80186 processor en alle interne software voor de modem en de compressie protocollen waren geschreven in de taal ‘C’. Ook deze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was maar ook met een FAX programma en MT-Voice dat door mij ontwikkeld was. Daarnaast leverden we ook MT-Edit en MT-Archive en nog een paar andere programma’s mee met onze modems. In deze tijd werden modems nog steeds voor BBS systemen gebruikt maar ook steeds meer voor Internet.
1994Iomega Zip Drive Iomega Zip Drive De Iomega Zip drive was een verwisselbare floppy schijf die wel iets weg had van de 3,5 inch diskette. De Zip kon echter 100 MB aan gegevens opslaan op 1 disk. Later werd de opslagcapaciteit nog 250 MB en zelfs 750 MB. Een groot probleem van de Zip was dat er een fout in het ontwerp zat, sommige exemplaren raakten defect door de Click of Death, waardoor de zipschijf niet langer bruikbaar was. Tegenwoordig levert Iomega ook standaard opneem- en afspeelapparatuur, zoals CD- en DVD-drives.
wikipedia Iomega Zip Drive
1995Internet explorer 1.0 Internet explorer 1.0 De NCSA die in eerste instantie de browser mosaic gemaakt had, gaf de commerciële exploitatiein 1994 in handen van Spyglass. Deze tekende een deal met Microsoft, dat het programma vervolgens verbouwde tot Internet Explorer 1.0 en in augustus 1995 uitbracht. Internet Explorer 1.0 is maar zeer kort in omloop is geweest, in december 1995 werd Internet Explorer (versie 2.0) voor het eerst meegeleverd met Windows. Tegen die tijd begon Microsoft in te zien dat het het World Wide Web had onderschat.
wikipedia Internet explorer 1.0

Java (programmeertaal) Java programmeertaal Java ontstond begin jaren 90 in een klein dochterbedrijf van Sun Microsystems onder leiding van James Gosling. De werknaam Oak werd gekozen toen men naar buiten keek bij het zoeken naar een naam en daar een eik (Engels: Oak) zag staan. Er bleek echter al een programmeertaal met die naam te bestaan, dus kozen ze “Java”, een verwijzing naar koffie. Aanvankelijk wilde men Java promoten als programmeertaal voor allerhande elektronische apparaten, zoals televisies, afstandsbedieningen en koelkasten, maar later bedacht Sun dat ze hun (toen nog steeds niet al te populaire) taal goed konden gebruiken in een webomgeving. Op 13 november 2006 gaf Sun delen van Java vrij als opensourcesoftware, onder de GNU General Public License (GPL). Op 8 mei 2007 gaf Sun de laatste delen van Java vrij onder de GPL, op enkele kleine gedeeltes na waar Sun niet het auteursrecht op heeft. Java is nu, na de overname van Sun door Oracle nog steeds eigendom van Oracle.
wikipedia Java (programmeertaal)
1996Windows NT (Os) Windows nt In 1996 werd Windows NT op de markt gebracht, waarvan het uiterlijk vrijwel hetzelfde was als die van Windows 95. In de jaren die volgden werden geen nieuwe versies van Windows NT uitgebracht, maar wel een aantal updates, de zogeheten ‘Service Packs’. Deze versie wordt ook wel beschouwd als de eerste echt stabiele Windows. De man doe NT ontwikkeld heeft was afkomstig van het team dat voor Digital Equipment Corporation aan hun VMS besturingssysteem had gewerkt. Sommige aspecten van VMS zijn dan ook in Windows NT nog enigszins te herkennen. Leuk detail is dat de afkorting WNT per letter net één verder in het alfabet stond dan VMS.
wikipedia Windows NT (Os)

Deep blue (Schaak) Deep blue Op 11 mei heeft de computer de mens verslagen, dat gebeurde in Amerika waar wereldkampioen schaken Garry Kasparov schaakte tegen de computer Deep Blue en de computer won. Het jaar daarvoor won Kasparov nog tegen de computer, maar ondertussen werd die sterker en krachtiger. Kasparov was erg onder de indruk van zijn verlies.
wikipedia Deep blue (Schaak)

MTDS GSM modem MTDS GSM Modem Nadat de modem markt ingestort was door de one dollar modem chip van Rockwell ging ook MTD als grootste modem fabrikant in Nederland helaas failliet. We maakten een doorstart met MTDS en ontwikkelden software voor GSM telefoons en we ontwikkelden de SMS techniek (waar onze toenmalige directeur miljonair mee is geworden), ik ontwikkelde een complete GSM datacommunicatie stack in C++ en we ontwikkelden een PCMCIA kaart voor laptops om door middel van een GSM telefoon een (9600/9600 bps) dataverbinding op te kunnen bouwen. Dit was het begin van Data over het GSM netwerkt. Nadat ik nog meegewerkt heb aan Symbian bij Psion in Londen voor het GSM protocolstack gedeelte, ben ik gestopt met embedded programmeren en overgestapt naar Internet en Applicatie programmeren.
1997 
1998Windows 98 (Os) Windows 98 In 1998 werd Windows 98 (versie 4.10.1998, codenaam Memphis) uitgebracht door Microsoft voor microcomputers, een grafisch besturingssysteem dat intern nog steeds gebaseerd was op MS-DOS 7.1. Windows 98 was een geactualiseerde versie van Windows 95 maar het had een geïntegreerde AGP-ondersteuning en functionele USB-drivers. Ook bevat het ondersteuning voor het gebruik van meerdere beeldschermen. De integratie van Internet Explorer in Windows 98 was een omstreden zet van Microsoft en aanleiding voor de Amerikaanse justitie een jaren slepende rechtszaak te beginnen.
wikipedia Windows 98 (Os)

Apple Imac computer Imac De Apple iMac is een desktop computer van Apple, waarbij de ‘i’ van iMac staat voor internet. De computer maakt een groot deel uit van Apples consumentenaanbod sinds de introductie in 1998. De iMac heeft sindsdien vier duidelijk onderscheidbare gedaantes gehad, waarbij altijd de integratie van beeldscherm en computer centraal staat. De iMac computer bezit een relatief grote bekendheid in populaire cultuur dankzij zijn herkenbare uiterlijk en Apples succesvolle marketing. De iMac en andere Macintosh computers zijn vaak te zien in films, reclame en TV-series.
wikipedia Apple Imac computer

Celeron (Processor) Celeron processor Begin 1998 had Intel het moeilijk om de Pentium II chips te verkopen omdat ze vrij duur waren en veel klanten dus voor de goedkopere AMD K6-233 processor kozen. Daarom maakte Intel een nieuwe CPU met de naam Celeron die vergelijkbaar was met de Pentium II maar zonder L2-cache. Tegenwoordig zijn Celeron-processors nog steeds beschikbaar als dual-core en werken ze met hogere snelheden en met cache die rechtstreeks in de kern-CPU is ingebouwd.
wikipedia Celeron (Processor)
1999USB Flash disk USB Flash disk In 1999 bracht het bedrijf M-Systems (een Israëlische producent van flash geheugen opslag producten) de eerste USB-flashdrive op de markt. Hert bedrijf werd in 2006 overgenomen door hun eerdere concurrent SanDisk. M-System was vooral bekend door het ontwikkelen en patenteren van de eerste flashdrive in 1995 die op de markt gebracht werden als DiskOnChip.
wikipedia M0System flash disk
2000C# (programmeertaal) C# programmeertaal C# (uitgesproken als “C sharp”) is een programmeertaal ontwikkeld door Microsoft als reactie op Sun’s Java en deels teruggrijpend op C++. Volgens sommigen is de taal beter dan Java, volgens anderen juist weer niet. Een van de verwijten is dat het noch geheel Java is, noch geheel C++ en dus een eigen standaard probeert te zetten terwijl het geen originele ontwikkeling is. Met dit soort taktieken probeert Microsoft wel vaker markten naar zijn hand te zetten. Dat de taal speciaal voor .NET (dotnet) ontworpen zou zijn zoals sommigen beweren is niet juist. De ontwerper van de taal C# is niet de eerste de beste, Anders Hejlsberg was de man achter het ontwerp van Turbo Pascal, Delphi en Visual J++. De taal is zeer uitgebreid en consequent in datatypes en ontwerp.
wikipedia C# (programmeertaal)
Posted on Leave a comment

Arduino Uno MC14500 shield

Arduino MC14500 shield

I have made several projects with the MC14500B 1-bit processor and after reading a lot of datasheets and looking at several designs I decided to design my own board. I experimented on my big breadboard unit and got a lot of things working. Especially the glue logic and the timing was something to experiment with. But I got most of it done and I ended up with a very detailed schematic and then I first build a PLC14500 board and developed a programming IDE. I was getting a little tired and to test the IDE I programmed the hardware of my design into an Arduino Uno and I created a little shield with the MC14500B processor, just like the retroshields do.

Virtual hardware

The (virtual) hardware contains a 12 bit counter, a 16 bit eprom, a one level return stack, JMP support and a 2048 bit sram. The JMP and the RTN are implemented as this: when a JMP instruction is executed the JMP flag pin becomes high for the full cycle, we want to latch the upper address bits but these will change during the JMP pulse because the new address will be om the eeprom, To prevent this we latch at the first clock pulse of the cycle only.  We also store the eeprom input address bits into the return latch at the same time. So a JMP instruction will fille the return latch (1 word stack) and preload the counters with the new address. Now when the RTN instruction is executed the RTN pin will bee high for the whole cycle. This will output enable the return latch and preset the address of the last JMP into the program counter. The MC14500B executes a skip instruction after the RTN so the next instruction executed after the RTN will be the next instruction after the last JMP. Voila, jump and return work in a simple way.

The I/O is simple any write from address 0..7 will go to the output latch and any read from address 0..7 will come from the input latch. Any read / write from address 8 and up will access the sram, we use only bit 0 so it will be a one bit x 2048 sram. But we can define f.i. location 8..15 as (8 bit)register A and location 16..23 as (8 bit) register B to do some serious processing. To make conditional executing of code easier I connected the RR output pin to the last input pin (0x07) so that it can be read back into the processor. So effective there are 7 output bits.

How I tried to connect a terminal is simple, I took the spare FLAGO output as a input strobe bit signaling the input to put a character on the seven input pins on the rising edge of strobe. For the output I decided that the first 7 bits would be the character and the last bit (8) would be the strobe to the output, meaning there is a valid character at the rising edge of bit 8 (output strobe).  You can define FLAGF for any purpose, not it only is high for one cycle when executing a NOPF instruction.  Al in all this is almost a real computer. To avoid shorting a on an Arduino shield, (D pin can be input as well as output) I added a 200 ohm resistor in the Data line.

A nice and cheap board to experiment with this small one bit microprocessor. I used an ordinary Arduino Uno of the shelf, I used a predefined empty shield board (because its easier) and a socket and some wires. The processor is still available, most of the time I will have them in my webshop as well. You can order them also in China, but I (and a college) found out that cheap IC’s from China sometimes are just fake or contain faulty chips that do not meet the specs. If you look at the production date, I prefer the older ones from before 2000. But the speed at this board will not exceed 1500 Hz so most chips will actually work. I also added a cheap LED/KEY board to the shield, it uses only 3 pins of the Arduino and can be accessed serially, there is good working library for it: TM1638plus that will support three kinds of LED/KEY boards. I use this board to simulate the input buttons, the output leds and to display messages on the seven segment displays.

To program this Arduino with the MC14500B shield, you can use my IDE program, it contains an assembler, disassembler, emulator, single step debugger and ISP uploader, just connect the Arduino Uno to a serial port of the PC and it will work. The IDE supports two boards right now, the PLC14500 board and my virtual board on the Arduino, When selecting one of the boards all the predefined names (symbol table) will be loaded so the assembler and disassembler can translate to human readable address locations. You can debug the code in the IDE and then upload it to the Arduino. The Arduino will also write the code the its internal Eeprom and load this at reset or startup. It is all in the Arduino sourcecode, change it to whatever you want. You can download the zip file that contains the Arduino code, build instruction, simple virtual hardware design, and some build pictures. You can download the IDE on my other website, just google for MC14500 IDE. Have fun….

Download the zip file with sourcode and diagrams here: https://www.heinpragt.com/download1/ArduinoMC14500_101.zip