Jump to content
IGNORED

A8 vs C16/Plus4


oky2000

Recommended Posts

Sinclair computers= pregnant calculators. I'm sure if you replace the engine in a car with a rubber band you can make them cheaper ;)

Yeah, pregnant calculators that dominated the UK (and a good chunk of mainland Europe) home computer market in the mid 80s. ;) C64 took the lead when it got cheaper, but Speccy still got massive support trailing off into the early 90s. :P

 

It was a good, simple, cheap, but effective machine at a very good value (value was about equal to the C64, but price was lower ;)). With a bit of tweaking it probably would have lasted even better and catered to a broader market.

 

They also did that with lack of vertical integration and relatively limited funds, not that much unlike the Atari ST. ;) For that matter, both the Spectrum and the ST had pretty open potential for enhancement of the architecture that wasn't really acted upon. (the TS2068 features alone would have moved the Speccy to compete almost directly with the CPC at a much lower price, and be capable of things the C64 simply couldn't do -512x192 monochrome with 64 or 80 column text capabilities . . . with slightly higher end models with CPC quality keboards, it probably could have become the de-facto low-end business computing option . . . well focusing more on disks and not on the funky microdrive would have helped that too)

The TS2068 features also made it better for games, not C64 level obviously, but better than Spectrum 128 and better in some ways than the CPC. (better in pretty much every way than the oddly common use of mode 1 fir games on the CPC)

 

Plus, it would have still kept the base hardware quite simple and cheap, meaning tacked-on (embedded) compatibility for something like Loki would have been quite realistic. (given what happened with the Flare 1's development, and assuming Loki was progressing along similar lines, it should have been ready for production by 1987 at least, in time to run up against the Amiga 500 -which it definitely would have been much cheaper than, while also significantly more capable in some areas and roughly on-par in others -the eventual Flare 1/Slipstream design shares striking similarities with the -albeit somewhat vague- promoted specs of the Loki, with the exception that there would be no 64 color mode -just 16 and 256 modes- and the CPU was to be 6 and not 7 MHz -though had it been based around the Spectrum's clock rate, 7 MHz might have made sense . . . though actual enhanced speccy clones existed in both 6 and 7 MHz forms -for example SAM was 6, Pentagon was 7)

 

 

 

Of course, in the US, there was much less of a market for super low-end machines in the long run (though one could argue Timex could have managed that much better), and the C64 ended up as the de-factor low-end computer in the mid 80s. (closest thing to the spectrum was probably the CoCo, though that had a very limited market compared to the C64 it still lasted quite a long time and saw a much better upgrade than the speccy ever got in the CoCo III -only thing lacking was a sound chip)

 

Again not quite right, the point is whilst most computers bar the Amiga 1000 were some sort of compromise for the time the ZX80/81/Spectrum was ALL compromise to a point where the final design is completely hampered by those compromises in its ability to entertain its owner. No sound chip, no joystick ports, gaudy colour clashing graphics of nuclear looking illuminant, no scrolling, no sprites, no real keyboard, no disk drive....the list is endless of what is missing on the ZX Spectrum. It may have sold well in 82-84 on price but by the time the C64 was down to £199/£225 in mid 80s it was game over for Sinclair as far as sales of new machines went. ZX Spectrum was the first 8bit to fall off the conversion formats of ST/Amiga games. Was just too shit even in mid 80s despite what some fanboys may have you believe. ZX Spectrum is just a colour version of the ZX81 with the ability to process program code on the CPU AT THE SAME TIME as displaying the bitmapped graphics (a big deal for poor ZX81 upgraders lol)

 

They made LED watches that could barely have enough power to display the time, calculators that could barely calculate etc etc and the classic C5 electric bike with a pedal assisted top speed of 15mph (I can peddle 20-25mph myself lol)

 

And then the Sinclair QL.....another piece of crap too :lol: 68000 CPU running on 8bit bus with zero custom chips and an ASCII graphics looking OS wooooo what a fantastic idea.....NOT.

Link to comment
Share on other sites

Speccy... well... is there any custom chip inside? or is it pure CPU driven machine? does it have interrupts?

It had one custom chip - ULA - memory, address decoding and screen drawing....

And it does have Vertical blank interrupt...

 

It was really simple machine... But we should look at effects of those limitations and low price.

First of all - low price made possible what Sinclair wanted - computer in million homes.

