88-VI/RTC operation question

General discussions related to the Altair 8800 Clone

88-VI/RTC operation question

Postby JNZ » September 2nd, 2015, 1:08 am

I've been trying to get the emulated 88-VI RTC board working in my Altair Clone, and I've been using the instructions in the provided MITS manual. However, I can't seem to find any information about how to actually set it to use the 60 Hz line frequency and change the divider. The example code tells me to strap it with a 60 Hz / 1 rate, but all I can find is a table that describes them, not information about which address controls this. It makes me yearn for my lovely Atmel datasheets.

As I understand it, the process is to have a JMP to an interrupt service routine at 070q, which should jump into the address of START: in the program they provide. The interrupt cycle in the 8080 will interrupt my normal program, push the PC onto the stack, fetch an opcode at 070q, JMP to START:, and hit a RET and pop the PC out. Is that right? The time itself will be updated every interrupt cycle and stored at 0x1FF4 - 0x1FF7.

Now, this 070q is determined by which RST instruction the 88-VI board picks, right? In the admin configuration menu it says I'm using int. vector 1 for my RTC board. Is it looking at some other address?

I think the only thing I'm missing is getting the interrupt to actually happen. I'm calling the provided INIT: manually, which puts 0xF0 out on 0xFE to initialize the RTC, then enables interrupts and returns.
JNZ
 
Posts: 32
Joined: March 13th, 2015, 1:13 pm

Re: 88-VI/RTC operation question

Postby toml_12953 » September 2nd, 2015, 7:05 am

In the actual board, you have to hardwire the Altair in order to bring +16 v 60 Hz to pin 55 of the bus. You also have to jumper S to LF for 60 cps or CF for 10000 cps. I'm not sure if the Clone allows you to specify which input to use. I don't see an option in the Setup menus for it and I don't know the default. Maybe Mike can add the option to choose the source frequency (hint, hint!) If not then it would be good to know which one it actually uses.

Tom L
toml_12953
 
Posts: 297
Joined: June 7th, 2013, 12:54 pm

Re: 88-VI/RTC operation question

Postby Caterman » September 2nd, 2015, 9:47 am

This is interesting:-
Attachments
88-VI-RTC-tech-inf.jpg
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: 88-VI/RTC operation question

Postby JNZ » September 2nd, 2015, 10:26 am

That seems to indicate that the memory locations for the interrupts are 010, 020, ..., 070. So perhaps my JMP START needs to be at 010, since the admin menu says I'm on interrupt one...
JNZ
 
Posts: 32
Joined: March 13th, 2015, 1:13 pm

Re: 88-VI/RTC operation question

Postby AltairClone » September 2nd, 2015, 10:57 am

The Altair Clone has the 88-VI/RTC "jumpered" for 60hz interrupts. No other frequency options are currently provided.

The example clock code in the 88-VI/RTC manual assumes the RTC interrupt of the 88-VI/RTC is strapped to VI7, so in the Clone configuration menu, you'll need to set the interrupt vector for the RTC to 7 instead of 1. Then the code should work as shown.

If you want to run at interrupt level 1, you'll have to change several other bytes in the sample, so I'd just change the vector to 7 for now.

Mike
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am

Re: 88-VI/RTC operation question

Postby toml_12953 » September 2nd, 2015, 2:36 pm

AltairClone wrote:The Altair Clone has the 88-VI/RTC "jumpered" for 60hz interrupts. No other frequency options are currently provided.


Does "currently" that mean that the other frequency option (10000 cps) is possible in the future? Anything that increases the compatibility of the Clone with the actual Altair hardware is most certainly welcomed!

Tom L
toml_12953
 
Posts: 297
Joined: June 7th, 2013, 12:54 pm

Re: 88-VI/RTC operation question

Postby AltairClone » September 2nd, 2015, 9:14 pm

The real board can be strapped for 60 hz, 10 kHz, 1 kHz, 100 Hz or 10 Hz. If I'm going to update it, I should probably allow all of these settings. Anybody have a need for frequencies other than 60 hz?

Mike
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am

Re: 88-VI/RTC operation question

Postby toml_12953 » September 3rd, 2015, 1:59 am

AltairClone wrote:The real board can be strapped for 60 hz, 10 kHz, 1 kHz, 100 Hz or 10 Hz. If I'm going to update it, I should probably allow all of these settings. Anybody have a need for frequencies other than 60 hz?

Mike


Those other frequencies make it easier to do time calculations. I'd probably use at least one of them.
toml_12953
 
Posts: 297
Joined: June 7th, 2013, 12:54 pm

Re: 88-VI/RTC operation question

Postby JNZ » September 3rd, 2015, 5:53 pm

AltairClone wrote:...The example clock code in the 88-VI/RTC manual assumes the RTC interrupt of the 88-VI/RTC is strapped to VI7, so in the Clone configuration menu, you'll need to set the interrupt vector for the RTC to 7 instead of 1. Then the code should work as shown...


Thanks, Mike. I've made this change but I'm dealing with some other bugs in my program. I adapted the BASIC instructions from the MITS manual to assembly, as I have more fun that way, but it's taken me an extra day or two.

I'm encountering a situation where my program consistently hangs DDT in CP/M 2.2 on both the Altair Clone and SIMH. I'm probably doing something stupid.

The code that causes it is here, with the exception of a reference to SETUP, which is defined after this code, at 013E.

Code: Select all
;   ORG    17673Q
   ORG   100h
SETUP:
   PUSH   H
   PUSH   B
   MOV   B,A
   MVI   A,303q   ;070q to JMP START
   STA   070q
   LXI   H,START
   MOV   A,L
   STA   071q
   MOV   A,H
   STA   072q
   MOV   A,B
   POP   B
   POP   H
...


DDT appears to halt after executing MOV A,L. Here's an example session:

Code: Select all
A>ddt rtc.hex
DDT VERS 2.2
NEXT  PC
01E9 0000
-xp
P=0000 100
-l100
  0100  PUSH H
  0101  PUSH B
  0102  MOV  B,A
  0103  MVI  A,C3
  0105  STA  0038
  0108  LXI  H,013E
  010B  MOV  A,L
  010C  STA  0039
  010F  MOV  A,H
  0110  STA  003A
  0113  MOV  A,B
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 PUSH H*0101
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=00FE P=0101 PUSH B*0102
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=00FC P=0102 MOV  B,A*0103
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=00FC P=0103 MVI  A,C3*0105
-u
C0Z0M0E0I0 A=C3 B=0000 D=0000 H=0000 S=00FC P=0105 STA  0038*0108
-u
C0Z0M0E0I0 A=C3 B=0000 D=0000 H=0000 S=00FC P=0108 LXI  H,013E*010B
-u
C0Z0M0E0I0 A=C3 B=0000 D=0000 H=013E S=00FC P=010B MOV  A,L*010C
-u
C0Z0M0E0I0 A=3E B=0000 D=0000 H=013E S=00FC P=010C STA  0039


When I don't run this in DDT, it seems to get further.

Though a bit off topic, does anyone have any ideas? Thanks.
JNZ
 
Posts: 32
Joined: March 13th, 2015, 1:13 pm

Re: 88-VI/RTC operation question

Postby AltairClone » September 3rd, 2015, 6:40 pm

DDT uses RST7 to regain control from break points (including single step operation). As soon as you store an address LSB into 39h, you've broken DDT single step.

Mike
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am

Next

Return to General Discussions

Who is online

Users browsing this forum: No registered users and 19 guests

cron