6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Nov 22, 2024 6:49 pm

All times are UTC




Post new topic Reply to topic  [ 14 posts ] 
Author Message
PostPosted: Sat May 07, 2016 2:29 am 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
OK, so here's the deal...I have a VIA connected to a AY-3-8912 audio chip (PSG).

The VIA is working great. I have it mapped to $4000+ on my L-Star 65C02 computer.

I have the three channels outputting through a small LM386 powered speaker on a dev board I have. The speaker is plenty loud. The three channels are tied together and then tied with a 1K resistor to GND and then through a 10K resister and a small capacitor to the speaker. It's what the datasheet says to do and I know from past experiences that this setup plays very well. Here is a video of me using the AY with an Arduino. https://www.youtube.com/watch?v=zWqqevCcC9Y

Obviously, I want to drive this with a 65C02. But the best I can do is get some white noise out of the AY. I cannot seem to find why I can't play anything other than a loud hiss.

I have read, re-read and re-read the data sheet. I'm sure I'm missing something stupid. But in the past, I have found the AY very easy to use...at least with the Arduino.

Below you will find my code. The code is pretty simple. It includes the WOZ monitor at the end. I separate the WOZ monitor and my "VGM" player into separate files. The VGM.asm is where I am controlling (or trying to control) the AY and will eventually be a real VGM player.

Oh, BTW...I have the hardware connected as such:

VIA - mapped to $4000
Port A of VIA mapped to AY's data bus
Port B of VIA mapped to control ports of AY as PB0 = BC1, PB1 = BDIR, PB2 = /RESET.
BC2 is tied to +5V.
CPU and AY clock are 1 MHz

Main entry code mapped at $FC00:

Code:
.setcpu "65C02"

VIA      = $4000
PB      = VIA
PA      = VIA + 1
DDRB   = VIA + 2
DDRA   = VIA + 3
T2CL   = VIA + 8
T2CH   = VIA + 9
SR      = VIA + 10
ACR      = VIA + 11
PCR      = VIA + 12
IFR      = VIA + 13
IER      = VIA + 14

MONITOR   = $FF1F


.CODE

start:
   jsr init_via
   jsr reset_ay

;main:
   jsr init_tune
   jsr play_tune

   jmp MONITOR


;   Include VGM
.segment "VGM"
.include "vgm.asm"

;   Include WOZ monitor
.segment "WOZ"
.include "woz.asm"


Actual VGM (audio) player:

Code:


TUNE_PTR_LO      =   $42
TUNE_PTR_HI      =   $43


init_via:
   ;   Set DDR registers on VIA
   lda   #$FF
   sta DDRA

   lda #$07
   sta DDRB
   rts


init_tune:
   lda #<tune
   sta TUNE_PTR_LO
   lda #>tune
   sta TUNE_PTR_HI
   rts

;   This play loop is not optimized or finished yet.  Currently depends
;   on a WORD aligned data stream in the form of REGISTER then DATA.  $FF terminates
play_tune:
   ldy #0
play_loop:
   lda (TUNE_PTR_LO), Y
   cmp #$FF
   bne play_next
   rts
play_next:
   jsr setreg
   iny
   lda (TUNE_PTR_LO), Y
   cmp #$FF
   bne play_next2
   rts
play_next2:
   jsr writedata
   iny
   jmp play_loop


;------------------------------------------------------------------------------
;   RESET AY
;------------------------------------------------------------------------------
reset_ay:
   lda #$00
   sta PB
   lda #$04
   sta PB
   rts


;------------------------------------------------------------------------------
;   SETREG
;
;   Sets the register of AY which should be located in A prior to calling
;------------------------------------------------------------------------------
setreg:
   jsr inactive    ;   NACT
   sta PA         ;   get register from A (OUTPUT ADDRESS)
   jsr latch       ;   INTAK
   jsr inactive    ;   NACT
   rts