Commodore, Acorn, Atari and even IBM - wouldn't lower their prices if Sinclair didn't do it first.

 

Those limits forced coders to rely on their own coding skills, and if you look at the later games like Savage, Target Renegade, R-type, Carrier Command - those are brilliant games.

And those coders that got their skills ironed at that rubber -shitty - 1 bit per pixel machine - they are the ones who later made 16bit consoles and computers shine.

 

WHen you look at that concept of CPU+ram+bitmap screen+beeper what do you get ?

 

PC.

 

Yeah we all had our hopes in Amiga and AtariST - but who won ?

 

That KeepItSimpleStupid principle won. We all have PCs now at home...

And what ever new graphics chip was invented (no matter how many sprites, blitters, planes) - at the end it was always the software based simple tech that survived...

 

So, my kudos go to Sinclair and Spectrum - without them, who knows how would history look like now ?

Link to comment
Share on other sites

Speccy was a good learning machine as it forced you to code... no help due to hardware. maybe similar to Apple II maybe. no custom chips. Maybe little bit like VIC-20 but with Z80 instead.

 

I am sure that Speccy coders were "overhelmd" by pure hardware power an Amiga or Atari ST gave them... ;)

Link to comment
Share on other sites

Speccy... well... is there any custom chip inside? or is it pure CPU driven machine? does it have interrupts?

It had one custom chip - ULA - memory, address decoding and screen drawing....

And it does have Vertical blank interrupt...

 

It was really simple machine... But we should look at effects of those limitations and low price.

First of all - low price made possible what Sinclair wanted - computer in million homes.

Commodore, Acorn, Atari and even IBM - wouldn't lower their prices if Sinclair didn't do it first.

 

Those limits forced coders to rely on their own coding skills, and if you look at the later games like Savage, Target Renegade, R-type, Carrier Command - those are brilliant games.

And those coders that got their skills ironed at that rubber -shitty - 1 bit per pixel machine - they are the ones who later made 16bit consoles and computers shine.

 

WHen you look at that concept of CPU+ram+bitmap screen+beeper what do you get ?

 

PC.

 

Yeah we all had our hopes in Amiga and AtariST - but who won ?

 

That KeepItSimpleStupid principle won. We all have PCs now at home...

And what ever new graphics chip was invented (no matter how many sprites, blitters, planes) - at the end it was always the software based simple tech that survived...

 

So, my kudos go to Sinclair and Spectrum - without them, who knows how would history look like now ?

 

PC won because all it needed was VGA graphics support in games. ST/Amiga500 Street Fighter was still rubbish on Falcon/Amiga1200. Choppy EGA 286-16mhz running the game badly suddenly became arcade quality on your shiny new VGA 386-40 PC WITHOUT NEEDING TO BUY A NEW VERSION OF THAT SAME GAME GATHERING DUST :)

 

Also PC sales in the UK before death of C= were nothing spectacular, CD32 games outsold PC-CD games 10:1 in early 94 too ;)

 

My videos prove arcade games 9.9/10 on ZX were inferior to C64. Outrun was crap on every home computer, and Chase HQ on Amstrad far superior to ZX too.

 

As for coding.....C64 BASIC made machine code easy to progress to, was all bloody pokes haha but hey I learned binary before any other kid in my math class ;)

 

Only TCB did astonishing ST scrolling game, maybe only 15 games ever got close to maxing out original Amiga chipset. Disgusting really.

 

BACK ON TOPIC.....

 

If I display a new colour raster on every C16 scanline (160x200 mode) how much CPU time is used. Ditto for 192 colour DLI on A8 in 160x192(?) mode?

 

Could you do A8 Attack of the Mutant Camel's graphics identical on Commodore 16? A8 version is the best by far vs C64 rubbish version!

Edited by oky2000
Link to comment
Share on other sites

You might need to repeat the unanswered questions if there's any more. The thread was supposed to be a simple tech comparison but went off on a big tangent and TBH I kinda dropped out.

 

Anyhow, the immediate one:

 

If I display a new colour raster on every C16 scanline (160x200 mode) how much CPU time is used. Ditto for 192 colour DLI on A8 in 160x192(?) mode?

 

Could you do A8 Attack of the Mutant Camel's graphics identical on Commodore 16? A8 version is the best by far vs C64 rubbish version!

 

Like the C64 there's Raster IRQs and you've also got Timer IRQs, but there's no WSYNC.

 

