Skip to content

Latest commit

 

History

History

platform-trs80m1

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
TRS80 Model I and III

This port supports the following configurations currently

	TRS80 model I with Alpha SuperMem (or compatibles), or Selector
		(256K+ recommended or a hard disk for swap) and
		expansion interface (26-1140/1/2), or equivalent.
	Options:
		Floppy Disk (somewhat basic support, no format tool yet)
		RS-232-C Interface(26-1145, or compatible)
		Hard Disk (Tandy compatible 26-1132)
		Lower Case Kit (either Tandy 26-1104 or the simple mods)
		Percom Compatible Doubler
		Holmes style speed up board (anything using port 254 bit 0)
		Real Time Clock (supported for time locking, can't do dates as
				 is not Y2K capable, must be at 0xB0)
		HRG1B Graphics Card
		Alpha Products Joystick
		ChromaTRS (as joystick and a graphics device only - need a VDP
			emulation in xtrs to do console support)
		Lo-tech or similar IDE CF at 0x40
		Tandy HRG (user defined graphics 26-9800) [boot opt micro]
		Orcim PCG80 [boot opt pcg80]
		Progamma  Intl. 80 Grafix [boot opt 80gfx]

	In Progress:
		Exatron stringy

	Planned:
		Orchestra 80 sound card
		Tandy Model I Double Density Kit (26-1143)
		Support for the FreHD extra features (clock, volume switches)

	Unsupported:
		M1SE/M1RE/FreHD (except as far as compatibility features go)

	TRS80 model III with Alpha SuperMem (or compatibles)
		(256K+ recommended or a hard disk for swap)

	Options:
		Hard Disk (Tandy compatible, so not afaik MIOSYS)
		Holmes speed up board (using port 95)
		Real Time Clock (supported for time locking, can't do dates as
				 is not Y2K capable, must be at 0xB0)
		Micro Labs Graphyx
		Tandy Hi-Res Card (26-1125)
		Alpha Products Joystick
		ChromaTRS (as joystick and a graphics device only - need a VDP
			emulation in xtrs to do console support)
		Lo-tech or similar IDE CF at 0x40

	Planned:
		Orchestra 90 sound card
		Support for the FreHD extra features (clock, volume switches)

	Unsupported:
		M3SE (except as far as it's compatibility features go)

	LNW80 1 with Selector or Alpha SuperMem compatible banking
		(256K+ recommended or a hard disk for swap) and
		expansion board.

		48K in the base unit required, 64K mod not required

	Options:
		Floppy disk (somewhat basic support, no format tool yet)
		Hard Disk (Tandy compatible)
		IDE CF at 0x40

	Planned:
		Extra keys (F1 and F2)
		LNW80 Graphics Modes (once emulator support is done)

	Upsupported:
		LNW80 II
		Low 16K in the base unit. This would be good to support
		but becomes almost a different port as we could unbank
		the OS. Alternatively it might be possible to use it for
		buffers.

	Note:
		The LNW80 serial does not permit baud rate setting in software

	Video Genie & Video Genie I/II  / Dick Smith System 80 MkI & MkII /
	PMC-80/81 / TRZ-80 with EG3014/X-4010/X-4020 and suitable memory
	expansion (see notes)

	Options:
		Floppy Disk (somewhat basic support, no format tool yet)
		Lower case mod or built in lower case
		X-4010 expansion interface
		EG3014 / X-4020 expansion interface
		EG3016 printer interface
		EG3020 RS232 interface
		EG3022 S100 adapter (but no specific card drivers)
		Percom compatible double density kit
		HRG1B Graphics Card
		Lowe Electronics LE18 graphics adapter
		Tandy style RTC at 0xB0 (only usable for time locking)
		Anything on the model I list that works with a Genie/System-80
		to TRS80 expansion convertor
		IDE CF at 0x40

	Planned:
		Lowe Electronics FRED
		Tandy compatible double density kit

	Unsupported:
		TRS80 mapped serial/printer port on Video Genie (BUG)
		Genie IIs/III: These are CP/M capable systems with a different
		memory model.
		Any non memory S100 cards that don't match the TRS80/VG
		devices (ie the X-4010 S100 printer card should work)

	Notes:
	(In theory having no RAM but something like a BG 256S 256K RAM S100
	 card in an expansion unit jumpered for AMOS II 8x32K user banks,
	 with the I/O port jumpered for 0x43 should just work as it'll
	 behave the same way as the SuperMEM for things that matter)

	Also I suspect an S100 hard disk controller could also be used
	if a driver was added - providing it doesn't do DMA and it avoids the
	high ports F8-FF.

	(What the world really needs is a Quinnterface equivalent with 512K
	 banked RAM - just saying ;-) )