;------------------------------------------------------------------------------
;   WRITEDATA
;
;   Sets the data value which should be located in A prior to calling
;------------------------------------------------------------------------------
writedata:
   jsr inactive    ;   NACT
   sta PA
   jsr write       ;   DWS
   jsr inactive
   rts


;------------------------------------------------------------------------------
;   INACTIVE
;
;   BDIR   LOW
;   BC1      LOW
;------------------------------------------------------------------------------
inactive:
   phx         ;   preserve X (65C02 only)
   ldx #$04
   stx PB
   plx         ;   pull X back off stack (65C02 only)
   rts


;------------------------------------------------------------------------------
;   LATCH ADDRESS
;
;   BDIR   HIGH
;   BC1      HIGH
;------------------------------------------------------------------------------
latch:
   phx         ;   preserve X (65C02 only)
   ldx #$07
   stx PB
   plx         ;   pull X back off stack (65C02 only)
   rts


;------------------------------------------------------------------------------
;   WRITE DATA
;
;   BDIR   HIGH
;   BC1      LOW
;------------------------------------------------------------------------------
write:
   phx         ;   preserve X (65C02 only)
   ldx #$06
   stx PB
   plx         ;   pull X back off stack (65C02 only)
   rts


tune:
   .BYTE $00, $00
   .BYTE $01, $04
   .BYTE $07, $FE
   .BYTE $0A, $0F
   .BYTE $FF         ; EOF


And my .CFG file for good measure:

Code:
MEMORY {
   ROM: start=$FC00, size=$100, type=ro, define=yes, fill=yes, file=%O;
   VGM: start=$FD00, size=$200, type=ro, fill=yes;
   WOZ: start=$FF00, size=$100, type=ro, fill=yes;
}

SEGMENTS {
   CODE:   load=ROM, type=ro;
   VGM:   load=VGM, type=ro;
   WOZ:   load=WOZ, type=ro;
}


Any pointers or tips would be more than appreciated.

I've tried many different registers and values for the AY. But what I have above should really be a simple tone that play forever.

Thanks again!!!!

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Sat May 07, 2016 3:59 am 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
UPDATE:

**GOT IT!**

I was piggy-backing my clock signal from the VIA clock to the AY clock (1 MHz). I took that off and connected a true 2 MHz clock to the AY.

Then, I put the following code in for the tune...it should be a 1kHz wave.

Progress!

Code:
   .BYTE $01, $00
   .BYTE $02, $7D
   .BYTE $03, $00
   .BYTE $04, $7D
   .BYTE $05, $00
   .BYTE $06, $7D
   .BYTE $07, $F8
   .BYTE $0A, $0F
   .BYTE $0B, $0F
   .BYTE $0C, $0F

   .BYTE $FF         ; EOF


Attachments:
File comment: 1kHz !!!!
File May 07, 12 11 35 AM.jpeg
File May 07, 12 11 35 AM.jpeg [ 1.41 MiB | Viewed 4159 times ]

_________________
Cat; the other white meat.
Top
 Profile  
Reply with quote  
PostPosted: Sun May 08, 2016 12:05 am 
Offline
User avatar

Joined: Thu Jun 23, 2011 2:12 am
Posts: 229
Location: Rancho Cucamonga, California
cbmeeks wrote:
Below you will find my code. The code is pretty simple. It includes the WOZ monitor at the end. I separate the WOZ monitor and my "VGM" player into separate files.


In L-Star, you don't have to include the Woz mon assembly code in your source. If you do that, it will have to re-assemble Woz mon every time you build your program.

If you're working with the Apple 1 source for the L-Star, you'll see it has a FILE command in the main module (Apple1.spin) where the binary file with Krusader, BASIC and Woz Mon are loaded. You can easily add more FILE commands to insert your program in front of the Krusader ROM.

The way the Apple1 project is configured, it automatically puts the ROM towards the end of memory. This is done by calculating how far the starting address of the ROM image file(s) is from the end address. For example, if you would put a FILE that refers to a file with only the Woz mon (256 bytes), the code would map the ROM at FF00 (the last 256 bytes of memory). If you would put your binary file in front of the 256 byte Woz mon, the code would still make sure that the Woz mon is at the end of the address range of the 65C02. Something like this:

Code:
' Fragment of Apple1.spin

DAT

RomFile
                        File    "VGM.bin"               ' Audio player
                        File    "65C02.rom.bin"         ' BASIC/Krusader/WOZ mon for 65C02
RomEndRamStart
                        ' The RAM must immediately follow the ROM
                        byte    $EA[RAM_SIZE]
RamEnd       

CON                 


There's just one little problem: you will want your audio player at a predictable location so that you can tell the assembler where it's going to end up. So you'll probably just want to decide on where you want it, and then start a separate memory cog:

Code:
' Fragments of Apple1.spin

CON

' ...

' If you want to use the entire Krusader/BASIC/Woz mon ROM, you may have to adjust the
' RAM_SIZE definition in this section a little, otherwise the program gets too big to fit in
' the Propeller.
 
OBJ

'...

  ' Add the following line to this section:
  vgm:          "Memory"        ' Audio player
 
PUB main | i

' ...

  ' If you want to add your code as ROM, add this under the existing line that starts with "mem.Start"
  ' This maps VGM at $C000 in 65C02 address space; obviously you need to modify your configuration
  ' accordingly so the assembler uses addresses based on $C000.
  vgm.StartEx(@VGMstart, @VGMend, @VGMend, $C000, 0)

  ' Or, alternatively, if you want to map your program as pre-initialized RAM instead of ROM, so you can
  ' modify it with Woz mon without the need to reassemble it, change the above line to:
  vgm.StartEx(@VGMStart, @VGMStart, @VGMend, $C000, 0)

DAT

' ...

' Insert the following lines above the RomFile label

VGMStart
                        File    "VGM.bin"               ' BASIC/Krusader/WOZ mon for 65C02
VGMEnd

'...

CON     

'...


Hope this helps!


Top
 Profile  
Reply with quote  
PostPosted: Mon May 09, 2016 2:08 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
jac_goudsmit wrote:
In L-Star, you don't have to include the Woz mon assembly code in your source. If you do that, it will have to re-assemble Woz mon every time you build your program.


That's correct. But I do anyway because:

1) I can't see a noticeable difference in compile/assemble time
2) I like breaking up sections into their respective pieces and putting them all back together in my build process.
3) I may/have changed the WOZ monitor from time to time.

Oh, I certainly could just import the binary but like I said, the build process is so fast I just don't notice it.


jac_goudsmit wrote:
If you're working with the Apple 1 source for the L-Star, you'll see it has a FILE command in the main module (Apple1.spin) where the binary file with Krusader, BASIC and Woz Mon are loaded. You can easily add more FILE commands to insert your program in front of the Krusader ROM.


This is actually what I've been doing. Putting files, binaries, etc. in different places. I like having all of the sources if I can.


jac_goudsmit wrote:
The way the Apple1 project is configured, it automatically puts the ROM towards the end of memory. This is done by calculating how far the starting address of the ROM image file(s) is from the end address. For example, if you would put a FILE that refers to a file with only the Woz mon (256 bytes), the code would map the ROM at FF00 (the last 256 bytes of memory). If you would put your binary file in front of the 256 byte Woz mon, the code would still make sure that the Woz mon is at the end of the address range of the 65C02. Something like this:
...


Yep. I'm also (or WOZ is) already doing this with the woz.asm.

Code:
; Interrupt Vectors

                .WORD $0F00     ; NMI
                .WORD RESET     ; RESET
                .WORD $0000     ; BRK/IRQ


Of course, this manually sets the specific address in the monitor itself. A little less flexible I suppose.


jac_goudsmit wrote:
There's just one little problem: you will want your audio player at a predictable location so that you can tell the assembler where it's going to end up. So you'll probably just want to decide on where you want it, and then start a separate memory cog:



Actually, at this point I am doing very little PASM/SPIN work with the L-Star. 99% of everything I'm doing is pure 65C02 and CA65. I have custom build scripts that put my stuff in various places. I'm a developer by trade so I'm used to a detailed build process. Soon I will have it compiling, linking and uploading with one key press. This is how I do my C64 programming.



jac_goudsmit wrote:
Hope this helps!


As always, it does.

Thanks!

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Tue May 17, 2016 3:19 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
For those interested, I finally solved this problem. It came down to simply not sending the correct data to the AY....go figure. :-/

What helped me the most, believe it or not, was the manual to the Synetix Super Sprite for the Apple II. That card has an AY38912 and a TMS9918 (plus the TI speech chip but I can't remember the version).

The Super Sprite card didn't use a 6522 (that I saw). It, instead, interfaced directly to the 6502 with a little glue logic. But still, the example programs made me realize that I had been sending the wrong data to the AY.

Anyway, I hope to finish my VGM player very soon. It will interface to the L-Star board but really, any 65C02 based SBC will work with it. I say 65C02 because I'm using some expanded commands from it to better handle the stack.

Although, that's just software. Hardware-wise, anything that can control a 6522 should work.

I will update everyone with my progress as it occurs.

Thanks!

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Mon Jun 06, 2016 9:30 pm 
Offline

Joined: Wed Nov 18, 2015 8:36 am
Posts: 102
Location: UK
cbmeeks wrote:
For those interested, I finally solved this problem. It came down to simply not sending the correct data to the AY....go figure. :-/

What helped me the most, believe it or not, was the manual to the Synetix Super Sprite for the Apple II. That card has an AY38912 and a TMS9918 (plus the TI speech chip but I can't remember the version).

The Super Sprite card didn't use a 6522 (that I saw). It, instead, interfaced directly to the 6502 with a little glue logic. But still, the example programs made me realize that I had been sending the wrong data to the AY.

Anyway, I hope to finish my VGM player very soon. It will interface to the L-Star board but really, any 65C02 based SBC will work with it. I say 65C02 because I'm using some expanded commands from it to better handle the stack.

Although, that's just software. Hardware-wise, anything that can control a 6522 should work.

I will update everyone with my progress as it occurs.

Thanks!


Hi cbmeeks. Your project is very interesting - you have picked very similar components for your homebrew that I am using! I have a 65c02 driving TMS9918 graphics, AY-3-8910 sound through a 6522, and serial with 6551 ACIA. I've posted the source code, and although I may have a very different memory map, some of the coding approach may help you with your project. Best of luck and do keep us all updated with your progress :-)
P.S. The link to my site and source code is https://hackaday.io/project/5789-6502-homebrew-computer


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 07, 2016 1:38 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
dolomiah wrote:
Hi cbmeeks. Your project is very interesting - you have picked very similar components for your homebrew that I am using! I have a 65c02 driving TMS9918 graphics, AY-3-8910 sound through a 6522, and serial with 6551 ACIA. I've posted the source code, and although I may have a very different memory map, some of the coding approach may help you with your project. Best of luck and do keep us all updated with your progress :-)
P.S. The link to my site and source code is https://hackaday.io/project/5789-6502-homebrew-computer


Your project looks very interesting as well!

I really like the design of the BBC case/keyboard.

I have a few of the TMS9918a's that I'm thinking about using in my SBC. I'm actually torn on what to use for video. I like the vintage appeal of the real TMS. But I'm not sure I want the hassle of dealing with the DRAM to SRAM conversion.

I also own an F18A that was meant for my TI994/a. It's tempting to just drop that in a SBC.

Finally, I've thought about going pure software and using a Propeller mcu for video and writing my own drivers. Which is probably what I will do. Just need to decide.

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 10:04 am 
Offline

Joined: Wed Nov 18, 2015 8:36 am
Posts: 102
Location: UK
The BBC case and keyboard is of course not my own design - you're in the U.S.A? So the BBC was a really popular micro from around 1981-1986 in the UK, built by Acorn Computers but branded by the BBC to support the UK government's push computing in to schools. It's a lovely piece of nostalgia for me though, and apart from a bit of hacking of the internals, my multi-breadboard computer fitted in fine!

Regarding wiring up SRAM to the 9918 - once I had looked over the instructions, it wasn't too difficult to do (probably 3-4 evenings work). However if you have the F18 that may well be less effort and head scratching! But if you do go down the 9918 route, then have a look at the source code I posted out, might be useful for you.

But, doing your own video - well that would be quite cool. Not hugely retro, but I did also consider this early on when deciding what to do. There is a cool example of this by Quinn Dunki - see this link : http://quinndunki.com/blondihacks/?p=955

Good luck!


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 1:14 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
dolomiah wrote:
you're in the U.S.A? So the BBC was a really popular micro from around 1981-1986 in the UK, built by Acorn Computers but branded by the BBC to support the UK government's push computing in to schools.


Yes, I'm in the USA. We had a similar push for educational PC's and that was Apple. Not a push by any Government standard, but a push by Apple. :-)

Of course, if you were in Texas, TI was a big deal there in public schools. I grew up in a small Tennessee town and we had Apple II's in school. Well, we had ONE Apple II in the entire school of 109 kids (grades K to 6). Which is why I have such a fondness for Apple II. That, and TI 994/a because my mom couldn't afford an Apple but a TI was dirt cheap at the time so the TI was my first computer...anyway, enough about me. :-)