But, you do have a Horizontal Raster position register which is quite useful and you can even write to it to fool TED into thinking a scanline should end early (this is used to generate a software-driven Interlace Mode).

 

Additionally there's the advantage over the C64 in that you have 114 cycles per scanline, identical to Atari. Of course the DMA steals are in similar fashion to the Atari, although only 5 Refresh cycles most scanlines (3 on badlines ? ) but also remember the Plus4 has the 2 consecutive badlines per character row due to the non-parallel attribute fetches.

 

Could you do AMC ?

Possibly - but remembering again the Plus4 has no HW sprites, so you can't really afford to just burn away lots of CPU cycles doing pretty effects like on the Atari or C64.

 

But on the other hand, you can get away without the need for colour-register changes in many situations due to the attribute system.

 

Plus4 has an Extended Background mode like C64, but it's also of little use due to being hires only and reducing the number of characters available.

Edited by Rybags
Link to comment
Share on other sites

I've got the original A8 camel sprite somewhere both in original size and resized to match two C64 sized sprites etc if anyone wants to try animating it on a C16/+4.

 

Was there ever a programmers reference guide from Commodore for the C16 series? Any game orientated BASIC packages as the C64/Amstrad/Spectrum had too like Basic Lightning and Laser Basic etc?

Link to comment
Share on other sites

I've got the original A8 camel sprite somewhere both in original size and resized to match two C64 sized sprites etc if anyone wants to try animating it on a C16/+4.

 

Was there ever a programmers reference guide from Commodore for the C16 series? Any game orientated BASIC packages as the C64/Amstrad/Spectrum had too like Basic Lightning and Laser Basic etc?

I only saw original manual (in hungarian ;) ), but it was great compared to C64s... It even had steps for detecting hardware failures and detailed schematics with electrical signal diagrams and such...

 

Best info for you would be Plu4World:

 

http://plus4world.powweb.com/plus4encyclopedia

Link to comment
Share on other sites

For some reason Hesware decided to call Gridrunner/Matrix other names. Attack of the Mutant Camels is this.....

 

Attack_of_the_mutant_camels_atari_800.png

It might just have the wrong picture on the website, I haven't tried it.

<edit>

I ran across an explanation with this video:

Read the comments on the Youtube page.

It was originally called Attack of the Mutant Camels.

Edited by JamesD
Link to comment
Share on other sites

The problem I have with some of JM's later stuff...

 

he's got so much distracting irrelevant stuff going on with the psychodelic colours and such that it makes the games harder to play.

 

But he's not the only one, plenty of modern-day homebrew on the PC is spoilt because the writer didn't know whether they were doing a game or a demo.

  • Like 1
Link to comment
Share on other sites

The problem I have with some of JM's later stuff...

 

he's got so much distracting irrelevant stuff going on with the psychodelic colours and such that it makes the games harder to play.

 

But he's not the only one, plenty of modern-day homebrew on the PC is spoilt because the writer didn't know whether they were doing a game or a demo.

 

None of his 16 or 32bit computer games where that great I think. He got fixated with Tempest and light synths in the lte 80s.

  • Like 2
Link to comment
Share on other sites

I wanted to play with the Plus/4 bitmap mode so I typed in a disassembly from the previously mentioned book.

I turned it back into something more readable but I probably need to fix/add some comments and I may have dropped a few lines.

<edit>

And I see I need to format the text better. (mostly because I need to create a 6502 language description for my editor)

 

;
; based on disassembly published it 'C16 Plus 4 REFERENC BOOK' by Anco, page 12-16

GETIN	equ	$FFE4	;Routine to Read Char from Keyboard Buffer
TED	equ	$FF00		;base of TED registers
VMR	equ	20			;Video Matrix Register (address = TED+VMR)
;VM4 VM3 VM2 VM1 VM0 XX XX XX

;page zero variables
; $D0 - joystick X adjustment (-1,0,1)
; $D1 - joystick Y adjustment (-1,0,1)
; $D3 - temp storage location
; $D4 - current X coordinate?
; $D5 - current Y coordinate?
; $D7 $D8 - screen ROW pointer

;	org	#$1000
;garbage data from disasembly
;_1000	rmb	$00,$0B,$10,$00,$00,$9E,$34,$31
;		rmb	$31,$32,$00,$00,$00,$00,$00,$00