Generally Not Supported:
	EG 64.3/Lubomir Soft Banker	-	See the genie-eg64.3 port
	Various 64K only CP/M adapters
	(Unless someone knows one that stacks with the supermem!)

Would Be Nice To Do Better
	80-Grafix		-	need docs, example apps to debug
					an emulator
	TRS80 Model 1 Hires	-	The UK 'hires' actually a font
					adapter also needs emulation support

Emulator Bugs:
	Repeating instructions like LDIR appear to be misemulated. LDIR
	is performed as an emulated block copy, not as an iterated LDI. The
	real processor actually implements LDIR as  "LDI, if not done
	PC -= 2". FUZIX doesn't do any overlapped LDIR tricks so shouldn't
	be affected.

	The interrupt flags are misemulated and RETI is also wrong.

	Use the xtrs in the EtchedPixels github which fixes the ones that
	matter.

To Do:
	Only hide/show cursor if curtty == inputty
	Reclaim 768 bytes by moving irq stack and udata down to 4100
	Faster user copiers once it works
	Fast block copy routines for uget/uput
	Hint based pre-fetching uget
	When we have > 512K or so RAM use the rest as a ramdisc
	Orchestra
	M3SE video at least

Memory Map:
	0000-3FFF	Various fixed model 1 functionality
	4000-40FF	Kept clear for ROM bits
	4100-7FFF	Kernel data, common etc
	8000-FFFF	Bank0: kernel code
	8000-FFFF	Bank1: kernel code

	Remaining banks of 32K are user apps.

	It is possible with some bankers to overlay the low 32K of RAM but
	this cannot be done with the systems that use S100 banked RAM. Also
	by mapping high we have the video accessible. This does mean the
	Model 1 and III are not binary compatible in user space with the 4 but
	that'll get fixed when we have relocatable binaries sorted.

	The kernel doesn't actually need 80K but it also doesn't fit in
	the available 48K unbanked either (although a minimalish setup might)

	Note that the current build is an insanely featured one. Turning off
	the NET and IDE support will shrink it loads and give more buffers.

	Unfortunately right now some core changes are needed to get to the
	point we can have configurable options done properly.

Setting It Up (current xtrs: https://github.com/TimothyPMann/xtrs with patches)

	make
	cp boot.jv3  /whereever/disk1-0
	xtrs -model 1 -emtsafe --supermem

To set up for hard disk, create a hard disk with the xtrs tools and

	mkdisk -h hard1-0
	# This assumes the default disk size
	cd Standalone/filesystem-src
	./build-filesystem trs80.hd 256 21760
	dd if=trs80.hd of=hard1-0 bs=256 seek=1 conv=notrunc
	tools/trslabel hard1-0
	#
	xtrs -model 1 -emtsafe -supermem


You will still need a boot floppy at this point but just boot with device
0 (or hit return). Swap is configured to be on the end of the hard disk



Banking Models

Currently Supported:
	Alpha Technology Supermem upper 32K banking.

	"Selector" for Model 1. Port 31 allows memory reshuffling away from
the model 1 default. Either the upper or lower 32K is switchable but not
both at once. bits 4/5 control the selection between a further 4 32K banks.
Really selector is its own port.

Useful rom addresses(Model I) 

04C3 -> 64 column
04F6 -> 32 column

0060 -> 14.5*BC uS delay @ 1.774MHz


Floppy boot requires a single density disk. The Level II ROM reads
disk 0 side 0 track 0 sector 0 (TRS80 disks are 0 offset sector count)
into 4200-42FF and then does a JP 4200	(stack is around 407D)

Floppy boot for a model III is similar but double density to 4300