Null Phone Adapters for Sale

IMG_4031I am currently selling adapters that I have built that allow you to connect two computers together via modem’s without the need for any phone service. These are very simple to use:

  1. Plug phone cables into the adapter from the 2 computer’s modems
  2. Plug 9volt battery into adapter

From here you would just use the terminal programs (or BBS programs) you have on the 2 computers to get them to talk to each other.

To purchase one via eBay click here.

IMG_4029If you want a more permanent solution than the 9 volt battery you can replace it with a DC adapter, red is positive (+), black is negative. I have tested it with voltages from 4.5 volts up to 12 volts though I recommend sticking with 9 volt.

If you want to build one yourself you can look at this webpage for the details on how it works (http://www.jagshouse.com/modem.html). Parts wise you will end up spending about the same as I am selling them for.

To purchase one via eBay click here.

 

https://www.youtube.com/watch?v=i7zkYPUPjdU

Simple Receive command for CP/M binary files

I have written a simple CP/M program that relocates it self below the TPA and then will receive a hex file (created with the PC program attached called 2hex.com (this is a16 bit program)) and when done it will exit to the command prompt where you can then use SAVE ?? filename.ext to save the transfered binary program (converted from the hex file sent). Replace the ?? with the size of the original binary file / 256 and rounded up (the number of pages it uses). This uses the same procedure as the post on the modified Pip program for receiving files (see this post).

Click here for the files: cpmrcv.zip

       .org        0100H
; Move code to 050H
       ld          de,050H
       ld          hl,RelocStart
       ld          bc,RelocEnd - RelocStart
       ldir                     ; Code copied
       jp          050H         ;Execute

RelocStart:
       .org        050H
       ld          hl,0100H     ; Where we are storing the data
HighNib:
       call        ByteRead
       ld          (hl),a       ; Save the byte
       inc         hl
       ld          bc,(Size)
       inc         bc
       ld          (Size),bc
       jr          HighNib      ; Do more bytes
Size:
.db 0,0

; **** Subroutines ****

; Get a byte from 2 Hex butes
ByteRead:
       push       de
       call       HexByte
       rlca
       rlca
       rlca
       rlca
       and   240               ;Clear lower
       ld         d,a
       call       HexByte
       or         d
       pop        de
       ret

; Convert hex in A to byte
HexByte:
       call       ModIn
       sub        48
       cp         10
       jr         C,HexByte1
       sub        7
HexByte1:
       ret

; Send character in A out to screen
ConOut:
       push        af
       push        bc
       push        de
       push        hl
       ld          e,a
       ld          c,2
       call        5
       pop         hl
       pop         de
       pop         bc
       pop         af
       ret

; Check if a byte is available and return
; it in A. NC set if no character
ModIn:
       in          a,(05FH)     ; Read status
       rra                      ; Rotate RXREADY into CF
       rra
       jr          NC,ModIn     ; Wait for a byte
       in          a,(05EH)     ; Get character
       cp          26           ; Is it CTRL +Z
       jr          NZ,ModInExit ; no
       jp          0H           ; Done - quit
ModInExit:
       call        ConOut       ; Display Modem Byte
       cp          48           ; Is it less than "0"
       jr          C,ModIn      ; Yes get another byte
       ret
RelocEnd:

Direct connect Adam to PC via Adam Link Modem

This is relatively easy to do. This web page (http://www.jagshouse.com/modem.html) describes how to create a simple circuit to simulate a phone line. Once you have this you can plug the Adam Link modem into it and it into a PC. On the PC start HyperTerminal (or other terminal program).

To connect:

  1. On Adam set modem parameters using AdamLink to 8 characters, 1 stop bit, no parity
  2. On PC type ATE1X1 then enter to the modem. This will enable modem commands being echoed to screen and tells modem to ignore lack of dial tone
  3. On PC type ATDT123456789 then enter to dial modem, a long number gives you a few extra seconds to get to the Adam
  4. On Adam select Answer then select Online

Once you have connect the connection will remain if you reset the Adam to load CP/M or SmartBasic

CP/M PIP Mods

The following modifications to CP/M’s PIP will allow you to send and receive text files using the Adam Link modem:

At the CP/M prompt type DDT PIP.COM

Once loaded type S103

Type in the following data for each address starting at 103 (do not type in the address (ie 103:)):

103: C3 104: 15 105: 01 106: C3 107: 0A
108: 01 109: 00 10A: F5 10B: DB 10C: 5F
10D: 1F 10E: 30 10F: FB 110: 79 111: D3
112: 5E 113: F1 114: C9 115: F5 116: DB
117: 5F 118: 1F 119: 1F 11A: 30 11B: FA
11C: DB 11D: 5E 11E: 32 11F: 09 120: 01
121: F1 122: C9

Type CTRL+Z to exit modify and then type G0 and enter to exit DDT

At CP/M prompt type SAVE 62 PIP.COM

Once the save is complete you can now use CP/M to send and receive files via the Adam Link modem.

To do this follow these steps:

Once you have a modem connection via Adam Link software, remove the DDP and put in your CP/M DDP and reset system (Adam Link modem will remain connected).

Once your are in CP/M:

  1. To send a text file use:
    PIP out:=filename[e]
  2. To receive a text file use:
    PIP filename=inp:[e]Once the DDP has stopped moving and PIP is showing a cursor send the text file from the remote system. After the text file is done type CTRL+Z on remote system and PIP will save the file.

You can eliminate the [e] if you do not want the transfer being echoed to the screen.

Here is the source code for the modifications to PIP

       .org        0103H
Inp:
       jp          ModIn
Out:
       jp          ModOut

CharIn:                 ; Data storage
.db    0

; Send character in C out to modem
ModOut:
       push        af
ModOutLoop:
       in          a,(05FH)
       rra
       jr          NC,ModOutLoop
       ld          a,c
       out         (05EH),a
       pop         af
       ret

; Wait for byte from modem and store it in 0109H and return
ModIn:
       push        af
ModInLoop:
       in          a,(05FH)    ; Read status
       rra                     ; Rotate RXREADY into CF
       rra
       jr          NC,ModInLoop
       in          a,(05EH)    ; Get character
       ld          (CharIn),a
       pop         af
       ret

	

Replacement Adam Keyboard Cable

rj11After a little research I realized that the keyboard cable is not wired like most cables.

Standard six wire phone cable:

1 ------> 1
2 ------> 2
3 ------> 3
4 ------> 4
5 ------> 5
6 ------> 6

Adam keyboard cable:

1 ------> 6
2 ------> 5
3 ------> 4
4 ------> 3
5 ------> 2
6 ------> 1

I had to make a new cable for an Adam that I purchased that didn’t have one and wiring it like this just fine.