org	#$1010
;set up our screen		
_1010	lda	#$36	;%00110110
		;from bit 7 down to bit 0
		;0 - test bit, always 0
		;0 - Extended Color Mode off
		;1 - Bitmap Mode On
		;1 - Screen On
		;0 - 24 Rows
		;110 - Vertical Scroll Position
sta	$FF06		;set it 

lda	#$C8		;%11001000
		;from bit 7 down to bit 0
		;11 - Don't Care, Not Used
		;001 - Address of Bitmap RAM
		;000 - Frequency Voice 1
sta	$FF12		;set it

jsr	_10EA		;clear the screen

; set up color RAM
ldx	#$00		;clear X
_101F	lda	#$33		;%00110011
sta	$0800,x
sta	$0900,x
sta	$0A00,x
sta	$0B00,x
lda	#$05			;%00001001
sta	$0C00,x
sta	$0D00,x
sta	$0E00,x
sta	$0F00,x
dex
bne	_101F

;set up page 0 pointer at $D5 $D6 to $00A0
stx	$D6				;clear $D6
lda	#$A0			;set $D5 to $A0
sta	$D5

;set up what????
lda	#$64			;set $D4 to #$64
sta	$D4
inx
stx	$D2				;set $D2 to 1

;start of main loop
_104B	jsr	GETIN		;check keyboard
cmp	#$20			;was the spacebar hit?
bne	_1055			;branch if not
jsr	_10EA			;clear the screen
_1055	jsr	_10C5		;read the joystick
bne	_105C			
inc	$D2

; X coordinate
_105C	lda	$D0			;get change in X
beq	_1093			;branch if no change
bmi	_107E			;branch if negative

;Add 1 to X (joystick held Right)
;increment 16 bit page 0 pointer at $D5-$D6
;increment $D5 (LSB)
lda	$D5
clc
adc	#$01
sta	$D5
tax
;add the carry bit to $D6 (MSB)
lda	$D6
adc	#$00
sta	$D6

beq	_1093		;branch if zero
;wrap around?
cpx	#$40		;check LSB < #$40 (64)
bcc	_1093		;branch if not
;we wrap around
;clear the page 0 pointer at $D5-$D6
lda	#$00
sta	$D5
sta	$D6
beq	_1093		;branch

;subtract 1 from X (Joystick held Left)
;decrement 16 bit page 0 pointer at $D5-$D6
_107E	sec		; subtract 1 from $D5 (LSB)
lda	$D5
sbc	#$01
sta	$D5
lda	$D6		; now subtract carry from $D6 (MSB)
sdc	#$00
bcs	_1091	;branch if we haven't gone too low
lda	#$3F	;wrap around the pointer to $013F
sta	$D5
lda	#$01
_1091	sta	$D6

; Y coordinate
_1093	lda	$D1
beq	_10B2	;branch if no change
bmi	_10A7	;branch if up

;(Joystick held down)
ldy	$D4
iny
cpy	#$C8
bne	_10A2
ldy	#$00
_10A2	sty	$D4
jmp	_10B2

;(Joystick held down)
_10A7	lda	$D4
sec
sbc	#$01
bcs	_10B0
lda	#$C7
_10B0	sta	$D4


_10B2	lda	$D2
lsr
jsr	_1102		; draw

;delay loop
ldx	#$0F
_10BA	ldy	#$FF
_10BC	dey
bne	_10BC
dex
bne	_10BA

jmp	_104B		;end of main loop



;read joystick
_10C5	sei			;disable interrupts
lda	#$FD		;%11111101
sta	$FF08
lda	$FF08
ldy	#$00
ldx	#$00
lsr
bcs	_10D6
dey				;up?
_10D6	lsr
bcs	_10DA
iny				;down?
_10DA	lsr
bcs	_10DE
dex				;left?
_10DE	lsr
bcs	_10E2
inx				;right?
_10E2	stx	$D0
sty	$D1
and	#$08		;fire?
cli				;enable interrupts
rts

;clear screen RAM?
; clear memory at $2000
_10EA	lda	#$00	;clear a
sta	$D7		;set LSB of pointer to zero
lda	#$20	;set MSB of pointer to 32
sta	$D8		; (page 0 screen pointer is now #$2000)
ldx	#$20	;do outer loop 32 times.  (Why not tax? )
ldy	#$00	;clear Y (LSB), do inner loop 255 times? Should use tay above
tya			;clear a
;same as above with more single byte instructions, saves 2 clock cycles?	
;	lda	#$00	;clear a
;	tay			;clear y
;	sta	$D7		;clear LSB of pointer
;	lda	#$20	;set a to #$20
;	tax			;set X to #$20
;	sta	$D8		; (page 0 pointer is now #$2000... the screen memory address)
;	tya			;clear a
_10F7	sta	($D7),Y	;clear screen memory byte
dey				;decrement counter
bne	_10F7		;loop if y != 0
inc	$D8			;increment MSB of pointer
dex				;decrement counter
bne	_10F7		;loop if x != 0
rts				;return

;draw to screen
_1102	bcs	_110F	;branch if button pressed (draw mode)

;AND to screen (erase bit)
;(screen),Y and= _1164,X
jsr	_111A		;calculate X, Y and $D7 $D8 pointer
lda	_1164,X		;get bit to reset
and	($D7),Y		;AND it with current screen data
sta	($D7),Y
rts

;OR to screen (set bit)
; (screen),Y or= _115C,X	
_110F	jsr	_111A	;get bit and address to draw at
lda	_115C,X		;get bit to draw
ora	($D7),Y		;OR byte with current screen data
sta	($D7),Y
rts

; (screen) or= A
_1115	ora	($D7),Y	; OR A with current screen data
sta	($D7),Y		; update the screen with the new data
rts				; return


;(X,Y) to address and bit conversion
_111A	lda	$D4		;Get X
and	#$07		;Get bottom 3 bits (bit mask -> 0000 0111)
tay				;going to use it as screen pointer offset (6502 doesn't support	-> ORA ($D7);STA ($D7))

;calculate screen ROW address
lda	$D4			;Get X
and	#$F8		;Get top 5 bits (bit mask -> 11111000)
sta	$D7			;save it in $D7
lda	#$00		;clear A
asl	$D7			;left shift
rol				;get carry bit shifted out
asl	$D7			;do it again
rol
asl	$D7			;and again
rol
sta	$D8			;save top 3 bits grabbed from $D7
sta	$D3			;so we can ROL more bits in below
lda	$D7			;lets keep grabbing bits from data in $D7 without altering it
asl				;shift
rol	$D3			;get carry bit
asl				;one more time
rol	$D3
adc	$D7			;and put these 2 bits back on $D7 at the right
sta	$D7
lda	$D8			;get the three bits we grabbed from $D7 earlier
adc	$D3			;add $D3 to $D8
sta	$D8
;calculate offset into bit table
lda	$D5			;grab $D5
and	#$07		;grab the bottom bits (bit mask -> 0000 0111)
tax				;put that in x
lda	$D5			;grab top bits from $D5
and	#$F8		;(bit mask -> 11111000)
adc	$D7			;add it to $D7
sta	$D7			;update $D7
lda	$D6			;add $D6 to $D8
adc	$D8
adc	#$20		;add 32 to $D8
sta	$D8			;update $D8 (MSB of pointer)
rts				;return

;y to bit conversion table for setting bits
_115C	dcb	%10000000	;$80
	dcb	%01000000	;$40
	dcb	%00100000	;$20
	dcb	%00010000	;$10
	dcb	%00001000	;$08
	dcb	%00000100	;$04
	dcb	%00000010	;$02
	dcb	%00000001	;$01
	
;y to bit conversion table for clearing bits
_1164	dcb	%01111111	;$7F
	dcb	%10111111	;$BF
	dcb	%11011111	;$DF
	dcb	%11101111	;$EF
	dcb	%11110111	;$F7
	dcb	%11111011	;$FB
	dcb	%11111101	;$FD
	dcb	%11111110	;$FE

end
;*********************************

Edited by JamesD
Link to comment
Share on other sites

A8 and C= 234 series are two machines I would definitely like to mess about with more. Both are really alien architecture to me though and so maybe one day when I have a part time job or something etc.

 

The C16/+4 especially were quite badly served with software of low budget quality even when the price was not budget. The Speccy and C64 were probably the only 8bit machines ever to have anything like their maximum potential realised.

Edited by oky2000
Link to comment
Share on other sites

It's worth a look at the C= hacking notes and the plus4.com site to find out about the hardware tricks.

 

Stuff like FLI to greatly increase colours, TED tricks to give more horizontal and vertical pixels, interlace, etc.

 

YAPE supports most of the hardware tricks so you can do it in emulation.

 

Some of the 64K games are pretty impressive but for 32K and less, the talent is pitifully thin.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...