Commodore 128 (NTSC)
Commodore 128 (NTSC)

snap
Images



  
Size

-
Emulation info
   
Overall emulation:  good   
Color emulation:  good  
Sound emulation:  good  
Graphics emulation:  good  
Savestates:  supported   

Tech info
 Base hardware: (available in all slot configurations)
Chips
Z80 ("u10")cpu 4090908 Hz
M8502 ("u6")cpu 1022727 Hz
MOS8564 ("u21")cpu 8181817 Hz
MOS6526 ("u1")cpu 1022727 Hz
MOS6526 ("u4")cpu 1022727 Hz
Speaker ("mono")audio
MOS6581 ("u5")audio 1022727 Hz
DAC ("dac")audio
Screens
Screen ("screen80")raster horizontal 640 x 200 @ 60.000000
Screen ("screen")raster horizontal 418 x 235 @ 59.826087
Media devices
cartridge ("exp") cartridge1 cart1 80, a0, e0, crt
quickload ("quickload") quickload quik p00, prg
cartridge ("from") cartridge2 cart2 bin, rom
BIOS options
r2 Revision 2
r4 Revision 4
jiffydos JiffyDOS v6.01
quikslvr QuickSilver 128
RAM options
128K 131072
Software lists
vic10original NTSC
c64_cartoriginal NTSC
c128_cartoriginal NTSC
c64_cassoriginal NTSC
c64_floporiginal NTSC
c128_floporiginal NTSC
c128_romoriginal NTSC

 Optional hardware: (available with specific slot configurations)

 Configure the slot options for c128:
 Slot Value
 exp 
 iec10 
 iec11 
 iec4 
 iec8 
 iec8:c1571:u6:0 
 iec9 
 joy1 
 joy2 
 tape 
 user 
 


Show detailed info about 'DipSwitches' of this system
DipSwitches

NameValue
Device Address 8
 9
 10
 11


Show detailed info about 'Slot Options' of this system
Slot options

NameValueCompatible device(s)
exp 16kc64_16kb
 cpmc64_cpm
 dqbbc64_dqbb
 easyflashc64_easyflash
 georamc64_georam
 ide64c64_ide64
 midimapc64_midimap
 midinsc64_midins
 midippc64_midipp
 midiscic64_midisci
 midisielc64_midisiel
 music64c64_music64
 neoramc64_neoram
 reu1700c64_1700reu
 reu1750c64_1750reu
 reu1764c64_1764reu
 sfxsec64_sfxse
 supercpuc64_supercpu
 swiftlinkc64_swiftlink
 turbo232c64_turbo232
iec10 c1540c1540
 c1541c1541
 c1541cc1541c
 c1541ddc1541dd
 c1541iic1541ii
 c1541pdc1541pd
 c1541pdcc1541pdc
 c1570c1570
 c1571c1571
 c1581c1581
 cmdhdcmdhd
 csd1csd1
 diag264diag264_serial_loopback
 fd2000fd2000
 fd4000fd4000
 fsd1fsd1
 fsd2fsd2
 indusgtindusgt
 interpodinterpod
 minichiefminichif
 nl10c64_nl10
 serialboxserbox
iec11 c1540c1540
 c1541c1541
 c1541cc1541c
 c1541ddc1541dd
 c1541iic1541ii
 c1541pdc1541pd
 c1541pdcc1541pdc
 c1570c1570
 c1571c1571
 c1581c1581
 cmdhdcmdhd
 csd1csd1
 diag264diag264_serial_loopback
 fd2000fd2000
 fd4000fd4000
 fsd1fsd1
 fsd2fsd2
 indusgtindusgt
 interpodinterpod
 minichiefminichif
 nl10c64_nl10
 serialboxserbox
iec4 c1540c1540
 c1541c1541
 c1541cc1541c
 c1541ddc1541dd
 c1541iic1541ii
 c1541pdc1541pd
 c1541pdcc1541pdc
 c1570c1570
 c1571c1571
 c1581c1581
 cmdhdcmdhd
 csd1csd1
 diag264diag264_serial_loopback
 fd2000fd2000
 fd4000fd4000
 fsd1fsd1
 fsd2fsd2
 indusgtindusgt
 interpodinterpod
 minichiefminichif
 nl10c64_nl10
 serialboxserbox
iec8 c1540c1540
 c1541c1541
 c1541cc1541c
 c1541ddc1541dd
 c1541iic1541ii
 c1541pdc1541pd
 c1541pdcc1541pdc
 c1570c1570
 c1571 c1571
 c1581c1581
 cmdhdcmdhd
 csd1csd1
 diag264diag264_serial_loopback
 fd2000fd2000
 fd4000fd4000
 fsd1fsd1
 fsd2fsd2
 indusgtindusgt
 interpodinterpod
 minichiefminichif
 nl10c64_nl10
 serialboxserbox
