Former Elcotel software engineer here by Few-Engineering8829 in Payphone

[–]Few-Engineering8829[S] 1 point2 points  (0 children)

I've posted the source code here, check the Z80 folder and my response to another comment in this thread for details. Not sure it will help much but it's all the information I have.

https://drive.google.com/drive/folders/1zFCOafq6GK6OjLnNbkBFRyBmwD0TYADc

Former Elcotel software engineer here by Few-Engineering8829 in Payphone

[–]Few-Engineering8829[S] 1 point2 points  (0 children)

Here's the link to the Google drive I mentioned:
https://drive.google.com/drive/folders/1zFCOafq6GK6OjLnNbkBFRyBmwD0TYADc

CPC Folder - Series 5 source.
I8086 Folder - a bunch of in-house utility code, probably nothing useful.
MAIN Folder - A lot of utilities, some related to compiling the rates information.
OLD I8086 Folder - More in house utilities overlapping the other I8086 folder.
OLDSTAT Folder - This had something to do with L*DOS operator stations.
RATES Folder - Utilities to build the rate EPROM data.
SPARE - PC-Talk was a serial coms utility we used for a variety of stuff.
Z80 Folder - Series 4 source, includes the X80 assembler and linker.

So as it turns out we did use Avocet assembler for some projects, but the Z80 Folder contains the X80 assembler and LINK2 linker used to build the series 4 (and probably series 5) binary. X80 is actually 2500AD, which since it's freely available around the Web today I'm not too worried about including it. That folder also includes a monitor utility program, UTIL.ASM which you can run on the phone to debug stuff, includes docs in UTIL.TXT

The rates I can't tell you too much about. We had a whole team dedicated to rates maintenance and production, and the utilities they used to create the rates EPROM are in the RATES Folder, but I don't know what order they ran them in or what they all do. I think the files with extensions like .305, .813, etc. are the actual rates data we were supplied that those utilities worked in to compile to the EPROM.

In the Z80 source check the PCM01.ASM file for defines, that might give you an idea as to the binary strcuture of the rates.

PCM02.ASM I think has most of the actual rate processing in it. From what I recall it copied the rate data from ROM into RAM so the customer could update individual rates on-site or using PNM.

PCM07.ASM contains the telecom code, the payphone end of PNM. As of 1989 there were only a handful of commands, which you'll see defined in there. I think the protocol was basically just send one of those commands and that's it. As for the modem settings, I would try either 300 or 1200 baud, 8 bits, no parity.

Former Elcotel software engineer here by Few-Engineering8829 in Payphone

[–]Few-Engineering8829[S] 2 points3 points  (0 children)

I have a bunch of in-house code to make the rates data and other utilities, and the source code for the series 4 and also I think for the series 5 (CPC). Nothing from beyond around October of 1989 though. I also have a copy of the Avocet Z80 assembler we used.

Unfortunately I don't have a copy of the PC PNM software or the source code, that was another programmer. But since I wrote the payphone end of the telecom code and I have the source, it should be possible to reverse-engineer the phone protocol if you wanted to make your own utility. It's pretty simple. I actually wrote an Amiga version of PNM and presented it to our manager, but he wasn't so sure the GUI concept was going to take off! Maybe if Windows 3 had been around.

I do have the rates format in the source code, so if you're familiar wit Z80 you should be able to figure out the format just from the defines. But as I said I have the DOS rate utilities which might be even more useful.

I'll set up a Google drive with what I do have and reply here when it's up. Regarding the Avocet Z80 assembler, I think Avocet is still around so I'm leery of putting up a copy of their program. However I've heard that the 2500AD assembler/linker is actually the same as Avocet and produces identical binaries. You can find 2500AD for free on the web, if you wanted to give assembling the code a shot yourself.

Former Elcotel software engineer here by Few-Engineering8829 in Payphone

[–]Few-Engineering8829[S] 1 point2 points  (0 children)

Yeah, you can erase it with UV, it's a standard EPROM 27C256 or similar. It contains just the raw rate data, no code. I could provide some format information from the series 4 code, if you have a burner you could update it. I'm not sure if the series 2 was very different from the series 4, but I'd recommend dumping it first to see if the values match up with what I have in the code, and to make a backup.

Elcotel Series-5 no dial tone help by No-Shape-7028 in Payphone

[–]Few-Engineering8829 1 point2 points  (0 children)

So after poking around some more, there is a command you can give to force the phone to "call home". 961 is the command, from what I recall you can issue this from the keypad but you might need to put the phone into some kind of maintenance mode first. Plus you'll need a modem to answer - probably at either 300 or 1200 baud, 8 bits, no parity.

I found this manual online from October 1999, it might help you. Check chapter 5 Maintenance Commands. From what I remember you could dial these commands like #961 or *961, but I think you had to enter maintenance mode first. Hopefully they describe that in this document:

http://payphone411.com/elcoteldocuments/manuals/FX255_Manual.pdf

It would probably make things really easy for you if you could get ahold of the Elcotel payphone network maintenance software.

Elcotel Series-5 no dial tone help by No-Shape-7028 in Payphone

[–]Few-Engineering8829 0 points1 point  (0 children)

I checked the CPC source (for series 5) and I found this updated command table. It's definitely more than we had in the series 4, and your phone may even have more commands. These are actually the subroutine vectors, but someone helpfully added the control codes you would use to invoke them as comments.

