5t4nd1ng @ th3 3dg3 0f 5p3ct4t10n!
Welcome to Walt Perko's Brainless.org-anizm
HOME . . . . .
R U a Member of the S-100 Google Group . |
|
After the modems connect, hold the ENTER key down until CBBS Responds |
|
|
|
|
|
|
. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
An Altair 8800c Computer Running CBBS with an 88-2SIOJP S-100 circuit board . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I hope these notes can help others to setup their own little BBSes using the world's first BBS program "CBBS" from 1976. . . .
| This project took several days and a ton of work effort by a friend Patrick, to help me get the BBS up 'n running. .
We first tried to get CBBS running on my IMSAI-JAIR computer which has an IMSAI mini-Front Panel and a J.A.I.R. single board S-100 computer circuit board.
| As it turns out, this normally would be a project for the designer of the J.A.I.R. board to rewrite the boards CP/M BIOS to accommodate the needed functions. . . ..
So, after a couple of weeks of beating on the IMSAI-JAIR computer, my friend Patrick decided we should try using my Altair 8800c computer and see if we can't
| get that working correctly first. . . . The Altair 8800c computer consists of just a few S-100 boards making it a good affordable computer for vintage (retro) computing hobbyists.
| The assembly of the Altair 8800c is simple and somewhat documented on my own website: https://www.brainless.org/Altair/Altair8800c/index.html . . . . . as well as the FarmTek website: (https://deramp.com/altair_8800c.html)
| First, there is the reproduction MITS Altair 8800 Front Panel board with all the LEDs and switches, then comes the Front Panel Interface board which connects the front . . . panel to the S-100 buss, then a reproduction MITS CPU BD board, then the Martin Eberhard 88-2SIOJP board and finally the FarmTek FDC+ board.
| On the PC side I'm running the FarmTek FDC+ Serial Drive Software program that connects the computer to four floppy drives that I can swap out on the fly, as . . . it uses the .DSK emulated floppy disks.
| The first task was to get dial-up terminal programs working on both computers. Patrick reconfigured a few of the early terminal program; MODEM7, MODEM2-S, . . . MODEM740 and IMP245.
| All of the programs now run perfectly with the Altair 8800c computer. He also fixed a version of IMP245 for the IMSAI-JAIR. . . . (https://www.brainless.org/Altair/Repository.html#section14)
| These programs allow the console serial port Port 0 to function as normal while utility serial port Port 1 is connected to the modem. . . . . .
I have a US Robotics 56K FAX modem on my Altair 8800c although Patrick wants me to get a HAYES 300 or 1200 SMARTMODEM to be more "vintage".
| I'll get one when I can find a reasonable priced HAYES online. . . . . .
| In the meantime, with dial up terminals working on both computers Patrick learned more about the Martin Eberhard 88-2SIOJP dual serial board so he could start . . . assembling the CBBS program for the Altair 8800c . . . it took a half-dozen configurations and tests, but he got it all figured out sending me each test to try on
my hardware (he lives in a state far east of where I live in Las Vegas).
| . . . The following notes will help anybody with an Altair 8800c computer and almost any modem get CBBS up 'n running to dabble in 1976 vintage computing.
| Setting Up the Martin Eberhard 88-2SIOJP board . . . . .
First Set Jumpers as follows:
| J1 = 4-5 . . . J2 = OPEN
J3 = 3-4
| J4 = OPEN . . . J5 = OPEN
J6 = OPEN
| J7 = OPEN . . . J8 = OPEN
J9 = OPEN
| J10 = OPEN . . . J11 = OPEN
J12 = OPEN
| J13 = 2-3 . . . J14 = OPEN
| Then set Port 1 DIP switch to 1200 bps: . . . . .
I use the console serial port, Port 0 set at 9600 BAUD to be period compatible to connect to both my PC/TeraTerm terminal program or the various other terminals
| I have (LILYGO TTGO ESP32 ADM-3A, VersaTerm, FabGL ESP32 VT-100 etc. all connected to thrift store supplied VGA monitors and PS/2 keyboards.) . . . . .
On the far right of Figure 01, you can see the serial port DIP switch for Port 1 on the Martin Eberhard 88-2SIOJP board. You can see the various BAUD rates available
| to the serial ports. The Port 1 BAUD setting should be at 1200 as in Figure 01. . . . . .
After Reinserting the 88-2SIOJP board back into the Altair 8800c computer, the next step is to setup the modem for CBBS operations.
| . . . (A personal note here: Why don't engineers design and install DIP switches so UP/CLOSED is ON and OFF/OPEN is DOWN to somewhat match simple Boolean/binary logic?)
| The 4004 (Photo: Thomas Nguyen, CC BY-SA 4.0, via Wikimedia Commons) . . . . .
|
The chip inventors and manufactures realized there needed to be a cost-effective way to identify PIN 1 of the thousands of chips that they knew would be coming.
| Why didn't the manufacturers of the DIP switches have those smarts too? Simple make a small notch and/or dot to identify PIN 1 as the bottom left PIN on the . . . DIP switch as OPEN?
| I even asked A.I. about that; . . . . .
Question: In Boolean logic, is up ON or OFF? A 1 or a 0?
| . . . Answer: In Boolean logic, "up" or "ON" is typically represented as a logic level of "1," which is equivalent to "true" or "high." Conversely, "down" or "OFF"
is represented as a logic level of "0," which is equivalent to "false" or "low." These conventions are commonly used in digital electronics and computer science to
| represent the binary values of true and false, or on and off. . . . . .
Setting the Switches on the back of the US Robotics 56K FAX Modem
| . . . On the back of the US Robotics modem I have there is a set of DIP switches that need to be configured as in the following image.
SW1 - UP (OFF)
| SW2 - UP (OFF) . . . SW3 - DOWN (ON)
SW4 - UP (OFF)
| SW5 - UP (OFF) . . . SW6 - UP (OFF)
SW7 - UP (OFF)
| SW8 - DOWN (ON) . . . . .
|
You can see the switch definitions on the bottom of the modem;
| US Robotics 56K FAX Modem Switch Definitions . . . . .
|
Now we need to assemble two special RS-232 cables to go from Port 0 (Altair 8800c console port) to the terminal or PC/TeraTerm terminal and Port 1 of the Altair 8800c
| 88-2SIOJP board to the modem to account for DCD so the modem can know when to hang-up the phone line when carrier is dropped. . . . . .
Cable SetUp for Altair 8800c Port 0
| CONSOLE CABLE: . . . Isolate CONSOLE Port 0 so MODEM Port 1 has DCD Control
| PIN 3 Tx -----> PIN 2 Rx . . . PIN 7 GND <----> PIN 7 GND
|
|
Cable SetUp for Altair 8800c Port 1
| MODEM CABLE: . . . 2SIO-JP (PORT 1) to MODEM (DB25)
| PIN 3 Tx -----> PIN 2 Rx . . . PIN 5 RTS -----> PIN 20 DTR
| PIN 20 DCD <----- PIN 8 DCD . . . . .
|
|
Getting the US Robotics 56K FAX Modem SetUp
| . . . With the 88-2SIOJP DIP switch set to 1200 bps we connect our special home-made RS-232 cable to the modem, then send an initialization string to limit the
US Robotics 56K FAX modem to connect only at 1200 BAUD.
| US Robotics 56K FAX Modem 1200 BAUD INIT $tring: . . . AT &F0 E0 Q2 S0=1 X4 Y0 &B0 &C1 &D2 &K0 &N2 &U2 &W0
| Getting the Altair 8800c Front Panel Switches Ready to BOOT CBBS . . .
Standard BOOT to Directly into the CBBS BBS:
| . . .
| CBBS Front Panel Switch BOOTing Options:
| A15 = UP - Enable modem DCD and data checks in BIOS . . . . .
BOOT to the CP/M Prompt:
| . . . A12 + A11 + A11 + A10 + A9 + A8 = UP
| . . .
Now, with everything setup correctly, cables are correct and connected it's time to do some testing.
| . . . Running the 2SIOTEST.COM
I started with TeraTerm on my PC connected to Port 0 (Altair 8800c console port) and having two phone lines this made it easy for me to test CBBS.
| . . . The CBBS program by default runs from a normal BOOT to the floppy so in order to run the 2SIOTEST program I need to BOOT to CP/M.
Set the front panel switches as so:
| . . .
On the front panel switches:
| . . . . .
After the setting the BOOT address with the "EXAMINE" switch I then set the front panel switches as follows;
| . . . . . A12 + A11 + A11 + A10 + A9 + A8 = UP
| On the terminal screen you should see: (red text is what you type in to proceed) . . .
56K CP/M 2.2b v1.2
| For Altair 8Mb Serial Drive . . . CBBS for modem on 2SIO Port B
| A1>2SIOTEST . . .
CBBS Test Program Version 0.1B
| For MITS 88-2SIO Port 1/B . . . Test 1: Checking DCD LOW
Test 1: PASSED
| Test 2: Is TR light on modem OFF? YES . . . Test 2: PASSED
Test 3: Is TR light on modem ON? YES
| Test 3: PASSED . . . Test 4: Checking CTS HIGH
Test 4: PASSED
| Test 5: Checking DCD HIGH . . . . . . . . . . . Dial into the CBBS modem from a remote modem.
[at this point I dial into the computer from my other computer running the imp245 terminal program]
| . . . . . . . . Waiting for carrier from modem...press any key to abort . . . . . Test 5: PASSED
Test 6: Did you see the "CBBS TEST" on the remote terminal? YES
| Test 6: PASSED . . . Test 7: Follow instructions on remote terminal.
| . . . . . . . . Waiting for response...press any key to abort . . . Test 7: PASSED
Test 8: Hang up modem with DTR
| . . . . . . . . Waiting for carrier to drop...press any key to abort . . . Test 8: PASSED
ALL TESTS PASSED
| . . . . .
2SIOTEST Responses on my Terminal, MY IMSAI-JAIR Terminal Computer
| . . . Again, running TeraTerm on my PC and a HAYES SMARTMODEM 1200 connected to my second phone line.
b>IMP | IMP v245 modem pgm (type M for Menu) . . . Copyright (c) 1985, 1987 Irvin M. Hoff
Version for JAIR port 20H
| Modem speed is: 1200 bps . . .
B>COMMAND: T | . . . ATDT3055159858
CONNECT
| . . . . . CBBS TEST
Test 7: Enter the sum of 2 and 6: 8 | . . . . . CBBS System Files to Customize
I used the "Notepad ++" Text Editor on my PC to alter the files (I also use Notepad ++ for MBASIC Programming to eliminate oddities from the regular
| Windows Notepad program.) . . . BULLETIN
FIRSTIME
| NEWS . . . PASSWORD
WELCOME
| . . .
| Canned & Ready to Go SetUp . . . . . CBBS-Altair8800c.zip .
| . . . . .
|
. |
CBBS + Altair 8800c + PMMI Modem |
Probably the Future CBBS . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
CBBS on J.A.I.R. SD Card and PMMI S-100 board Modem |
|
Before Going Live
First you need to edit these files to customize them to your BBS . . . Your Location, Your Hardware etc. |
BULLETIN
FIRSTIME NEWS |
PASSWORD
WELCOME . |
Standard BOOT to Directly into the CBBS BBS: . . .
|
BOOT to the CP/M Prompt:
|
|
|
Key IMP245 Downloading Commands . |
COMMAND: TCC
COMMAND: T . . . ATDT phone number |
LogIN ... Goto Files "M"enu "R" to Receive a file
COMMAND: R filename . |
Canned & Ready to Go SetUp: . . . . . JAIR-CBBS-Canned.zip . |
Before Going Live
First you need to edit these files to customize them to your BBS . . . Your Location, Your Hardware etc. |
BULLETIN
FIRSTIME . . . NEWS |
PASSWORD
WELCOME . . . |
. . . . . |
. . . . . |
. . . . . |
. . . . . |
. . . . . |
. . . . . |
CBBS on J.A.I.R. using COM2 to an External Modem |
Hopefully the Future CBBS . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
CBBS on J.A.I.R. using the FDC+ Serial Drive Server |
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
55555555555 |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
777777777 |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
88888888 |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
888888888888 |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |
TITLE
????? . . . . . |