iec8:c1571:u6:0 525qd floppy_525_qd
iec9 c1540c1540
 c1541c1541
 c1541cc1541c
 c1541ddc1541dd
 c1541iic1541ii
 c1541pdc1541pd
 c1541pdcc1541pdc
 c1570c1570
 c1571c1571
 c1581c1581
 cmdhdcmdhd
 csd1csd1
 diag264diag264_serial_loopback
 fd2000fd2000
 fd4000fd4000
 fsd1fsd1
 fsd2fsd2
 indusgtindusgt
 interpodinterpod
 minichiefminichif
 nl10c64_nl10
 serialboxserbox
joy1 joyvcs_joystick
 joybstrvcs_joystick_booster
 keypadvcs_keypad
 lpvcs_lightpen
 padvcs_paddles
 wheelvcs_wheel
joy2 joy vcs_joystick
 joybstrvcs_joystick_booster
 keypadvcs_keypad
 lpvcs_lightpen
 padvcs_paddles
 wheelvcs_wheel
tape c1530 c1530
 c2nc2n
user 4cgac64_4cga
 4dxhc64_4dxh
 4ksac64_4ksa
 4tbac64_4tba
 bn1541c64_bn1541
 geocablec64_geocable
 rs232vic1011

Romset info
ROM NameSizeCRC32SHA1Dump StateBIOS option
8721r3.u113208 154db186ccadcdb1db3b62c51dc4ce60fe6f96831586d297baddump
390059-01.u188192 6aaaafe629ed066d513f2d5c09ff26d9166ba23c2afb2b3fgood
251913-01.u3216384 0010ec31765372a0e16cbb0adf23a07b80f6b682b39fbf88good
jiffydos c128.u3516384 4b7964de7d1898f32beae4b2ae610d469ce578a588efaa7cgoodjiffydos
318019-04.u3416384 6e2c91a7c4fb4a714e48a7bf6c28659de0302183a0e0d6c0goodjiffydos
318018-04.u3316384 9f9c355bd53a7884404f7d18ebd60dd3080c8f8d71067441goodjiffydos
318018-04.u3316384 9f9c355bd53a7884404f7d18ebd60dd3080c8f8d71067441goodquikslvr
318019-04.u3416384 6e2c91a7c4fb4a714e48a7bf6c28659de0302183a0e0d6c0goodquikslvr
quicksilver128.u3516384 c2e74338916cdcc62eb631073aa7f096815dcf33b3229ca8goodquikslvr
318020-03.u3516384 1e94bb02e80ffbafae068cc0e42698ec5c5c39af46ac612agoodr2
318019-02.u3416384 d551fce04d223883e866645328f86a904b221464682edc4fgoodr2
318018-02.u3316384 2ee6e2fa60e1491e1d5782e3cf109f518eb73427609badc6goodr2
318020-05.u3516384 ba456b8eceb6e1a1bf7e08eb9cbc651afa29e26adccf38abgoodr4
318019-04.u3416384 6e2c91a7c4fb4a714e48a7bf6c28659de0302183a0e0d6c0goodr4
318018-04.u3316384 9f9c355bd53a7884404f7d18ebd60dd3080c8f8d71067441goodr4
Sysinfo



Features


* CPU: 8502 1/2 MHz, 1.022 MHz (for C64 mode)+ Zilog Z80 ~2.5 MHz
* Co-Processor: SID (sound), VDC & VIC-II (video)
* RAM: 128 KB
* VRAM: 16 KB
* ROM: 48 KB
* Text Modes: 40 or 80 chars. x 25 lines
* Graphics Modes: several, most used : 160x200 / 320 x 200 / 640 x 200
* Colors: 16
* Sound: 3 voices / 6 octaves
* I/O Ports: RGB, Video Composite, Joystick (2), cartridge, Tape, User Port (RS232 compatible), TV, serial
* Keyboard: Complete full-stroke keyboard with separated numeric keypad
* Built In Media: 1571 disk-drive [C128D and C128D-CR only]
* OS: C128 mode, C64 mode or CP/M
* Built In Language: Basic
* hardware emulation mode for c64


Usage


MESS emulates the following computers

