Jump to content

Kai Robinson

  • Content Count

  • Joined

  • Last visited

Everything posted by Kai Robinson

  1. So - as the title explains, this is designed to save as many Mac SE's as possible. So many have died thanks to the stupid PRAM battery on the board, and with the SE being a 2-layer PCB with just through hole components, it's actually one of the easiest to save. So - how do you reproduce a PCB? First, get a Mac SE PCB - in my case a 'dead' board from eBay for €29 - thanks, random spanish man! Then, you get to work desoldering. Literally EVERYTHING. Not a single component must remain! However, 30 year old solder and my ZD-915 desoldering station caused a handful of through holes to just pull out of the board, or some traces would come up with it. I found that pre-heating the joint, with a little flux (AmTech RMA-223), would make the solder melt a lot cleaner when you use the ZD-915 desoldering gun. You must use a lot of heat, on these boards. For those joints that have been corroded, you must flood the area with flux, heat from both sides, then try and move the pin using a soldering iron (i find 420 degrees C suitable, with a standard flat tip) before trying to use the desoldering gun. Sometimes it won't always come out of the joint, in which case reflood with flux, and attack it with desolder braid. I use 2.0mm GootWick, which is fantastic stuff (thanks to Louis Rossmann for the recommendation). As part of this process, I made a list of the parts that you need to save, and the ones that you can ditch. Obviously, all the custom Apple ones are a must - the rest are either still available, or are available as new-old-stock or pulls. So - here's what you need to save: SIMM Sockets - IMPOSSIBLE TO GET - desoldering these needs HEAT as there are a lot of connections to the ground plane. Pre-heat the joints, maybe add a dab of proper Kester 63/37 eutectic LEADED solder (none of that RoHS crap), flood with flux. PDS Socket - Amphenol/AMP/AVX DIN-41612 3-row, 96-pin connector (Style-C) - Available new, but still worth reclaiming as sifting through the minute variations of parts is an arse... Inductors - probably easy enough to get new ones, but ehhh, they don't really break, and they fit fine. AM26LS30's - NLA, only available as NoS or Reclaimed AM26LS32's - Available new, but still worth reclaiming MC3488A - NLA, only available as NoS or Reclaimed RTC Chip - Custom Chip - maybe possible to clone using pin-compatible ATTiny85 ADB Chip - Apple branded PIC16CR54 - maybe possible to re-produce/clone GLU Chip - Apple branded PAL16L8 - maybe possible to re-produce/clone BBE Chip - Custom Chip NCR5830/AM58C30 SCSI Chip - NLA, only available as NoS or Reclaimed WIM/SWIM Floppy Chip - Custom Chip Hi & Lo ROM Chips - Toshiba TC531000CP MASK ROM's - Reclaim & reuse, but these are the same pinout as 27C512, but adds A16 in place of VPP pin - you can use 27C1001's on an adapter - doug brown made a similar setup with a built in ROM disk for the Mac Plus. 74LS245 - Available new, but still worth reclaiming - replace with CY74FCT245ATPC or CD74FCT245E 74F257 - Available new, but still worth reclaiming - replace with CD74ACT257E DB19 Connector - NLA, only available as NoS or Reclaimed. These are a bastard to get out cause the lugs are soldered. I found that pre-heating the joint first, filled with flux, then pressing hard into the pad with the desoldering gun, waiting til you see the solder go molten, you can often schlorp out the majority of the solder and then tidy up with wick afterwards. Passives - REPLACE ALL - use high tolerance metal film resistors & nichicon or panasonic electrolytics. Maybe try and save the PLCC Socket if you can. remove it cleanly - sometimes the pins pull out but they can be put back in if you're careful. Once you've saved all those parts, it's time to get scanning! 800 to 1200dpi on your scanner. If your scanner bed cant quite fit the whole thing on, scan one side, then rotate 180 degrees, scan, flip the image, then you can merge the images in photoshop. My scanner clips about 5mm off, so i use this method. There will be a part 2 to follow...but any questions so far?
  2. @techknight I've not even started yet - between heart issues and easing back into work again, i've just not had the chance. Ie - on Saturday, I slept for 12 hours straight - i will give it a go this coming weekend though...
  3. Well, if you want to undertake the reverse engineering of the SE customs - you're welcome to take the analyzer
  4. @paws - not sure, i've yet to have a proper dig into it yet or even read the manual - waiting on the Gotek to arrive!
  5. Well you know, taking a break can sometimes reduce interest in a project...
  6. To show how serious i am about this project...I just bought a working 200MHz, 96 channel logic analyzer from eBay - comes with all 4 Pods, 14/16/18/20 pin DIP analyzer clips, 40 and 48 pin DIP clips and literally every probe going - i even have the floppies in the bag. I've already ordered a Gotek floppy replacement and i have an image of all the disks needed to work it. CRT is crisp as hell, bright, no burn-in. I'm also bidding on a Tektronix Oscilloscope and a hot air station for the SE/30 stuff moving forward. I am 100% COMMITTED to making a working one in the next 12 months, and I have every hope that Rev 1.4c is the final version...
  7. Was it green? If so, no, i'll send you out a new one - Rev 1.4c is the latest.
  8. DM me your address and i'll mail one.
  9. OK - this week, i'm going to try and build up a board - how is everyone else doing with theirs? I have two non-working wall art boards if someone wants them.
  10. Kai Robinson

    72-pin SIMM injection for updated SE/30 Schematic?

    Hmm. I've been thinking about this. Rather than using DRAM/SRAM - it'd be easier (and cheaper) to remove the simm sockets entirely, and solder in a replacement memory board, based on SDRAM, using a CPLD. If the TF536 board can make an Amiga run with 64MB of cheap (like, £3 a piece) SDRAM, i'm sure an SE/30 would be doable. If the sources are ever released, it'd be easy to use that portion of the XC95288XL CPLD on the TF board, in a memory expansion board.
  11. It's amazing what happens in 10 days... i've been having some pretty serious heart issues again (double attack in '18), which has meant that i've been off-work and not really doing anything barring sleeping, for the most part. So i've had the wind knocked out of my sails. Now - i've sent some boards out to the people who volunteered originally - but i've got 2-3 more boards still available, if anyone wants to try building one up. I'm unlikely to be behind a soldering iron again for another few weeks. Also @Torbar could i place another order from pe-connectors through you again? Need another 20 SIMM sockets! @quorten re the RTC - can the MCU not run the code at the 32Khz Crystal freq? Also, did you manage to switch the prescaler? Finally, i think i have solved the GLU issue - it's a matter of how the chip was being read as an EEPROM - turns out other people with different chips were using that method and choosing the AM27C020 as well, and getting wacky /OE data...but change to the fairchild 27C020 and voila - the .bin generates something thats easier to analyse.
  12. How many Custom Apple ASIC's are there? Hundreds, i bet! But, what i'm interested in, is the simpler stuff - in this case, the BBU, the SWIM, SND and RTC Chip from the SE to start with. Who's seen Ken Shirriff's blog posts before? The guy is nuts, but in the best possible way - take a look: https://www.righto.com/2020/08/reverse-engineering-8086s.html This is the sort of thing i'd like to do with the custom ASICS, but i don't want to sacrifice working ones if i can help it - so...if anyone has any one of the aforementioned chips that are DEAD - please could you donate them to me so i can have them imaged? The more chips of each type i can source, the easier it'll be to image, and ultimately, reverse engineer. One of the guys who's working in the same group as me on discord, for the A500++ project, Johan has been reverse engineering the Commodore C128 PLA in his spare time and has developed a process to decap and image most, if not all, of the die itself, so it can be analyzed. I may reach out to a few other people who might be interested, as well - but yes, this is the general idea. Of course join in, if you have the expertise! This gives a good overview of the process, and the site also has a collection of commonly available die shots for analysis. https://siliconpr0n.org/wiki/doku.php?id=delayer:wet And here's an example of Johan's work: https://chips.c128.se/8521R0/index.html
  13. Kai Robinson

    Apple custom ASIC dissection, imaging and analysis

    I'd love to know where the masks/layouts/schematics for them are - or if they're just lost to time... I know the WIM chip is basically a consolidation of an Apple Disk II card, and the SWIM is a minor improvement over that...we need more schematics for things - there has to be a way...i wonder, would apple not provide such things for vintage machines like they used to, to dealers?
  14. Kai Robinson

    Apple custom ASIC dissection, imaging and analysis

    @rplacd the VIA is the main interface chip, at least in the original 68000 based macs - it's a Rockwell (typically) 6522, or these days, the 65C22N from WDC.
  15. Here's what i lifted from the inside macintosh hardware reference books - vol III, it's referencing the Mac 512k/Plus RTC which is only 20 bytes of PRAM, but other than that, the rest of the chip is identical. The 1-sec output doesn't drive a clock, it drives the 65C22's interrupts every second, so not having an exact 1sec output is a no-go. Running the MCU off the external 32.768Khz clock should still be doable, though, it doesn't have to do much 'heavy lifting'. I'm also trying to have a look to see if there's any I2C chips that would work in this config - most seem to have an almost identical pinout, just not more than 64 bytes of EEPROM for PRAM for almsot all of them. The Macintosh real-time clock is a custom chip whose interface lines are available through the VIA. The clock contains a four-byte counter that's incremented once each second, as well as a line that can be used by the VIA to generate an interrupt once each second. It also contains 20 bytes of RAM that are powered by a battery when the Macintosh is turned off. These RAM bytes, called parameter RAM, contain important data that needs to be preserved even when the system power is not available. The Operating System maintains a copy of parameter RAM that you can access in low memory. To find out how to use the values in parameter RAM, see chapter 13 of Volume Il. Accessing the Clock Chip The clock is accessed through the following bits of VIA data register B (vBase+vBufB): rTCData .EQU 0 ;real-time clock serial data line rTCClk .EQU 1 ;real-ti.me clock data-clock line rTCEnb .EQU 2 ;real-time clock serial enable These three bits constitute a simple serial interface. The rTCData bit is a bidirectional serial data line used to send command and data bytes back and forth. The rTCClk bit is a data-clock line, always driven by the processor (you set it high or low yourself) that regulates the transmission of the data and command bits. The rTCEnb bit is the serial enable line, which signals the real-time clock that the processor is about to send it serial commands and data. To access the clock chip, you must first enable its serial function. To do this, set the serial enable line (rTCEnb) to 0. Keep the serial enable line ~ow during the entire transaction; if you set it to 1, you'll abort the transfer. Warning: Be sure you don't alter any of bits 3-7 of VIA data register B during clock serial access. A command can be either a write request or a read request. After the eight bits of a write request, the clock will expect the next eight bits across the serial data line to be your data for storage into one of the internal registers of the clock. After receiving the eight bits of a read request, the clock will respond by putting eight bits of its data on the serial data line. Commands and data are transferred serially in eight-bit groups over the serial data line, with the high-order bit first and the low-order bit last. To send a command to the clock, first set the rTCData bit of VIA data direction register B (vBase+vDirB) so that the real-time clock's serial data line will be used for output to the clock. Next, set the rTCClk bit of vBase+vBufB to 0, then set the rTCData bit to the value of the first (high-order) bit of your data byte. Then raise (set to 1) the data-clock bit (rTCClk). Then lower the data-clock, set the serial data line to the next bit, and raise the data-clock line again. After the last bit of your command has been sent in this way, you can either continue by sending your data byte in the same way (if your command was a write request) or switch to receiving a data byte from the clock (if your command was a read request). To receive a byte of data from the clock, you must first send a command that's a read request. After you've clocked out the last bit of the command, clear the rTCData bit of the data direction register so that the real-time clock's serial data line can be used for input from the clock; then lower the data-clock bit (rTCClk) and read the first (high-order) bit of the clock's data byte on the serial data line. Then raise the data-clock, lower it again, and read the next bit of data. Continue this until all eight bits are read, then raise the serial enable line (rTCEnb }, disabling the data transfer. The following table lists the commands you can send to the clock. A 1 in the high-order bit makes your command a read request; a 0 in the high-order bit makes your command a write request. (In this table, "z" is the bit that determines read or write status, and bits marked "a" are bits whose values depend on what parameter RAM byte you want to address.) Command byte Register addressed by the command z000000l Seconds register 0 (lowest-order byte) z0000101 Seconds register 1 z0001001 Seconds register 2 z000l101 Seconds register 3 (highest-order byte) 00110001 Test register (write only) 00110101 Write-protect register (write only) z010aa01 RAM address 100aa ($10-$13) zlaaaaOl RAM address Oaaaa ($00-$0F) Note that the last two bits of a command byte must always be 01. If the high-order bit (bit 7) of the write-protect register is set, this prevents writing into any other register on the clock chip (including parameter RAM). Clearing the bit allows you to change any values in any registers on the chip. Don't try to read from this register; it's a write-only register. The two highest-order bits (bits 7 and 6) of the test register are used as device control bits during testing, and should always be set to 0 during normal operation. Setting them to anything else will interfere with normal clock counting. Like the write-protect register, this is a write-only register; don't try to read from it. All clock data must be sent as full eight-bit bytes, even if only one or two bits are of interest. The rest of the bits may not matter, but you must send them to the clock or the write will be aborted when you raise the serial enable line. It's important to use the proper sequence if you're writing to the clock's seconds registers. If you write to a given seconds register, there's a chance that the clock may increment the data in the next higher-order register during the write, causing unpredictable results. To avoid this possibility, always write to the registers in low-to-high order. Similarly, the clock data may increment during a read of all four time bytes, which could cause invalid data to be read. To avoid this, always read the time twice (or until you get the same value twice). Warning: When you've finished reading from the clock registers, always end by doing a final write such as setting the write-protect bit. Failure to do this may leave the clock in a state that will run down the battery more quickly than necessary. The One-Second Interrupt The clock also generates a VIA interrupt once each second (if this interrupt is enabled). The enable status for this interrupt can be read from or written to bit 0 of the VlA's interrupt enable register (vBase+vIER). When reading the enable register, a 1 bit indicates the interrupt is enabled, and 0 means it's disabled. Writing $01 to the enable register disables the clock's onesecond interrupt (without affecting any other interrupts), while writing $81 enables it again. See chapter 6 of Volume Il for more information about writing your own interrupt handlers. Warning: Be sure when you write to bit 0 of the VIA's interrupt enable register that you don't change any of the other bits.
  16. @quorten I think i just noticed something in the original Apple RTC chip....it looks to be a very early implementation of I2C (phillips brought it out in '82) - Rename the pins on the RTC from RTC.CLK to SCL and RTC.DATA to SDA and....well, there you have it...I2C serial data line is BiDirectional after all....would make sense, right?
  17. You dont need to add the crystal - that's already on the board.
  18. Well it's that timer 1 has the option of the 128 prescaler, whereas timer 0 doesn't. The video I posted had all the details.
  19. @quorten - after looking through your code - could you try changing this: //set up timer bitSet(GTCCR, TSM); // Turns off timers while we set it up bitSet(TIMSK, TOIE0); // Set Timer/Counter0 Overflow Interrupt Enable // NOTE: 0b111 external clock, 0b011, uses 1/64 prescaler on I/O clock. TCCR0B = 0b011; // Set prescaler, 32,768Hz/64 = 512Hz, fills up the 8-bit counter (256) once every half second TCNT0 = 0; // Clear the counter bitClear(GTCCR, TSM); // Turns timers back on into this: //set up timer bitSet(GTCCR, TSM); // Turns off timers while we set it up bitSet(TIMSK, TOIE1); // Set Timer/Counter1 Overflow Interrupt Enable // NOTE: 0b111 external clock, 0b1000, uses 1/128 prescaler on I/O clock. TCCR1B = 0b1000; // Set prescaler, 128 x 256 / 32.768 = 1000 TCNT1 = 0; // Clear the counter bitClear(GTCCR, TSM); // Turns timers back on I'm not sure if i set TCCR1B correctly, but the prescale math lines up...
  20. Hmm. Possible - although i'd rather just use the proper connector at least for now: https://www.exxoshost.co.uk/atari/store2/ - Item 0084.
  21. @quorten I think the ATTiny 85 would suffice for most people - is the time drift realllly that significant? Btw i found this, might be useful:
  22. Yep. SGI Octane Part 2 - was my Octane i donated
  23. @Torbar Neil's a friend of mine - was up there a few weeks ago for my holiday, got drunk in his lounge - i took one of my dead ones to him for a wall art thing in the cave
  24. OK - i found a supplier of DB19F connectors for PCB's - exxos store! The Atari community use them, too - i bought a few from there for the SE's
  25. I also went all in and got 10 boards - so there's a few more that'll be free to go out - and there's still one piece of 'wall art' available