macsonny Posted April 27, 2022 Author Share Posted April 27, 2022 7 minutes ago, xrbrevin said: the schematic with the 2x 7-segment displays is called HAPPY4.pdf - look to the top-right of the image Aaaahhh, for some reason I missed that file and re-downloaded the ZIP and see it now. So reading the digram, it looks like the output of the 6264 D0-D5 (PINs 13,12,11,18,17 and 16) drivers the display driver IC's (4543B x 2) and that's all that's needed? It's looks like all the other logic going to the jumper (J2) is for some other logic? Thoughts? Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted April 27, 2022 Share Posted April 27, 2022 i think the green/red/yellow reference below is for the density LEDs Quote Link to comment Share on other sites More sharing options...
macsonny Posted April 27, 2022 Author Share Posted April 27, 2022 21 minutes ago, xrbrevin said: i think the green/red/yellow reference below is for the density LEDs I agree. So if you have a Happy (like this) then in theory the LED track display looks relatively simple. Only thing baffling me a little is what is the B1, B2 and B3 at the top? Quote Link to comment Share on other sites More sharing options...
BillC Posted April 27, 2022 Share Posted April 27, 2022 (edited) 47 minutes ago, macsonny said: I agree. So if you have a Happy (like this) then in theory the LED track display looks relatively simple. Only thing baffling me a little is what is the B1, B2 and B3 at the top? This jumper allows selecting either common anode or common cathode 7-segment LED displays. I determined this from the 4543B datasheet: https://pdf1.alldatasheet.com/datasheet-pdf/view/111462/ETC1/4543B.html Edited April 27, 2022 by BillC 2 Quote Link to comment Share on other sites More sharing options...
macsonny Posted April 27, 2022 Author Share Posted April 27, 2022 29 minutes ago, BillC said: This jumper allows selecting either common anode or common cathode 7-segment LED displays. I determined this from the 4543B datasheet: https://pdf1.alldatasheet.com/datasheet-pdf/view/111462/ETC1/4543B.html So it's either jumped B1&B2 or B2&B3 right? Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted April 27, 2022 Share Posted April 27, 2022 12 hours ago, macsonny said: The trick is to work out how the track counter works when moving from say track 4 to track 21 in a single jump. It doesn't do a single step, it loads the X register with the number of steps required from it's current track (which is stored in RAM) to the required track and steps the required amount in one loop, direction is determined by subtracting start from destination. From what I see in the code, it does 3 steps/track so for 4 to 21 it would be 17 * 3 steps. I'll try confirm later if I managed to find some space to set up one of my 130XE's and a 1050, although both mine have US Doubler fitted, but would think the step rate would be similar especially if I use a standard DOS 2.0 disk. Quote Link to comment Share on other sites More sharing options...
macsonny Posted April 27, 2022 Author Share Posted April 27, 2022 6 minutes ago, TGB1718 said: It doesn't do a single step, it loads the X register with the number of steps required from it's current track (which is stored in RAM) to the required track and steps the required amount in one loop, direction is determined by subtracting start from destination. From what I see in the code, it does 3 steps/track so for 4 to 21 it would be 17 * 3 steps. I'll try confirm later if I managed to find some space to set up one of my 130XE's and a 1050, although both mine have US Doubler fitted, but would think the step rate would be similar especially if I use a standard DOS 2.0 disk. Let me know what you work out so I can try here. I'v been trying to reverse engineer the Happy Drive 3 given above against my Happy Drive version. I was doing ok as I found the 6264 on the schematic aligned with the 7104 flash RAM I have on my Happy board. However, I got stuck when trying to work out where PIN 1 on the schematic aligns to my Happy board. I've given up on that approach. Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 1, 2022 Share Posted May 1, 2022 Just curious if there was anymore progress with this track display ? Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 1, 2022 Share Posted May 1, 2022 I've been looking in the 1050 schematics and this looks promising as far as capturing nice (5V) square wave directly from PIA ic, right by the stepper connector @ U2 (pin 2 & pin7) ic and U3 (pin 2 & pin7) ic on the 1050 motherboard. Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 1, 2022 Share Posted May 1, 2022 Here is the capture of my oscilloscope when the 1050 is doing the power up cycle on pin 2 & pin7 U2 & U3 ic. Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 1, 2022 Share Posted May 1, 2022 I wonder if I just select the right two pins and just use some encoder Arduino Library Quote Link to comment Share on other sites More sharing options...
macsonny Posted May 1, 2022 Author Share Posted May 1, 2022 23 minutes ago, Chri O. said: I wonder if I just select the right two pins and just use some encoder Arduino Library Sounds like an approach. Maybe just build a simple logic counter and see what gets displayed - then try and work the logic for track count? 1 Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 1, 2022 Share Posted May 1, 2022 Sorry but it's been a while since I've been playing with real 8-bit Atari Drives. When you power up the 1050 drive @ Boot sequence can you confirm you can hear the stepper motor running fast (going out) and then slow going back to track 0 slow ? Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted May 2, 2022 Share Posted May 2, 2022 Been toying with some ideas for a standard 1050 and maybe a US Doubler drive, still a little way off designing the hardware bit, nearly complete with the circuit, but at least I got an RP2040 Pico to use a small display (only reason it's been a pain is virtually every example uses Micro-Python (I just don't get why it seems so popular, maybe just showing my age) I use the Arduino IDE which is "C" orientated. Anyway a short video to show how the display will look when running, need to find a small plastic case to house the display, I chose this size as it will fit nicely on the front of the 1050. Will update as I progress. VID_20220502_195839.mp4 4 Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 2, 2022 Share Posted May 2, 2022 Cool ? I've got one going also ? 2 Quote Link to comment Share on other sites More sharing options...
+Stephen Posted May 3, 2022 Share Posted May 3, 2022 Can we get a Nixie tube display? Just kidding (sort of). Pretty cool project(s) here. 2 1 Quote Link to comment Share on other sites More sharing options...
Mathy Posted May 3, 2022 Share Posted May 3, 2022 Hello guys Back in the days, somebody I knew had two seven segment displays (or a dual seven segment display) in his 1050 where the power switch used to be. IIRC the power LED (which was no longer needed) was replaced with a push switch. It looked like it could have come from Atari that way. Sincerely Mathy Quote Link to comment Share on other sites More sharing options...
StickJock Posted May 3, 2022 Share Posted May 3, 2022 13 hours ago, Mathy said: Hello guys Back in the days, somebody I knew had two seven segment displays (or a dual seven segment display) in his 1050 where the power switch used to be. IIRC the power LED (which was no longer needed) was replaced with a push switch. It looked like it could have come from Atari that way. Sincerely Mathy Clever! Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted May 3, 2022 Share Posted May 3, 2022 16 hours ago, Chri O. said: Cool ? I've got one going also ? Very nice, your a bit further along than me ? Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 4, 2022 Share Posted May 4, 2022 Formatting disk on 1050 with track display ?. 20220503_213002.mp4 5 Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 4, 2022 Share Posted May 4, 2022 (edited) Note: This sketch was tested on Teensy 4.0 /********************************************************************* MIT License Copyright (c) [2022] [Chris O.] Atari 1050 - Track Display, ver 01. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *********************************************************************/ // https://github.com/wonho-maker/Adafruit_SH1106 /********************************************************************* Change the adafruit SSD1306 to SH1106 SH1106 driver don't provide several functions such as scroll commands. *********************************************************************/ // Teensy SH1106 driver fix https://forum.pjrc.com/threads/68174-OLED-problems const byte VER = 1; const byte interruptPin_NS01 = 2; // NS01 @ U2 ic pin 2, NOT USED FOR interrupt. const byte interruptPin_NS02 = 3; // NS02 @ U2 ic pin 7 const byte interruptPin_NS03 = 4; // NS03 @ U3 ic pin 2 NOT USED FOR interrupt. const byte interruptPin_NS04 = 5; // NS04 @ U3 ic pin 7 const byte N_TRACK00_Pin = 6; // Q5 @ R#59 Track 00 sensor. volatile byte Tcount = 0; byte NewTcount = Tcount; byte OldTcount = Tcount; #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SH1106.h> // OLED 1.30" @ I2C addr. 0x3C #define OLED_RESET -1 // -1, NO RESET Adafruit_SH1106 display(OLED_RESET); #define LOGO16_GLCD_HEIGHT 16 #define LOGO16_GLCD_WIDTH 16 static const unsigned char PROGMEM logo16_glcd_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 }; void setup() { Serial.begin(9600); // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) display.begin(SH1106_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64), SH1106 addr 0x3C. // init done // Show image buffer on the display hardware. // Since the buffer is intialized with an Adafruit splashscreen // internally, this will display the splashscreen. display.display(); delay(1000); // Clear the buffer. display.clearDisplay(); // Show the display buffer on the hardware. // NOTE: You _must_ call display after making any drawing commands // to make them visible on the display hardware! display.display(); Serial.println("Basic 1050 Track Display Test:"); display.setTextSize(2); // display.setTextColor(WHITE); display.setTextColor(BLACK, WHITE); // 'inverted' text display.setCursor(0, 5); display.println("Atari 1050"); // display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(10, 30); display.println("Track Display Test"); // display.setCursor(10, 55); display.print("V.0"); display.println(VER); display.display(); // display setup for loop() display.clearDisplay(); display.setCursor(5, 5); display.setTextSize(9); pinMode(N_TRACK00_Pin, INPUT_PULLUP); pinMode(interruptPin_NS01, INPUT_PULLUP); pinMode(interruptPin_NS02, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin_NS02), IRQ_NS02, RISING); //RISING, CHANGE, FALLING pinMode(interruptPin_NS03, INPUT_PULLUP); pinMode(interruptPin_NS04, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin_NS04), IRQ_NS04, RISING); //RISING, CHANGE, FALLING } void loop() { noInterrupts(); NewTcount = Tcount; interrupts(); if (digitalReadFast(N_TRACK00_Pin) == HIGH) { // if Track 0 sensor @5volts then set TRACK count to 0 NewTcount = 0; } if (OldTcount != NewTcount) { OldTcount = NewTcount; display.clearDisplay(); display.setCursor(10, 4); if (NewTcount < 10) { display.print("0"); } display.print(NewTcount); display.display(); } } void IRQ_NS02() { if (digitalReadFast(interruptPin_NS01) == HIGH) { Tcount ++; } else { Tcount --; } Serial.print("T NS02 :"); // debug print Serial.println(Tcount); // debug print } void IRQ_NS04() { if (digitalReadFast(interruptPin_NS03) == HIGH) { Tcount ++; } else { Tcount --; } Serial.print("T NS04 :"); // debug print Serial.println(Tcount); // debug print } TODO: draw schematics. EDIT: For some reason I can't figure out why I can't edit the code in Code tag ? Anyways in void loop() change: if (digitalReadFast(N_TRACK00_Pin) == HIGH) { // if Track 0 sensor @5volts then set TRACK count to 0 NewTcount = 0; } to: if (digitalReadFast(N_TRACK00_Pin) == HIGH) { // if Track 0 sensor @5volts then set TRACK count to 0 NewTcount = 0; noInterrupts(); Tcount = 0; interrupts(); } Edited May 4, 2022 by Chri O. BUG FIX 1 Quote Link to comment Share on other sites More sharing options...
Chri O. Posted May 4, 2022 Share Posted May 4, 2022 Atari 1050 - Track Display schematic diagram. 1 Quote Link to comment Share on other sites More sharing options...
macsonny Posted May 4, 2022 Author Share Posted May 4, 2022 (edited) 2 hours ago, Chri O. said: Atari 1050 - Track Display schematic diagram. Fantastic! Edited May 4, 2022 by macsonny Edits Quote Link to comment Share on other sites More sharing options...
macsonny Posted May 4, 2022 Author Share Posted May 4, 2022 (edited) Can you just explain J1_1050 please? I assume you mean they are the pins connected to the various IC's on the 1050 board right? Edited May 4, 2022 by macsonny Double post Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted May 4, 2022 Share Posted May 4, 2022 (edited) Those connections will be to the 4 motor phase outputs from the 6532 to the U2 and U3 chips that drive the stepper motor the white one is from the Track 0 sensor @Chri O. thank you for sharing your scope traces, and code, I hadn't had time to scope my 1050 yet, but your code isn't far from what I would probably have ended up with. Great Job.? Edit: Just tried to compile the code to my hardware, with some adjustments to the display driver, also the Pico doesn't support DigitalReadFast, so just changed those, it compiled fine, will have to make some adjustments for the display text, it's a bit small but I have Atari 1050, a little garbled text (I think due to small font) and at the bottom V.01. Next step, after fixing the display output is get it into a 1050. I've not used a Teensy, they seem to be a bit pricey, what frequency does the core runs at, just in case I get some timing issues with the Pico. Edited May 4, 2022 by TGB1718 Update: Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.