* c128 [Commodore 128 (NTSC)]
* c128ger [Commodore 128 (PAL, German)]
* c128fra [Commodore 128 (PAL, French)]
* c128ita [Commodore 128 (PAL, Italian)]
* c128swe [Commodore 128 (PAL, Swedish)]
* c128nor [Commodore 128 (PAL, Norwegian)]
* c128d [Commodore 128D (NTSC)]
* c128dita [Commodore 128D (PAL, Italian)]

For each c128 system, MESS supports
- a datasette, using "cassette" (cass) device, for tapes in .tap and .wav format
- two cart slots, "cartridge1" (cart1) and "cartridge2" (cart2), for cart dumps in .crt and .80 format
- two floppy drives (1541), "floppydisk1" (flop1) and "floppydisk2" (flop2), for disk images in .d64 format.

For c128d systems, MESS supports a floppy drive (1571), "floppydisk" (flop), for disk images in .d64 format.

Also notice that a "quickload" (quik) feature is available for .p00 and .prg files.

Cassettes

Cassette images can have the .wav or .tap extensions. To run a .tap or a .wav image you have to launch

mess c128 -cass "C:\pathtogame\gamename.tap"

Once you're at the BASIC prompt you have various options:

* to load a BASIC program from the cassette

LOAD"filename"

* to load the first program from the cassette

LOAD

The message "Press play on tape" will appear, and you will have to enter the MESS internal UI to start the tape (press Tab and choose "Tape Control", then press "Play"). Once the program is loaded, a "READY" message will be prompted and you can run your program by simply typing

RUN

or the appropriate SYS call.

Also, MESS supports saving to tape. Therefore, you can write your own BASIC programs and save them using the command

SAVE"prog_name"

The message "Press play & record on tape" will appear, and you will have to enter the MESS internal UI to start recording the tape (press Tab and choose "Tape Control", then press "Record").

Floppy Disks

MESS currently //simulates// only loading from drive 8 and 9 in the C128 emulation. These drives correspond to the devices "floppydisk1" (flop1) and "floppydisk2" (flop2) emulated by MESS. To run a .d64 image you have to launch

mess c128 -flop1 "C:\pathtogame\gamename.d64"

Once you're at the BASIC prompt you have various options:

* to list the content of the floppy

LOAD"$",8
LIST

* to load a BASIC program from the disk

LOAD"filename",8

* to load a machine language program at its address

LOAD"filename",8,1