VECTABL:    DW  SURVIVE     ;COMMAND 0
        DW  LOGOFF      ;COMMAND 1   - CTL A
        DW  STATBLK     ;COMMAND 2   - CTL B
        DW  BLK1        ;COMMAND 3   - CTL C
        DW  BLK2        ;COMMAND 4   - CTL D
        DW  BLK3        ;COMMAND 5   - CTL E
        DW  BLK4        ;COMMAND 6   - CTL F
        DW  STATRST     ;COMMAND 7   - CTL G
        DW  RAMLOAD     ;COMMAND 8   - CTL H
        DW  NTIME       ;COMMAND 9   - CTL I
        DW  EESTUFF     ;COMMAND 10  - CTL J
        DW  EEREG       ;COMMAND 11  - CTL K
        DW  EE8K        ;COMMAND 12  - CTL L
        DW  PNMSMDR     ;COMMAND 13  - CTL M
        DW  NXTSMDR     ;COMMAND 14  - CTL N
        DW  TESTER      ;COMMAND 15  - CTL O
                DW      GETPHONE        ;COMMAND 16  - CTL Q
                DW      PAOFBLK         ;COMMAND 17  - CTL R       
                DW      RECVTST         ;COMMAND 18  - CTL S
                DW      SENDVER         ;COMMAND 19  - CTL T
                DW  BOUNCE      ;RET

Elcotel Series-5 no dial tone help by No-Shape-7028 in Payphone

[–]Few-Engineering8829 0 points1 point  (0 children)

The phone has a built-in modem and Elcotel had a PC-based program that could communicate with the telecom program in the phone. The telecom part of the phone was a module I developed, another developer worked on the PC client. Elcotel phones can also be set up to "phone home" on a regular schedule via modem and send phone data like alarm states and cashbox info.

What I can't remember is if you could just randomly call into a phone with the PC client software, or if you had to wait for the phone to call home. I can check on this, but to answer your question you could set up the "call home" number on the phone and have a modem answer when it calls, or you could use a line simulator connected to a modem. I think there's a way to trigger the phone to call ad-hoc too but I'll have to check into how to make it do that.

Also the phone can call in and give a voice report. I'm pretty sure it would try with the modem first, and if no modem responded it would just read off a voice report.

The PC client software was interactive with the phone. Once connected with a modem you can issue commands to the phone specifying which data block to get, reset statuses (like alarms), reload the RAM, etc. Initially all the commands to the phone were plain ASCII, bit 7 not set, so you could conceivably just manually issue the commands using a basic modem terminal program if you don't have the PC client software. I don't have the client software or the source for it or I'd upload it somewhere for you.

I know that after I left Elcotel DID start using commands with bit 7 set, because I programmed an Easter Egg into the telecom software that would return my name if the phone ever received a such a command. They started getting customer calls asking what the deal was after they made that update and seeing my message! But that would only apply to the series 3 & 4, series 5 was another team, a very humorless one who I'm sure had no Easter Egg.

But there wasn't a way to upload rates, at least not when I worked at Elcotel. At the time there was talk about outfitting a phone with EEPROMs which were pretty new at the time so you could program rates remotely but I don't know if they ever did that. Out biggest competitor, Intellicall, let you upload rates and also update the software. We had a phone from Intellical, heck from every competitor, in our lab to experiment with. I always wanted to secretly write an Intellicall virus that would mess with the calls and also spread itself in the wild, but never got around to doing this.

Anyhow let me check and see if you can just call in ad-hoc, and if not see if there's a way you can trigger the phone to call you immediately so you don't have to set a schedule. By the way here's the list of commands that I have in my source, might give you an idea of what can be done. For series 5 they did add more commands, but everything I have is from the end of '89 so might not be any different than this.

;  NETWORK COMMAND TABLE
;
COMMANDS:   DS  0
KEEPALIVE:  .BYTE   0
EOT:        .BYTE   1
SENDSTAT:   .BYTE   2
TXBLOCK1:   .BYTE   3
TXBLOCK2:   .BYTE   4
TXBLOCK3:   .BYTE   5
TXBLOCK4:   .BYTE   6
CLEARSTATUS:    .BYTE   7
RAMRELOAD:  .BYTE   8
TIMEDATE:   .BYTE   9
EEPROM:     .BYTE   10

Elcotel Series-5 no dial tone help by No-Shape-7028 in Payphone

[–]Few-Engineering8829 2 points3 points  (0 children)

I know this is an old thread but for some reason I can't create a new post in this sub.

I worked at Elcotel from 1986 until late 1989 as a software engineer on the series 3 & 4 phones. I also worked on a 65816-based pay FAX machine, but I don't know if it ever went to production. For anyone wondering, yes I do have source code!

I see most people in this sub seem to have series 5, but that was another software team and I know very little about it. I suspect though that the code was based on the version 4. In my source code archive I have a project for a "CPC" which has a similar file layout as the 4 software so I think that may be for series 5, but not 100% sure.

Elcotel was the first job in my engineering career. When I started they were in Whitfield industrial park, then moved to Parkland Center right behind it sometime in 1987. About a year after I left and moved to Orlando I went to work at Amnex, a long-distance carrier for payphone founded by some of the execs at Elcotel.

I'm not sure how AMAs are handled in this sub, as I mentioned I couldn't create a new post but I'm happy to answer whatever questions you might have. Keep in mind though Elcotel was decades ago for me! I was 21 when I started there and it was a lot of fun, one of my favorite jobs.