dolomiah wrote:
Regarding wiring up SRAM to the 9918 - once I had looked over the instructions, it wasn't too difficult to do (probably 3-4 evenings work). However if you have the F18 that may well be less effort and head scratching! But if you do go down the 9918 route, then have a look at the source code I posted out, might be useful for you.



As much respect I have for the F18A, I probably won't use it because I feel it's a little too powerful for a retro themed computer. Of course, you don't have to use the additional features. Plus, I originally bought it for my TI so that's where it needs to go. :-)

I'd really like to use a vintage 9918 chip. I will check out your code and perhaps see if I can get that going.


dolomiah wrote:
doing your own video - well that would be quite cool. Not hugely retro, but I did also consider this early on when deciding what to do.


Well, I think doing your own video can be quite retro, however. If you ever read the TV Typewriter or Cheap Video books by Lancaster, then you really start to feel that generating your own video is about as retro as you can get. :-D

And the Propeller is a good compromise. Mainly because:

1) It's cheap ($8 for the Propeller, $2 for the crystal and $3 for the EEPROM). That is literally all you need. Well, you need a $14 programmer but that's a one-time thing.

2) It comes in DIP40 package

3) Tons of NTSC, PAL and VGA drivers out there. So it can be monochrome only (using ONE pin) or 64 color VGA.

I'm certainly leaning more and more towards using the Propeller.

Anyway, I didn't mean to hijack my own thread....lol

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 3:00 pm 
Offline

Joined: Wed Nov 18, 2015 8:36 am
Posts: 102
Location: UK
Well I also don't wish to go too far off topic, but it's your thread so I hope you don't mind me indulging a little more on the video generation point. :D

Generating your own video is generally retro I agree, and I think I have read/scanned those books you mention! The reason for what I wrote was around a little of the authenticity - for example the Veronica project basically used a modern CPU to bit bang VGA video. This is cool, but it's not really retro - however, loads of respect to her work as it really gets one in to the detail of video generation (and I think part of her motivation to generate video was to learn just how it is done).

But then again, my own project has a mix of retro and newer technologies - I have a bit banged SPI interface through a 65c22 to drive my SD Card for mass storage. SD cards are definitely not very 80's!