* to load the first program from the disk (useful if you're not sure of which is the correct one to load)

LOAD"*",8

Once the program is loaded, a "READY" message will be prompted and you can run your program by simply typing

RUN

or the appropriate SYS call. If you launched the game on -flop2, you will need to use drive 9 in place of drive 8 in the commands above.

Note that several programs rely on more features not currently emulated (such as loading other file types, writing...) Some games also rely on starting programs in the floppy drive's processor (and therefore CPU level emulation of the 1541 is needed).

Cartridges

Cartridges may have extension .crt and .80. Files with boot-sign in it are recognized as ROMs. Some cartridges may require more than one image: if you have any of these, please contact us because we would like to fix support for them.

* .80 files are loaded to 0x8000.
* .crt ROMs are loaded to the addresses specified in crt file.

To use "cartridge1" (cart1) or "cartridge2" (cart2) slots in MESS, simply launch

mess c128 -cart1 "C:\pathtogame\gamename.crt"

and the game will start (we support two cartridge slot for images which require multiple files to be loaded at different locations, but the support is only partial because we don't have access to any of these images).
Also, currently only few of the available types of .crt files are supported.

Note that .prg files are often cartridge images as well, but in MESS they are assigned to the quickloader (see below).

Quickloader

A quickloader is available via command line and it supports program image files with extensions .prg and .p00. The quickloader loads the program into memory and sets the program end pointer. It shall work with most programs. To use the "quickload" (quik) device in MESS: launch

mess c128 -quik "C:\pathtogame\gamename.prg"

and simply type the command

RUN

to start the program.

Miscellaneous

Gameport A supports paddles 1 & 2, joystick 1, mouse (both the 1350 and 1351), lightpen (implementation not finished). Gameport B supports paddles 3 & 4, joystick 2, mouse (both the 1350 and 1351).

Many games require the user to plug the Joystick controller in the second Joystick port. In MESS this can be done, either remapping the P2 Joystick inputs, or simply pressing F1 (in partial emulation mode) to swap the Joystick ports and use your P1 Joystick as if it was connected to the second port.

Keyboard

These systems require full keyboard emulation to work correctly. At startup, full keyboard emulation mode is enabled by default. Whilst in full keyboard emulation mode, some key associated functionality may be disabled (like the Esc key for EXIT). The keyboard emulation mode is toggled using the Scrl Lock key (by default).

Remember also the following functions:
* S-C= switches between upper-only and normal character set (when wrong characters on screen this can help),
* Run (S-Stop) loads program from tape and starts it,
* Esc-x switches between two display systems.

Additional keys (to C64) are not useable in C64mode.

Original Keyboard: QWERTY Complete full-stroke keyboard with separated numeric keypad

CAPS LINE 40/80 NO
ESC TAB ALT LOCK HELP FEED DISPLAY SCROLL UP DOWN LEFT RIGHT F1 F3 F5 F7

CLR INST
<- 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - £ HOME DEL 7 8 9 +


CONTROL Q W E R T Y U I O P @ * UP RESTORE 4 5 6 -

RUN SHIFT E
STOP LOCK A S D F G H J K L :[ ;] = RETURN 1 2 3 n
t
CRSR CRSR e
C= SHIFT Z X C V B N M ,< .> /? SHIFT U/D L/R 0 . r


SPACEBAR

Notes: C= is a key with the Commodore logo, "UP" is an arrow pointing up, the "CRSR" keys at the bottom-right corner are used to move the cursor on screen (Up/Down and Left/Right resp.).

Color Codes

Combining C= and CTRL with number keys, you can change the font color. Below you find the complete list of available colors

* In 40-Column Format:

^ ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^
^ C= | orange | brown | light red | dark gray | middle gray | light green | light blue | light gray |
^ CTRL | black | white | red | cyan | purple | green | blue | yellow |

* In 80-Column Format:

^ ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^
^ C= | dark purple | brown | light red | dark cyan | middle gray | light green | light blue | light gray |
^ CTRL | black | white | dark red | light cyan | light purple | dark green | dark blue | light yellow |

Lightpen

It's emulated through Paddle 5 x-axis, Paddle 6 y-axis

C64 Mode

To enter in C64 Mode, hold down C= key while resetting or turning on. Then type

go64

at the C128 command mode

CPM Mode

To run in CPM Mode, cpm disk must be inserted in device 8. Then turn on computer or type

boot

at the C128 command mode

If you run into difficulty, be sure to start the emulation with the -log switch, and look into the error.log file that is created in your MESS directory.

ROM Dumping

* Dumping of the ROMs from the running machine: in the monitor program

s "drive:name",device,start,end
s "0:basic",8,f4000,fc000
s "0:editor",8,fc000,fd000
s "0:kernel",8,ee000,f0000
s "0:char128",8,ed000,ee000

* Z80 BIOS [missing, funet says there exists only 1 version!?]: I don't know, maybe there is a cpm utility allowing saving the memory area 0-0xfff of bank 0. (I don't want to develop (and can't test) this short complicated program)

* BASIC [only 1 version!?]: In C64 Mode, enter

poke43,0:poke44,160:poke45,0:poke46,192:save"0:basic64",8

* Kernel [only 1 version!?]: In C64 Mode, enter

for i=0 to 8191:poke 32*256+i, peek(224*256+i): next
poke43,0:poke44,32:poke45,0:poke46,64:save"0:kernel64",8

* C64 Charset [Swedish version or original C64 version]: in C128 Mode, enter

monitor
a 2000 sei
lda #33
sta 1
ldy #0
sty fa
sty fc
lda #c0
sta fd
lda #d0
sta fb
ldx #10
lda (fa),y
sta (fc),y
iny
bne 2015
inc fb
inc fd
dex
bne 2015
lda #37
sta 1
cli
rts
(additional enter to end assembler input)
x (to leave monitor)
go64 (answer with y)
sys 32*256
poke 43,0:poke44,192:poke45,0:poke46,208:save"0:char64",8

* C64 Charset [Swedish version or original C64 version]: in C64 Mode, load the program in the attachment and type

load"savechar64",8,1
sys 32*256
poke 43,0:poke44,192:poke45,0:poke46,208:save"0:char64",8

* C128D floppy disk bios: I think you have to download a program copying the bios to buffers. Then you could read this buffer into the computer, or write these buffers to disk. Transportation to your pc: 1571 writes to mfm encoded diskettes (in cpm mode only, or use
program). Maybe the IBM CPM-86 formats are like the standard DOS formats, but using dd may create images known by some other emulators. 1581 writes mfm encoded: can one of these drives to a format know by linux? Some years ago I build a simple adapter pc/parport to 1541 floppy disk drive.

ROM Dumping with EEPROMer

* C128:

| U18 | | (read compatible 2764?) | 8kB C64 character ROM, C128 character ROM |
| U32 | 23128 | (read compatible 27128?) | 16kB C64 Basic, C64 Kernel |
| U33 | 23128 | (read compatible 27128?) | 16kB C128 Basic at 0x4000 |
| U34 | 23128 | (read compatible 27128?) | 16kB C128 Basic at 0x8000 |
| U35 | 23128 | (read compatible 27128?) | 16kB C128 Editor, Z80Bios, C128 Kernel |

* C128 CR (cost reduced):

| U18 | | (read compatible 2764?) | 8kB C64 character ROM, C128 character ROM |
| U32 | 23256 | (read compatible 27256?) | 32kB C64 Basic, C64 Kernel, C128 Editor, Z80Bios, C128 Kernel |
| U34 | 23256 | (read compatible 27256?) | 32kB C128 Basic |

* C128 DCR: As C128 CR plus

| U102| 23256 | (read compatible 27256?) | 32kB 1571 system ROM |



Known Issues


C128 issues:

* uses c64 emulation for c64 mode, so only notes for the additional subsystems here
* rasterline based video system: no CPU holding, imperfect scrolling support (when 40 columns or 25 lines), lightpen support not finished, rasterline not finished
* vdc emulation: dirtybuffered video system, text mode (only standard 8x8 characters supported), graphic mode not tested, lightpen not supported, scrolling not supported
* z80 emulation: floppy simulation not enough for booting CPM, so simplified z80 memory management not tested
* no CPU clock doubling
* no internal function ROM
* c64 mode: differences to real c64???
* cia6526's look in machine/cia6526.c
* serial bus: simple disk drives, no printer or other devices
* expansion modules: no c128 modules
* expansion modules c64: ROM cartridges (exrom), ultimax ROM cartridges (game), c64 cartridges (only standard ROM cartridges), no other ROM cartridges (bankswitching logic in it, switching exrom, game), no ieee488 support, no cpm cartridge, no speech cartridge (no circuit diagram found), no fm sound cartridge, no other expansion modules
* no userport: no rs232/v.24 interface


History and Trivia


The Commodore 128 was launched at the Las-Vegas Consumer Electronic Show 1985. It was presented then as a competitor for the Apple Macintosh and IBM PC (The famous advertisement said "Bad news for Apple and IBM"). In fact, the only star of this show was the Atari 130 ST!

It was the successor of the Commodore 64 and could use all the software and a lot of the hardware of the C64 (the 8502 could be slowed down 1 MHz for compatibility).

One of the main specialties of this machine was the additional Z80 CPU and Video chip, which means that you could attach two monitors. Thanks to the Z80, the Commodore 128 could run under CP/M + : lots of software were adapted for this computer and Osborne or Kaypro programs could run directly.

The 128D model: The 128D was the direct successor of the Commodore 128. It had exactly the same characteristics as the 128 except its external case which contained the Commodore 1571 floppy disk unit.

Actually there were two distinct Commodore 128Ds : The 128D and the 128D-CR (for Cost Reduced).

128D vs. 128DCR

Differences between the 128D and the 128DCR were:

* The 128D was never sold in the U.S. because of all the radio frequency interference it gave off.
* The 128D-CR had a metal case rather than plastic for solving radio frequency problems. This version was sold in the U.S.
* The 128D-CR did not have a cooling fan, although there was a place to mount one.
* The 128D-CR case did not have storage clips for the keyboard.
* The 128D-CR came with 64k of video RAM (for the RGB video chip) rather than 16k for the C128.
* The 128D-CR's printed circuit board was different, and included the drive electronics. So there were 3 CPUs on the board.
* The 128D-CR came with bugfixed (1986) ROMs in two 32k x 8 chips instead of four 16k x 8 ones.
* The internal drive's ROM was different from the original 1571 ROM in two ways: it was bugfixed, and had changes for the new support chips. The bugfixes were bigger than the changes for the new hardware.
* 128D-CR CPU RAM was in four 64k x 4 chips rather than sixteen 64k x 1 ones.
* The 128D-CR did not have a carrying handle.

(info from old-computers.com)

== Easter egg ==

Entering the command

SYS 32800,123,45,6

in native mode would reveal a 40-column screen with a listing of the machine's main developers (and a message they left).


Links


* Commodore 128 Alive! -- http://www.commodore128.org/
* The Commodore 128 Page -- http://members.tripod.com/~rvbelzen/
* Commodore Computers -- http://www.commodore.ca/
* Commodore 128 at old-computers.com -- http://old-computers.com/museum/computer.asp?c=96


Other Emulators


* PC128 (DOS) - no more developed after v3.1 - no webpage
* VICE -- http://www.viceteam.org/




Edit the History info for this game.

Permalink

Back to Home Page