But if you had a TI994/a (always loved TI's case!), I can see the extra nostalgia of using a TMS9918. The computers I owned as a kid were an Oric-1 (a fairly unpopular machine, 6502 based) and Atari 800XL (awesome machine, especially considering it basically came in to being in 1979). Both of these had custom video, which I could not reuse easily as they were very tied to the machine architectures they were designed for and/or required too much supporting chips and circuitry. Hence I used a TMS9918 because it is basically a standalone device with it's own memory and CRT outputs - it just needs a clock and a bit of interfacing and it works very nicely with non-TI systems (Z80 - MSX, 6502 - My homebrew!).

It was really interesting to hear how the push in to schools was different in Texas due to TI - although it's easy to forget in the UK that Texas is significantly larger than England, Scotland, Wales and Ireland combined!

Right, I shall do no more off posting on this thread! Only AY-3-891X :shock:

So to bring back on topic, I am using the 8910 variant as opposed to the 8912. The 8912 has one IO port versus two on the 8910, but still that's ok. Because I interfaced the 8910 through a 6522, commanding the sound chip is a relatively lengthy process (btw the Oric-1 used precisely the same approach as I am using). But I have used one of the 8910 IO ports as a joystick interface, which works a treat. Again, the source code I have posted may help if you're going down the same interfacing route.

Right, we're back on topic, phew :D


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 3:23 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
dolomiah wrote:
Well I also don't wish to go too far off topic, but it's your thread so I hope you don't mind me indulging a little more on the video generation point. :D


Nah, a little OT isn't going to bother me. :-)

dolomiah wrote:
I have a bit banged SPI interface through a 65c22 to drive my SD Card for mass storage. SD cards are definitely not very 80's!


Oh yeah, I understand what you mean. I mean, if you want to be 100% authentic retro, then we should be using NMOS, DRAM, etc. But as much as I love retro computers (I have over 60 of them), some of the common annoyances are storage, video, etc. So it's "OK", in my opinion, to mix some modern tech in. :-)

dolomiah wrote:
But if you had a TI994/a (always loved TI's case!), I can see the extra nostalgia of using a TMS9918.


I own 5 (I think) TI's. I have 3 silver ones and 2 tan ones. I love TI. Like I said, it was my first computer. I don't like gutting/modding vintage computers unless it fixes a real problem. Like changing RF to composite. However, I might bend my rule a little with one of my TI's. After seeing the Orwell computer, it reminded me how awesomely retro the TI keyboard is as well. So I may borrow one of my TI's keyboards for my SBC. It's just a keyboard and it's reversible. Oh, and I agree...I love the silver case of the TI. Back in the day when everything was wood grained, TI made their computer metallic. Like they were saying "We're more advanced...we're 16 bit...we're TI". :-D

dolomiah wrote:
The computers I owned as a kid were an Oric-1 (a fairly unpopular machine, 6502 based) and Atari 800XL (awesome machine, especially considering it basically came in to being in 1979). Both of these had custom video, which I could not reuse easily as they were very tied to the machine architectures they were designed for and/or required too much supporting chips and circuitry. Hence I used a TMS9918 because it is basically a standalone device with it's own memory and CRT outputs - it just needs a clock and a bit of interfacing and it works very nicely with non-TI systems (Z80 - MSX, 6502 - My homebrew!).


I would love to have an Oric-1. I love obscure computers too. I even own a Mattel Aquarius in box. hehehe
The video of the Oric-1 would be very easy to reproduce on the Propeller. From what I understand, it wasn't much better than the ULA video of the ZX Spectrum. No sprites. But, it could do two colors per 8x1. I think only the newest Speccy's could do that. So fewer color clashing. That's what is great about the Propeller. If I decide to use it, it would mean a better Propeller programmer than me could upload a new video driver without changing hardware.

As for the 800XL, it's another favorite of mine. I really need to get more into Atari. It's a very underrated system. If you ever get a chance, look for the De Re Atari book. It's amazing. One of the best technical manuals ever. Especially how it explains the GTIA and ANTIC chips of the Atari.

dolomiah wrote:
So to bring back on topic, I am using the 8910 variant as opposed to the 8912. The 8912 has one IO port versus two on the 8910, but still that's ok. Because I interfaced the 8910 through a 6522, commanding the sound chip is a relatively lengthy process (btw the Oric-1 used precisely the same approach as I am using). But I have used one of the 8910 IO ports as a joystick interface, which works a treat. Again, the source code I have posted may help if you're going down the same interfacing route.


That's another interesting point. I'm at a cross-roads with this. So, I have an L-Star that I have tied a 8912 to through a 65C22. Works great. I was writing a VGM player for it and found that it just wasn't working. I will look at your code too and see if there is anything I was missing. But I found that streaming commands to it wasn't working. So I'm really scratching my head on this one.

The second issue with me (hence, the cross-roads) is that I also want to build a Mockingboard clone for my Apple IIe. But, I'd like to do it with the Propeller because I can reduce chip counts. I may be able to do it with no via's and even emulate a SID for the Apple.

I just need to finish one design. The good news is that the Oric-1, the Mockingboard and the L-Star audio card all pretty much drive the AY the same. So a finished design for one takes very little effort to work on another. But do I go 100% retro (65c22 and AY) or modern (Propeller)?

That's the crossroad I'm in.

Which ever I decide, the end result will be the sound system of my SBC. So it's all related. I just can't decide how much retro vs. modern to use.

What would Woz do? LOL

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 4:00 pm 
Offline

Joined: Wed Nov 18, 2015 8:36 am
Posts: 102
Location: UK
I have nowhere near the collection of retro computers you have - awesome work! I have a C64, Spectrum, Atari 800XL, and Oric-1. The Oric-1 is my first computer purchased for £80 in 1984 - still works and I cherish it because it turned my pastime in to a job (although IT consultancy is not as fun as programming in BASIC and Assembler!). I also owned an Atari 800XL (but not the one I have now) and did extensive assembly on it - and I still own a hard copy of Mapping the Atari from 1985. Like De Re Atari, it has a wealth of information so it got me working closely with Antic and GTIA doing mixed screen modes and Display List Interrupts. The capability of the Atari custom chips (including Pokey for sound and IO) was amazing for 1979 - I would argue they were the most powerful custom chips for an 8 bit system available until the consoles and C64 came along (and C64 has its pros and cons so doesn't obviously beat Atari - although SID is great).

I agree your quandary of retro vs modern and yes some practicality has to give as DRAM and NMOS really isn't favourable stuff to work with these days (and hard to get hold of anyway). My two penneth is that over use of the Propeller is really going down the simulation route :?

So I have been pointing you at my source code on hackaday, which is where you find horrible inefficiencies in my code and crap structure and poor comments :oops:

But I know works (and actually sound.s is one of my better looking assembly source files!!!)


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 5:07 pm 
Offline
User avatar

Joined: Wed Aug 17, 2005 12:07 am
Posts: 1250
Location: Soddy-Daisy, TN USA
dolomiah wrote:
I have nowhere near the collection of retro computers you have - awesome work! I have a C64, Spectrum, Atari 800XL, and Oric-1.


If you want to sell that Oric-1, I would be interested. :-D

I understand if you don't.


dolomiah wrote:
I agree your quandary of retro vs modern and yes some practicality has to give as DRAM and NMOS really isn't favourable stuff to work with these days (and hard to get hold of anyway). My two penneth is that over use of the Propeller is really going down the simulation route :?


It's funny..I was thinking this over at lunch and thinking of all of the nifty ideas I could do. But they always turn into delays because it's never as easy as it is in my head.

Here's the cool part. PCBWay has given me a $45 free credit for my first order! Which means I could get a 6"x5" board made (5 copies) for under $20 after my credit! So I'm itching to get them a layout. So maybe old-school, easy design is the way to go for my first SBC.

_________________
Cat; the other white meat.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 08, 2016 10:09 pm 
Offline

Joined: Wed Nov 18, 2015 8:36 am
Posts: 102
Location: UK
Quote:
If you want to sell that Oric-1, I would be interested. :-D


Totally no way! This is literally the first computer I owned and ignited the passion for IT which is now my job - it's more a family heirloom to me now :o

Quote:
So maybe old-school, easy design is the way to go for my first SBC.


Do it! :D


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 14 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 21 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron