text:
Oberon/ETH Oberon/QEMUinstall

Installing ETH Oberon using the QEMU Hypervisor
This method has proven successful in installing ETH Oberon to a variety of laptop and desktop machines including a Micron Trek 2, AGP laptop. The instructions can be adapted to other virtual machines.

After installation and configuration on a storage medium, the system can be used routinely on a native machine. Alternatively, use can continue on the virtual machine. In the native case, a network connection will be over Ethernet or a serial crossover cable. In the virtual machine case, a network connection uses a TAP or bridge interface connected to the host system.

Terminology
Installation host is the machine where installation is performed using the hypervisor. Target machine is the machine where ETH Oberon is to be used after installation is completed. This can be the bare x86 PC or a hypervisor presenting an x86 PC environment. Target storage device or Target device is the device where Oberon is to be installed and used. When ETH Oberon works on the hypervisor, any device it supports can be used. When ETH Oberon works directly on the bare machine, devices are limited to available device drivers. Consequently, for ETH Oberon on the bare machine, a disk drive or Compact Flash card connected by PATA or a USB flash store connected by OHCI will work. With ETH Oberon lacking drivers for SATA, UHCI, EHCI and xHCI, devices with these interfaces will not work on the bare machine. QEMU supports most devices. Target volume is a volume of a partitioned target device.

Generalities
To illustrate, the following example refers to QEMU running on Linux with installer /home/me/OberonCF0.Dsk. Device names are illustrative. Do not attempt to use an example verbatim. Adapt to your requirement.

In the installation host, the target device has a name such as /dev/sdX where X is "b" or "c" or some other letter. Alternatively, it might have a SYMLINK name assigned with a udev rule. A name such as /dev/KingstonCF for example. KERNEL=="sd?", ATTR{size}=="1018080", SYMLINK+="KingstonCF" Where systemd is used, the name can be assigned by a systemd .link file. The Oberon0 installer uses PATA device names. A target device may be IDE0 with target volume IDE0#05. Again, these are examples only. In another case, the device can be IDE1 with volume IDE1#02. CAUTION: a typographical error in the device identifier can allow catastrophic damage to the file system of the installation host. Identify devices carefully. Type carefully.

Hardware
Specific hardware is addressed in the Hardware Compatibility List.

If the target machine is not the installation host, move the target device to the installation host. In most cases the target device will connect via a 40 or 44 conductor ribbon cable. A 44 pin laptop drive can be connected to a desktop machine using an adapter. ETH Oberon has limited support for USB and the installation may not succeed for a USB target device. That includes a USB flash drive and a disk drive or memory card connected by a USB adapter.

Storage
In this installation method, ETH Oberon requires a dedicated target volume of the target device. In Linux, a volume can be created with fdisk, parted or gparted. In other systems, other disk manipulators are available. For the complete stock ETH Oberon system on a PC, at least 50 MiB should be allocated; 100 MiB will simplify operations during installation and maintenance. Typically, user specific working files will be in a separate volume mounted with a name such as FAT, HOME, usr or WORK.

Display
By direct inspection or by using software, determine the display capabilities of the target machine. In Linux, lspci identifies most video hardware. In addition to the video chipset, knowledge of the VESA BIOS Extensions can be helpful.

Hypervisor
Install QEMU on the host where the installation process is to be performed. Complete system emulation is used. In Debian jessie install the qemu-system-x86 package.

Installer Image
Retrieve an Oberon0 installer image file from Sourceforge. OberonCF0.Dsk includes support for Compact Flash and is recommended. Oberon0.Dsk, also there, is the last image published at ETH. It lacks support for CF; otherwise the two images are identical.

Installer Execution
Start the installer. Access to drives requires root authority. Log in as root or use sudo. CAUTION: "sdc" and "KingstonCF" are illustrative. Adjust according to your specific requirement. This command is for root executing the installer image in file OberonCF0.Dsk. qemu-system-i386 \ -drive file=/home/me/OberonCF0.Dsk,if=floppy,format=raw \ -drive file=/dev/KingstonCF,if=ide,format=raw \ -boot order=a This for a real diskette, write-protected. qemu-system-i386 \ -drive file=/dev/fd0,if=floppy,format=raw,readonly \ -drive file=/dev/KingstonCF,if=ide,format=raw \ -boot order=a Risk of damage to a file system in the installation host is mitigated by QEMU restricting access to devices specified in the qemu command. Refer to the QEMU manual page in the installation host or online or to the QEMU manual. Access to a host drive is also discussed in a Linux Suse page. If "format=raw" is omitted, QEMU will produce an error message.

Trial and error may be necessary to establish correct parameters. A shell function can be helpful. etho { qemu-system-i386 \ -drive file=/home/me/OberonCF0.Dsk,if=floppy,format=raw \ -drive file=/dev/KingstonCF,if=ide,format=raw \ -boot order=a ; }

Oberon0 Installer Usage
Oberon0 will present a sequence of commands, each of which can be executed with a click of the middle mouse button. Text is selected by dragging with the right mouse button. Consult the original installation instructions for details.

1. Select a disk driver ...
MM on Config.Disk for chosen driver.

2. Select and prepare the partition:
Open InstallFiles.Tool with MM on Edit.Open. Type the option "detail" and execute. The intended target volume should be visible in the partition table displayed. In the present example the target volume is IDE0#05; not IDE0#00. Sensible type codes should appear in the fifth column. The type code for the whole target device and for each unallocated area will be "---". Any other volume should have a numerical type code. If "---" appears in the fifth column, the installer failed to read the partition table of the target device properly and successful installation will be impossible. In this case, exit QEMU, correct the problem and try again.

3. Finish Configuration:
Open Configure.Tool with MM on Edit.Open. Choose a display mode according to the previously established information. If no chipset-specific driver is suitable, set a VESA mode. In case the chosen mode fails, another mode is easily tested.

Record the configuration by following instructions in Part 2.

To leave the installer, type and execute System.Quit or use ++ to release the mouse pointer and then use QEMU > Machine > Quit.

Testing and Troubleshooting
If the hypervisor (QEMU) supports the configured video, the newly installed system can be tested directly. qemu-system-i386 \ -drive file=/dev/KingstonCF,index=1,media=disk,format=raw \ -vga std -boot order=c Otherwise test in the target machine. If installation was successful and configuration was correct, ETH Oberon will appear momentarily. Otherwise, refer to troubleshooting instructions. The discussion under Partition management with Oberon, subheading "Troubleshooting a boot problem with this command" is also relevant. To revise the video configuration, run QEMU again and mount the target volume. In this example MM on FileSystem.Mount DST AosFS IDE0#05 ~ MM on Edit.Open Configure.Tool try another Config.Display ... and MM on Config.BootPartition menu ~ again. If using VESA video, test again under the hypervisor. The BIOS might allow booting from a device other than the primary master. Where the drive is installed in the machine as IDE1 and is recognized in the installer as IDE0 the value for the BootVol config string can be edited when the machine boots. To troubleshoot a more difficult problem, record a trace in a file. qemu-system-i386 \ -hda file=/dev/KingstonCF,index=1,media=disk,format=raw \ -serial file:QemuOberonTrace \ -vga std -boot order=c,menu=on Boot option "menu=on" allows interaction. After grabbing the QEMU screen, set <Scroll Lock> and set these Trace config strings. TracePort=1 TraceBPS=115200 For additional details, refer to Tracing. The most powerful troubleshooting method is with a terminal connected by a serial crossover cable. The terminal emulator in a second Oberon system is a possibility.

If the installation host is not the target machine, replace the target device in the target machine and test again. ETH Oberon is a very robust software. With a little persistence it can run on almost any i386 or later PC.

Additional Software
Software beyond Oberon0 is distributed in Zip archive files Apps1.zip, Apps2.zip, Docu.zip, Gadgets.zip, Pr3Fonts.zip, Pr6Fonts.zip, Source1.zip, Source2.zip and Source3.zip. Also, for the specific task of rebuilding the system, files Build.zip, SourceB.zip and System.zip. For the Alpha release, all of these are in archive NativeOberon_2.3.7.tar.gz, available in Sourceforge. In a Unix-like system, the following procedure will obtain these zip files. Commands are executed in a console. mkdir /Oberon2.3.7 Using any Web browser, retrieve NativeOberon_2.3.7.tar.gz, approximately 12 MiB, from Sourceforge into the Oberon2.3.7 directory. cd /Oberon2.3.7 ls gunzip NativeOberon_2.3.7.tar.gz tar -xvf NativeOberon_2.3.7.tar more readme.txt Copy all the zip files to the SYS volume of the Oberon system. A FAT file system on a CompactFlash card, a USB flash drive or a diskette can transfer the data. A more sophisticated method is to establish a network connection and transfer the files by FTP.
 * 1) Confirm existence of the gz archive.
 * 1) Unzip and untar.
 * 1) Read the ETH license.

In Oberon, MM on these commands to unpack the archives into the SYS volume. FileSystem.SetDefault SYS ZipTool.ExtractAll Apps1.zip Apps2.zip Docu.zip Gadgets.zip Pr3Fonts.zip Pr6Fonts.zip Source1.zip Source2.zip Source3.zip ~ The Build directory contains files required for rebuilding the system. ls /Oberon2.3.7/Build/* Build.zip SourceB.zip  System.zip If required these can also be copied to the SYS volume and extracted. ZipTool.ExtractAll Build.zip SourceB.zip System.zip ~ Then revert to the working volume. FileSystem.SetDefault YourWorkingVolume ~

Boot Manager
If the target machine, real or virtual, has more than one operating system, a boot manager will be needed.

System Configuration
Fundamental configurations are represented by configuration strings allowing specification of the display driver for example. The boot loader allows access to these strings.

At a higher level, system configuration is in the file Oberon.Text. In the freshly installed base system this file is specifically SYS:Oberon.Text. Two subtleties can confuse the novice.   * Syntax in Oberon.Text is critical. If a closing bracket "}" is inadvertently removed, some information following the error will be ineffective. Take care in editing Oberon.Text.   * A storage volume additional to SYS can contain an Oberon.Text. Only the first-prioritized copy of the file has effect. For example, consider a system installed and configured with HOME prioritized before SYS. The first execution of ET.Open Oberon.Text will open SYS:Oberon.Text. After editing, ET.Store will store HOME:Oberon.Text. After reboot, SYS:Oberon.Text will remain but HOME:Oberon.Text will have effect; HOME:Oberon.Text will mask SYS:Oberon.Text. Ambiguity can be avoided by specifying a volume. ET.Open SYS:Oberon.Text ET.Open HOME:Oberon.Text

Communications Environment
Oberon on a native machine can connect to the Internet through a wired router. A more flexible connection can be provided by a Linux router. In any case the LAN should have a firewall. With a Linux router, Shorewall is recommended. ETH Oberon supports these communications.

Network Connection on a Real Machine
With the base system working, configure a network connection. ETH Oberon supports wired Ethernet with a static IP address. Wireless and DHCP are not supported. In absence of an Ethernet connection, PPP over an RS-232 crossover cable (null modem) is also possible. Refer to the Oberon.Text and NIC pages.

PPP
The original PPP for XOberon was written by Martin Aeschlimann and Claude Knaus. Edgar Schwarz ported to ETH Oberon / PC Native.

The syntax of Oberon.Text allows multiple Devices, Device0 ... Device9. In ETH Oberon 05.01.2003 the maximal number of Devices, MaxDevices, is set in NetBase.Mod to 2. This limit can be increased to 10 at most, with subsequent recompilation of NetBase.Mod. Multiple Devices allow the use of various network hardware and protocol options without changing Oberon.Text. For example Oberon.Text might define these three Devices. Device0 = { "PPPMain.InstPPP", "COM1"} Device1 = { "PPPMain.InstPPP", "COM2 \silent"} Device2 = { "Net3Com509.InstallDevice", "" } This allows noisy invocation of PPP, Dialer.Dial DIAL Device0 ~ and "silent" invocation. Dialer.Dial DIAL Device1 ~ Device2 allows for an Ethernet connection. Note that two different PPPs can not be installed on the same COM port and that NetBase.Mod must be recompiled with MaxDevices* = 3 or more for this example to work.

PPP Troubleshooting
Begin at the lowest level, the crossover cable or modem, and work to the highest level, the browser, mail handler and etc.

A modem has two speeds: interface and modulation. The interface speed is between the computer and the modem. The modulation speed is between the modem and the telephone network. Unless referring specifically to the interface, specifications usually refer to the modulation speed.

The interface speed of an internal modem or computer serial port is set in Oberon.Text in a DIAL script as in this example. Init = { COM1 57600 }	{* modem port and speed *} As can be seen in V24.Start, allowed values of this speed are whole divisors of 115200 b/s. Hence, Oberon allows these speeds for the interface. 115200 57600  38400  19200  14400 The maximal interface speed of a modem is usually higher than the modulation speed.

An external modem connects to a serial port and buffering is an issue. An internal modem connects directly to the system bus. Buffering between computer and internal modem is not an issue or is less critical than with an external modem. Perhaps someone who knows about buses and modem circuitry can elaborate.

The interface speed should be set in the dial script to min(p, m) where p is the highest speed at which the the serial port of the computer can operate and m is the highest speed at which the serial port of the modem can operate. Some of the old IDE I/O cards used in desktop PCs were not reliable above 9600 b/s! Serial ports in laptop PCs are buffered better. My old Toshiba Satellite T2100 operates reliably at 38400 b/s; never tested 57600 b/s.

In absence of specifications, the interface speed can be set empirically. Try one of these settings. If communication fails, adjust to a slower speed. Modulation     Interface 14400          19200    28800           38400    57600           57600 Before attempting to make a DIAL script, try the V24.Panel. Execute. Desktops.OpenDoc V24.Panel Set the interface speed in the window. Parameters are COM port, interface speed, bits/byte, number of stop bits, parity. Click the Open button. Key in the modem initialization. For the majority of cases, ATZ will work. More information about initialization is available in the Kermit documentation and elsewhere on the Web.

After the modem acknowledges initialization, in most cases with OK, key a dial command. Eg. ATD T5392157 The T invokes tone rather than pulse dialing. After a few to several seconds you should see a response from the remote system. If it allows a "terminal" or "dialup" connection you should get a prompt such as "login: ". In any case, you will at least have established that your modem can communicate with the remote modem.

The next objective is to obtain a working DIAL script. It can be built up step by step. Rather than assume the characters which will be returned by the remote system, begin with something such as this, adapted to your environment. Replace "GulfNet" with any name you fancy, set the COM port and speed in Init and replace 5392157 with the number for your server.

{* This is for the Motorola MODMSURFR *} GulfNet = { Init = { COM1 38400 }	{* modem port and speed *} Dial = { "ATZ" 10 "OK" "ATD T5392101" 60 "ZZ" }

"ZZ" is unlikely to be returned by the local modem, the remote modem or the remote system. Consequently the script just waits for all characters returned within 60 seconds. The System.Log will show the complete reply. Move it to the user track for easier reading. Choose a string of characters from the reply which indicates unambiguously, completion of the modem-modem connection. For example. {|ATD T5392101||CONNECT 38400|~ ...

The strange characters beginning with ~ are the the PPP negotiations. The modem-modem connection is identified by "CONNECT 38400". Hence, "ZZ" in the script can be replaced with "400". This is a dial script. {* This for a Motorola MODMSURFR *} GulfNet3 = { Init = { COM1 38400 }	{* modem port and speed *} Dial = { "ATZ" 10 "OK" "ATD T5392101" 60 "400"  CALL "PPPMain.StartInst GulfNet3 peter" } } If the server does not prompt for a userid and password it should expect PAP (Password Authentication Protocol) authentication.

Network Connection on a Virtual Machine Using a Bridge
A configured bridge interface is required in the host. In Debian Linux, install the cron and bridge-utils packages. apt install cron bridge-utils This line in /etc/crontab should create interface br0. @reboot root ip link add br0 type bridge Check that the bridge exists. ip link show br0 4: br0:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 92:e0:54:07:2a:e2 brd ff:ff:ff:ff:ff:ff Without the bridge, this method will fail. The name "br0" is arbitrary, provided consistency with the br option in the qemu command, with the name in /etc/network/interfaces and with the name in the /etc/qemu-ifup script. If there is difficulty creating the interface, assistance might be obtained from an enquiry in the Oberon mailing list or in the qemu-discuss list.

In most Linux systems, a stanza similar to this in /etc/network/interfaces will configure the extant bridge. auto br0 iface br0 inet static address 10.0.2.1 broadcast 10.0.2.255 netmask 255.255.255.0
 * 1) Bridge to qemu guest.

"10.0.2.1" is a IPv4 private IP address chosen by the designer of the particular LAN. Successful configuration can be verified interactively as in this example. user@qemuhost:/home/user$ ip addr show br0 6: br0:  mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 10.0.2.1/24 brd 10.0.2.255 scope global br0 valid_lft forever preferred_lft forever

During system startup, if the network happens to be configured before the bridge is created, the bridge won't work for the Oberon guest. The bridge can be raised interactively. ifup br0 or ip link set br0 up

When qemu is executed it attempts to create tap0 and to configure it, connected to the existing bridge. The qemu command requires the tap option which requires root priviledge. sudo qemu-system-i386 \ -drive file=/dev/KingstonCF,index=1,media=disk,format=raw \ -vga std -boot order=c \ -nic tap,script=/etc/qemu-ifup.variant,model=ne2k_pci,br=br0 /etc/qemu-ifup.variant is a script which QEMU invokes to create and configure the tap interface. The user can change the name and content of the script according to requirements. Default routing in the QEMU host is reported by ip. user@qemuhost:/home/user$ ip route show | grep default default via 10.0.2.1 dev wlxe894f6248326 The /etc/qemu-ifup provided in Debian 11 assumes the bridge should connect to the default route. Script qemu-ifup.variant was suggested in the qemu-discuss list at 2021-03-17 by Berto Furth to identify the bridge explicitly. bridge=br0 ip=$(which ip) echo $0 connecting $1 to $bridge ip link set "$1" up ip link set "$1" master "$bridge" exit For a bridge name other than br0, "br=br0" should be adjusted. The script must be executable; use chmod if required. chmod a+x /etc/qemu-ifup.variant
 * 1) ! /bin/sh
 * 2) qemu-ifup.variant script which will be invoked by qemu to produce a tap interface.
 * 1) Specify the preexisting bridge interface which the tap will connect to.

The installed /etc/qemu-ifup should be preserved for reference and to avoid disruption by a package update. The null /etc/qemu-ifdown provided by Debian can remain as installed.

Oberon has software drivers for 3COM and Ne2000 NICs; not for the QEMU default e1000 NIC. QEMU lacks support for 3COM. Therefore the qemu command includes "model=ne2k_pci".

The tap option will require superuser authentication when QEMU is executed.

In the Oberon guest, configuration is in Oberon.Text. NetSystem = { Hosts = { ...      Device0 = { "NetNe2000.InstallDevice", "" } ...  Route0 = { Device = "Device0" Mode = "arp" Host = { "OberonSystem", "10.0.2.2" } Gateway = { "QemuHostSystem", "10.0.2.1" } Netmask = { "netmask", "255.255.255.0" } } }

Observe that in the subnetwork 10.0.2.0/24 the bridge in the QEMU host has address 10.0.2.1 and the Oberon guest has address 10.0.2.2. Again, these private addresses can be adjusted according to design of the particular LAN. In any case the host bridge and guest will be on one subnetwork, in this example 10.0.2.0/24.

Installation Complete
Further assistance is available via the mailing list.

title: Oberon/ETH Oberon/QEMUinstall


text:
Oberon/ETH Oberon/2.3.7/Dialer.Mod

(* ETH Oberon, Copyright 1990-2003 Computer Systems Institute, ETH Zurich, CH-8092 Zurich. Refer to the license.txt file provided with this distribution. *) MODULE Dialer;	(** non-portable *)	(* 26.08.96 mg *) IMPORT Oberon, NetSystem, Strings, Texts, Input, V24, NetBase, Modules, TextFrames; CONST RI = 5; DCD = 6;	(* input *) Service = "dialup"; GrabPort = TRUE;	(* take over com port by force, if already in use *) VAR W: Texts.Writer; script: Oberon.Task; host: ARRAY 64 OF CHAR; waitStr: ARRAY 32 OF CHAR; waitPos: INTEGER; waitTime: LONGINT; err, open: BOOLEAN; S: Texts.Scanner; port: INTEGER; dev: NetBase.Device; PROCEDURE Delay (i: LONGINT); VAR t: LONGINT; BEGIN t := Input.Time; WHILE Input.Time - t < i DO END END Delay; PROCEDURE Hang(port: INTEGER); BEGIN V24.ClearMC(port, {V24.DTR}); Delay(Input.TimeUnit DIV 6); V24.SetMC(port, {V24.DTR}) END Hang; PROCEDURE InitComPort (port: INTEGER; baud: LONGINT); VAR ok: BOOLEAN; res: LONGINT; BEGIN ok := TRUE; V24.Start(port, baud, 8, V24.ParNo, 1, res); IF GrabPort & (res = 1) THEN V24.Stop(port); V24.Start(port, baud, 8, V24.ParNo, 1, res) END; ok := FALSE; IF res = 0 THEN ok := TRUE ELSIF res = 3 THEN Texts.WriteString(W,"Dialer: Baudrate not supported"); Texts.WriteLn(W) ELSIF res = 1 THEN Texts.WriteString(W,"Dialer: Port already in use"); Texts.WriteLn(W) ELSE Texts.WriteString(W,"Dialer: Init error "); Texts.WriteInt(W, res, 1); Texts.WriteLn(W) END; Texts.Append(Oberon.Log, W.buf); IF ~ok THEN err := TRUE END END InitComPort; PROCEDURE SendStr(str: ARRAY OF CHAR); VAR ch: CHAR; i: INTEGER;  res: LONGINT; BEGIN i := 0; WHILE str[i] # 0X DO ch := str[i]; IF ch = "~" THEN Delay(300) ELSE V24.Send(port, ch, res) END; INC(i) END; V24.Send(port, 0DX, res) END SendStr; PROCEDURE WaitStr(str: ARRAY OF CHAR; timeOut: LONGINT); BEGIN COPY(str, waitStr); waitPos := 0; waitTime := Input.Time + timeOut END WaitStr; PROCEDURE StartLine; BEGIN IF open THEN Texts.Write(W, "}"); open := FALSE END; Texts.WriteLn(W) END StartLine; PROCEDURE SendUser(use: BOOLEAN; VAR err: BOOLEAN); VAR user, passwd: ARRAY 64 OF CHAR; BEGIN user := ""; NetSystem.GetPassword(Service, host, user, passwd); IF (user # "") & (passwd # "") THEN StartLine; Texts.WriteString(W, "Sending "); IF use THEN Texts.WriteString(W, "USER ["); Texts.WriteString(W, user);  SendStr(user) ELSE Texts.WriteString(W, "PASSWORD [not printed"); SendStr(passwd) END; Texts.WriteString(W, "]"); Texts.Append(Oberon.Log, W.buf); Texts.Scan(S) ELSE StartLine; Texts.WriteString(W, "NetSystem.SetUser "); Texts.WriteString(W, Service); Texts.WriteString(W, ": @ ~ required"); err := TRUE END END SendUser; PROCEDURE Call(cmd: ARRAY OF CHAR); VAR F: TextFrames.Frame; par: Oberon.ParList;  T: Texts.Text; BEGIN IF Oberon.Par = NIL THEN par := NIL ELSE NEW(par); par^ := Oberon.Par^ END; NEW(T); Texts.Open(T, ""); Texts.WriteString(W, cmd); Texts.WriteLn(W); Texts.Append(T, W.buf); F := TextFrames.NewText(T, 0); TextFrames.Call(F, 0, FALSE); IF (par # NIL) & (Oberon.Par # NIL) THEN Oberon.Par^ := par^ END END Call; PROCEDURE DoScript(me: Oberon.Task); VAR timo, res: LONGINT; any: BOOLEAN;  ch: CHAR; BEGIN err := FALSE; IF waitPos >= 0 THEN	(* wait for response *) any := FALSE; WHILE (waitPos >= 0) & (V24.Available(port) > 0) DO 			any := TRUE; V24.Receive(port, ch, res); IF ch = 0AX THEN (* skip *) ELSIF ch = 0DX THEN Texts.Write(W, "|") ELSIF (ch >= 20X) & (ch <= 7EX) THEN Texts.Write(W, ch) ELSE Texts.Write(W, CHR(147)) END; IF waitPos >= 0 THEN IF CAP(ch) = CAP(waitStr[waitPos]) THEN INC(waitPos); IF waitStr[waitPos] = 0X THEN waitPos := -1 END	(* matched! *) ELSE waitPos := 0	(* restart *) END END END; IF any THEN Texts.Append(Oberon.Log, W.buf) END; IF (waitPos >= 0) & (Input.Time - waitTime > 0) THEN StartLine; Texts.WriteString(W, "Dialer: Timed out"); err := TRUE END ELSE	(* execute next script statement *) IF S.class = Texts.Name THEN IF S.s = "USER" THEN SendUser(TRUE, err) ELSIF S.s = "PASSWORD" THEN SendUser(FALSE, err) ELSIF S.s = "START" THEN StartLine; Texts.WriteString(W, "Enabling device");  Texts.Append(Oberon.Log, W.buf); IF (dev # NIL) & (dev.state = NetBase.pending) THEN dev.state := NetBase.open END; dev := NIL; Texts.Scan(S) ELSIF S.s = "CALL" THEN Texts.Scan(S); IF (S.class = Texts.String) OR (S.class = Texts.Name) THEN StartLine; Texts.WriteString(W, "Calling [");  Texts.WriteString(W, S.s); Texts.WriteString(W, "]"); Texts.Append(Oberon.Log, W.buf); Call(S.s); Texts.Scan(S) ELSE StartLine; Texts.WriteString(W, "Dialer: Command expected after CALL"); err := TRUE END ELSE StartLine; Texts.WriteString(W, "Dialer: Unknown keyword [");  Texts.WriteString(W, S.s); Texts.Write(W, "]"); err := TRUE END ELSIF S.class = Texts.String THEN StartLine; Texts.WriteString(W, "Sending [");  Texts.WriteString(W, S.s); Texts.WriteString(W, "]"); Texts.Append(Oberon.Log, W.buf); SendStr(S.s); Texts.Scan(S) ELSIF S.class = Texts.Int THEN timo := S.i * Input.TimeUnit; Texts.Scan(S); IF S.class = Texts.String THEN StartLine; Texts.WriteString(W, "Waiting ");  Texts.WriteInt(W, timo DIV Input.TimeUnit, 1); Texts.WriteString(W, "s for [");  Texts.WriteString(W, S.s);  Texts.WriteString(W, "] {"); open := TRUE; Texts.Append(Oberon.Log, W.buf); WaitStr(S.s, timo); Texts.Scan(S) ELSE StartLine; Texts.WriteString(W, "Dialer: Wait string expected after integer"); err := TRUE END ELSIF S.class = Texts.Char THEN IF S.c = "}" THEN StartLine; Texts.WriteString(W, "End of script"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); Oberon.Remove(script); script := NIL;  dev := NIL ELSE StartLine; Texts.WriteString(W, "Dialer: Unexpected character in script"); err := TRUE END ELSE HALT(99) END END; IF err THEN Oberon.Remove(script); script := NIL;  dev := NIL; Hang(port); Texts.WriteLn(W); Texts.WriteString(W, "Dialer: Script aborted"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END END DoScript; PROCEDURE GetDevice(device: ARRAY OF CHAR; VAR devnum: LONGINT); BEGIN Strings.Lower(device, device); IF device = "default" THEN devnum := 0 ELSIF Strings.Prefix("device", device) & (device[6] >= "0") & (device[6] <= "9") & (device[7] = 0X) THEN devnum := ORD(device[6])-ORD("0") ELSE devnum := -1 END END GetDevice; PROCEDURE Dial*;	(** config device {config.Host is used to find password, config.Init for port, config.Dial for script} *) VAR S0: Texts.Scanner; prefix, path: ARRAY 64 OF CHAR;  err: BOOLEAN;  devnum: LONGINT; BEGIN err := FALSE; Texts.OpenScanner(S0, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S0); IF S0.class = Texts.Name THEN COPY(S0.s, prefix); COPY(prefix, host); Texts.Scan(S0); IF S0.class = Texts.Name THEN GetDevice(S0.s, devnum); dev := NetBase.FindDevice(devnum); IF dev # NIL THEN IF dev.state = NetBase.open THEN dev.state := NetBase.pending; Texts.WriteString(W, "Warning: "); Texts.WriteString(W, S0.s); Texts.WriteString(W, " device is already open"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END; COPY(prefix, path); Strings.Append(path, ".Init"); Oberon.OpenScanner(S, path); IF S.class = Texts.Name THEN IF S.s = "COM1" THEN port := V24.COM1 ELSIF S.s = "COM2" THEN port := V24.COM2 ELSIF S.s = "COM3" THEN port := V24.COM3 ELSIF S.s = "COM4" THEN port := V24.COM4 ELSE HALT(99) END; Texts.Scan(S); IF S.class = Texts.Int THEN InitComPort(port, S.i); COPY(prefix, path); Strings.Append(path, ".Dial"); Oberon.OpenScanner(S, path); IF script # NIL THEN Oberon.Remove(script) ELSE NEW(script) END; waitPos := -1; script.safe := FALSE; script.time := 0; script.handle := DoScript; Texts.WriteString(W, "Dial script started"); open := FALSE; Texts.Append(Oberon.Log, W.buf); Oberon.Install(script) ELSE Texts.WriteString(W, "Init syntax error"); err := TRUE END ELSE Texts.WriteString(W, "Init syntax error"); err := TRUE END ELSE Texts.WriteString(W, S0.s); Texts.WriteString(W, " device not found"); err := TRUE END ELSE Texts.WriteString(W, "Dial syntax error"); err := TRUE END ELSE Texts.WriteString(W, "Dial syntax error"); err := TRUE END; IF err THEN Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END END Dial; PROCEDURE GetPort(VAR port: INTEGER; VAR devnum: LONGINT); VAR S, R: Texts.Scanner; i: LONGINT; BEGIN devnum := -1; Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S); IF S.class = Texts.Name THEN Strings.Append(S.s, ".Init"); Oberon.OpenScanner(R, S.s); IF R.s = "COM1" THEN port := V24.COM1 ELSIF R.s = "COM2" THEN port := V24.COM2 ELSIF R.s = "COM3" THEN port := V24.COM3 ELSIF R.s = "COM4" THEN port := V24.COM4 ELSE HALT(99) END; Texts.Scan(S); IF S.class = Texts.Name THEN GetDevice(S.s, devnum) END ELSE HALT(99) END END GetPort; PROCEDURE Hangup*; VAR port: INTEGER; devnum: LONGINT; BEGIN GetPort(port, devnum); IF script # NIL THEN Texts.WriteLn(W); Texts.WriteString(W, "Script aborted"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); Oberon.Remove(script); script := NIL;  dev := NIL END; Hang(port) END Hangup; PROCEDURE State*; VAR port: INTEGER; devnum: LONGINT;  s: SET; BEGIN GetPort(port, devnum); V24.GetMC(port, s); IF DCD IN s THEN	(* carrier detected *) Texts.WriteString(W, "Modem on-line") ELSE Texts.WriteString(W, "Modem off-line") END; IF devnum # -1 THEN dev := NetBase.FindDevice(devnum); Texts.WriteString(W, ", device "); Texts.WriteInt(W, devnum, 1); IF dev = NIL THEN Texts.WriteString(W, " not installed") ELSE IF dev.state = NetBase.closed THEN Texts.WriteString(W, " closed") ELSIF dev.state = NetBase.open THEN Texts.WriteString(W, " open") ELSIF dev.state = NetBase.pending THEN Texts.WriteString(W, " link pending") ELSE Texts.WriteString(W, " in state"); Texts.WriteInt(W, dev.state, 1) END END END; Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END State; PROCEDURE Cleanup; BEGIN IF script # NIL THEN Oberon.Remove(script); script := NIL END END Cleanup; BEGIN Texts.OpenWriter(W); script := NIL; dev := NIL;  port := 1; Modules.InstallTermHandler(Cleanup) END Dialer. System.Free Dialer ~ NetSystem.SetUser dialup:pmullerppp@ETHPPP ~ Dialer.Dial ETHPPP default Dialer.State ETHPPP default Dialer.Hangup ETHPPP

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Oberon/ETH Oberon/2.3.7/Dialer.Mod


text: World Stamp Catalogue/Malaysia/1968

title: World Stamp Catalogue/Malaysia/1968


text: World Stamp Catalogue/Malaysia/1971

title: World Stamp Catalogue/Malaysia/1971


text: World Stamp Catalogue/Malaysia/1972

title: World Stamp Catalogue/Malaysia/1972


text:
User talk:Steve M

Just to say...
...thanks for all your Chess Opening Theory edits. -- Jules (Mrjulesd) 00:38, 28 March 2021 (UTC)

title: User talk:Steve M


text:
User talk:Chessops

Welcome!
Welcome to Wikibooks, Chessops!

 First steps tutorial Wikibooks is for collaborative development of free textbooks.

You do not need technical skills to contribute. You can easily change most books. Please introduce yourself, and let us know what interests you.

If you already contribute at other Wikimedia projects, our Wikimedia Orientation should quickly get you started. (Would you like to provide feedback on this message?)

  Getting help   Made a mistake?   Goodies, tips and tricks
 * Read the Using Wikibooks book for a friendly introduction to the project, or our help pages for more information.
 * You can get friendly help from the community in the user assistance room or our IRC channel.
 * Upload freely licensed files to Wikimedia Commons. You may request permission to upload fair use files locally. Please include author and source information and a non-free use rationale for non-free files.
 * You can restore a previously saved version.
 * Pages should follow the  naming convention.
 * Need to rename a page? Use the move tab (is available once your account is 4 days old - until then, ask for help).
 * To request a page be deleted, add to the top of the page.
 * Was a page you made deleted? Please read the deletion policy, and check the deletion log to find out why. Also check the RFD archives if applicable. You can request undeletion at WB:RFU, or ask the administrator who deleted the page.
 * Please fill in the edit summary and preview your edits before saving.
 * Sign your name on discussion pages by typing ~~~~
 * User scripts can make many tasks easier. Look at the Gadgets tab of my preferences; check off the boxes for the scripts you want, and hit save!

-- Jules (Mrjulesd) 01:09, 28 March 2021 (UTC)

title: User talk:Chessops


text:
Chess Opening Theory/1. f4/1...f5

The Symmetrical Variation
This is not a very popular line for Black because it can lead to a closed and relatively uneventful game if Black copies White's moves. This opening has only 40 games played by masters in the Lichess Master Database. There are two ways of playing this opening: 1. immediately disrupting the closeness with 2.e4, or 2. playing solidly and developing quietly.

Of note here is the Double Duck Formation, which is when White plays d4 and Black responds with d5.

Statistics

 * Approximate Chances
 * White wins 25%, Draws 43%, Loses 33%

title: Chess Opening Theory/1. f4/1...f5


text:
Wikibooks:Reading room/Proposals/2020/November

Repost: add features that support ebook writers better
I am reposting this proposal as the discussion got very long. It was to use Wikisource templating with:

 * optional narrow single column formats;
 * optional serif fonts for body text
 * Differing styles for headings and so on (not always underlines)
 * easy navigation bars (last page, next page)
 * optional export links to common ebook formats

 * s:Template:Default_layout » allows differing page layouts to be displayed by default;
 * s:Help:Layout » explains the layout system, which I don't understand behind the scenes however
 * s:Template:Larger » allows non-underlined headings of varying sizes
 * s:Template:Smaller » allows text of smaller sizes than body text
 * s:Template:Header » creates title display area with key info, plus navigation back / forward
 * s:la:Formula:Titulus » Creates a title area for a front page, also used by ebook exports for front page material AFAICT;
 * s:la:Formula:WSExport » Presents a series of export formats for a given book

I have added the details to:

 * User:JimKillock/Migrating ebook features

Where I will try to pull out the main points later.

I am very willing to have a go at some of this, if it is mostly migration of content as opposed to figuring out too much. With that in mind, I also had an idea to try this on Latin Wikibooks, as the content I want to create is mostly Latin-English texts. That could be simpler also as the project looks relatively undeveloped. JimKillock (discuss • contribs) 08:56, 2 November 2020 (UTC)
 * For what it's worth, I don't have access to the tools to import templates, etc. here on Wikibooks. I do support the idea of having better control of print-worthy copies of our material here but there's not a lot that I can do to actualize it. —Justin ( koavf ) ❤T☮C☺M☯ 09:05, 2 November 2020 (UTC)
 * Thank you! I am not sure how Latin wikibooks works with admin requests, but I imagine that whoever has the admin rights would be ok with us running through what is required there, so long as whoever is implementing it has sufficient technical skill. Perhaps a few of us could be granted rights and run through the process to get more familiar with it? JimKillock (discuss • contribs) 10:23, 2 November 2020 (UTC)
 * The situation at Latin wikibooks seems to be that there are currently no admins, so it is quite a moribund project. I can apply for adminship, but I wonder if this might be best done by someone here, or with somebody else's help? I will certainly need help to try all this out.  would either of you be willing to help me get this going? JimKillock (discuss • contribs) 19:54, 3 November 2020 (UTC)
 * You may want to ask a steward (which I am not). —Justin ( koavf ) ❤T☮C☺M☯ 20:14, 3 November 2020 (UTC)
 * Thanks, yes I can do that. Still it feels a bit wrong for me to take this on without help or admin experience. JimKillock (discuss • contribs) 21:43, 3 November 2020 (UTC)
 * I was asked on la:Vicilibri:Porta_communis by UV whether asking Wikimedia to implement the Wikisource features as a MediaWiki Extension would make sense. Can you let me know your thoughts, and if it is worthwhile, perhaps we can raise it (in whatever the relevant forum is). JimKillock (discuss • contribs) 10:11, 8 November 2020 (UTC)
 * I think that could make sense. —Justin ( koavf ) ❤T☮C☺M☯ 21:40, 8 November 2020 (UTC)
 * So the advice so far from Wikisource is that the templates are easy enough, but what gets complicated are the multiple layouts, which are done via Javascripts. They say the way to implement this is via creating a "gadget" with the relevant scripts, pulled out of their existing JS and CSS. If that is right, then it ought to be fairly simple to implement on Wikibooks? As I mentioned with a bit of help I would be very willing to help trial this on la.wikibooks if that helps also. JimKillock (discuss • contribs) 13:51, 14 November 2020 (UTC)
 * Gadgets are more complicated but I think that using la.wb as a kind of proving ground is a good strategy. —Justin ( koavf ) ❤T☮C☺M☯ 19:02, 14 November 2020 (UTC)
 * Further point: it has been pointed out to me by UV@la.wikibooks that if page layouts are editor chosen, then the whole JS issue goes away, and the pages layout changes can be applied via a template. if that is the case, then this should all be a lot simpler, ? JimKillock (discuss • contribs) 11:50, 15 November 2020 (UTC)
 * here is another use case for these features. Someone on this Wiki wants to annotate a Wikisource book, has copied it across to Economic Sophisms, porting the content, and thereby wants the templating features. JimKillock (discuss • contribs) 16:06, 18 November 2020 (UTC)

OK, now we are getting somewhere, albeit you may have a suggestion of a better way to do this. I have two templates, to open and close the divs which make the column, and a style sheet attached to the first.

 * la:Formula:NarrowColumn
 * la:Formula:NarrowColumn/Styles.css
 * la:Formula:NarrowColumnEnd
 * Demonstration at la:Usor:JimKillock/Formulae

The styles don't seem to be working out the serif fonts yet, but it is a while since I did CSS so I may be able to fix this.

The main question I have is: is there a better way to open and close the wrapper divs than using two separate templates, one to open them, and the other to close them? JimKillock (discuss • contribs) 15:05, 21 November 2020 (UTC)
 * I have the narrow columns plus text size templates working at Economic Sophisms and also at la:Usor:JimKillock/Formulae. I'll enquire about using the ebook exports (WSExport) next.
 * I am not happy about using two templates, one to open divs at Template:NarrowColumn and the other at Template:NarrowColumnEnd to close them. Do either of you have a better way to do this? JimKillock (discuss • contribs) 18:36, 26 November 2020 (UTC)
 * The only other approach that occurs to me atm is to have a single template call that takes as a parameter all the stuff that goes between the start and end of the div. That way, the simple template can generate start and end and all between.  The wiki syntax for that isn't wonderful, but then, the wiki syntax for using two separate templates was already not entirely pleasing either. --Pi zero (discuss • contribs) 19:11, 26 November 2020 (UTC)
 * Thanks I have got that to work copying from another simple template. JimKillock (discuss • contribs) 20:23, 26 November 2020 (UTC)

You know what I just remembered: the Community Wishlist Survey 2021 recently opened. This is an opportunity for you to present an idea to the community to vote on the priorities of the developers. —Justin ( koavf ) ❤T☮C☺M☯ 20:49, 26 November 2020 (UTC)

Proposal to remove WSExport support for ebook export from Wikibooks
There is a ticket on Phabricator to remove Wikibooks ebook export from WSExport. I can see why this has been raised – most Wikibooks are probably not easily exported to ebooks and the formatting could work very badly in many cases. I've suggested that it may be better to enable (or disable) export per book, depending on whether the Wikibook is going to export well or not. But I though best to mention. JimKillock (discuss • contribs) 22:14, 27 November 2020 (UTC)


text:
Transportation Deployment Casebook/2021/Illinois Streetcar

State Illinois located in the northwest of the US, sitting between the Mississippi River and the Great Lakes. The unique location had given it an edge in transportation development. Chicago, as the transportation terminal, had benefited the most. A large amount of immigration had led to great transport demand and market niche. Chicago experienced the transition of streetcars from horse-drawn to cable griped, to electric-powered, the streetcar system thrived from the 1860s to 1920s, but eventually gave way to the automobile, but its signature elevated rapid transit system maintained till today.

Early transport scene
The transportation history in state Illinois started from the construction of the Michigan Canal in the 1830s, which connected Lake Michigan with the Mississippi River. The canal made a great contribution to the local agricultural industry by providing the freshwater for farming, moreover, it ran as a busy freight route, the cargo included grains, livestock, and lumber, as a result, it made Chicago the biggest transportation terminal in Midwest US at that period.

Nevertheless, there is some limitation for canal transport. The canal operation can be restrained by extreme weather conditions, therefore the Michigan canal only operated 240 days per year and was closed throughout winter. Furthermore, the canal was mostly used for freight transport, the market niche of passenger transport remains unfilled.

Technology development
In 1854, the Rock Island railroad was built alongside the canal to run passenger transport. For transport in Chicago city, a horse-drawn omnibus was introduced in 1852, which is a large carriage capable of fitting 30 people. And in 1859, the first horse-railway in Chicago was built, it was a single-track rail, with one horse powering one coach. Thus the street railway system began to operate in the city. Soon the system developed a two horse-drawn, double-track railway. The animal-powered railway system has many limitations, the potential market for passenger transport is too large for street railway to catch up. Also, animals can only last few years of heavy work, and thousands of horses had left a large amount of manure on the street.

Therefore, the street railway system introduced cable cars in 1882 as the ‘Iron Horses’. Instead of hauled by horses, streetcars used a clutch to get dragged by the constantly moving cable buried underneath the rail. The cable was planted to form a circle so that a power station can provide grip and keep it running continuously. The powerhouse on Clark Street in Chicago equipped 4 steam engines, each bringing 500 horsepower to independent circles. Those circles formed the famous Chicago 'loop', which is the central business district, the combination of commerce, industry, and service. The success of the cable line had encouraged its extension, eventually it reached more than 80 miles and became the largest such system in the world.

Although electric streetcar was proved doable in 1888, they are not allowed to operate in Chicago until 1890 due to safety concerns. After 1890, people began to replace cable streetcars with electric streetcars for cheaper operational costs and larger capacity to accommodate more passengers.

Market development
Since the completion of the Michigan Canal in 1848, state Illinois had attracted a huge amount of freight and passenger traffic. Since then, Chicago had experienced a population boost. In 1850 its population is 29,963, ranked 24th in US, in the next decade following the operation of the Canal, this number had quadrupled to 112,172, ranked 9th in US. This is when the first horse-drawn streetcar was introduced in Chicago. The first market niche is providing fast and affordable passenger transport within the city.

By 1880, the population had reached 503,185, ranked 4th in US. Chicago has become one of the most crowded city in US, the increasing passenger transport demand provided a huge market niche, and horse streetcar cannot accommodate the need, thus cable streetcar fit in the market. By 1890, as Chicago population reached 1,099,850, ranked second in US, the streetcar also upgraded to electric powered to provide service to more people.

Along with the technology upgrade, more people were served by the streetcar system, and it helped to explore new markets. The city was able to expand because dwellers were willing to move to new suburbs with streetcar connections. Moreover, Real estate builders were keen to introduce a streetcar system to promote the selling. These positive influences had helped to develop the streetcar market.

Policy
After the Civil war, the federal government intended to form a strong central government, and to promote economic growth, it was determined to expand the railway network to more distant lands. The financing of this national enterprise came from both public and private sectors. The federal government adopted the promotion policy, which provides land grants for railroads to encourage private investigation.

The policy for streetcars followed this precursor model, the development and operation of street railways stayed a private and competitive enterprise from the beginning. Regulations were given so that only specific business activities were allowed. Franchises were also issued to specific operators to give permission to run in certain locations. The franchise was actually a permission of monopoly of operation, this was to compensate the private transit company due to the heavy initial investment on construction and facilities. Furthermore, regulations specified the fixed price among operators and the quality and quantity of the service, thus keeping the industry honest and transparent, and service affordable.

In Chicago, private sectors played an important role in forming the city transit system. The huge market niche had attracted many transit companies, all of them applied permits to lay track in districts with demand, as well as undeveloped areas where they see potential. Also, fierce competition drove companies to adopt new technologies and keep upgrading their system to provide better service. Thus the authority was also keen to grant franchise and pass ordinances.

Mature
Since more and more streetcar companies existed in Chicago, the streetcar system had been established in the city's West, North and South sides. In 1892, the first elevated passenger railway was constructed over the street on South side, and emulation followed in West and North sides in 1897. This is the famous 'L'(short for 'elevation')line in Chicago.

As the streetcar becoming increasingly important to the public, voices were arguing that key infrastructure should be owned by the public to provide better service but lower cost, and the transit business should be non-profitable. However, the scale of economy of transit companies was so large, it would take Chicago decades to afford to purchase and municipalize. Instead, a unified rate charge policy was issued in 1904 to keep the ride fare constant at 5 cents, and this policy continued for decades throughout World War II, despite the inflation and increasing operating cost. This had put much pressure on private transit companies.

This policy also leads to another issue. Different classes of passengers seek differentiated service, "You can't mix silk stocking with picks and shovels" quote from Chicago Railway President John Roach. Therefore, the streetcar used to have different arrangements according to class, under the direction streetcars were sent directly to CBD from middle-class neighborhood. The flat rate and unified arrangement have forced these wealthier class to seek other transit options to meet their demand.

Since early 1900s, automobile industry began to develop. And people who can afford a car tend to drive to commute. By 1920 the street was so crowded, and heavy traffic congestion has caused the streetcar system impossible to catch up with the schedule, hourly delays often occurred. To ease the traffic congestion, Chicago announced several traffic control policies. Streetcars were re-routed, left-turn was not allowed in CBD, restricted on-street parking, and increased facility for off-street parking, and coordinated traffic signal control. These regulations had been very effective and beneficial.

Struggle and survive
As the automobile industry thrived, the streetcar enterprise decline. From 1907 to 1937, over 340 million dollars from public sector were invested in street improvement and road pavement. For the streetcar system, in 1937 an engineering report points out that “the equipment was old, inadequate service produced dangerous overcrowding, and routes were obsolete”. The bad financial status of streetcar companies made it very hard for them to keep maintenance and upgrade the technology. Moreover, when the conductor reported decline of ridership, the streetcar company cut those lines to save costs, which increase the distance between each ride and increase the waiting time, and further deteriorate the situation. In addition, the old planning of rail cannot catch up with the expanding of the city, people cannot get to the destination directly, and result with 85% of passengers have to transfer on each trip.

These factors had led streetcar unfavorable over time. In 1947, the city of Chicago purchased the rapid transit company and other surface lines, then combine together forming the Chicago Transit Authority (CTA). Still, the transit business was asked to maintain financially self-sufficient, therefore the riders have to pay for all the maintenance and upgrades, which leads to increased ride fares and service cuts.

CTA tried a series of innovations to compete with driving. Funds were spent on new rail lines and upgrading infrastructure and vehicles. And to encourage transfer, CTA also pioneered the development of integrated transportation of rapid transit, buses and roadways. Furthermore, CTA tore down many old facilities and replaced with modernized version to attract customers; CTA also modernized its bus fleet with Liquefied Petroleum Gas (LPG) fuel, thus saving a large amount of operating cost. After all the efforts, still streetcars stopped the service and give way to automobile in 1958, but the 'L' rapid transit system and CTA survived.

Quantitative analysis
A detailed record of streetcar system operation data from 1894 to 1920 was given, including the population in each town, plant and equipment of each railway company. Data was extracted from state Illinois chapter, and in this analysis, the logistic curve model is used to describe the growth curve pattern. From the analysis, the life-cycle of the streetcar can be identified. Following is the explanation of the S-curve (status vs time).

$$\frac{f}{1-f}=e^{-at+b}$$

Note: f = S(t)/K

 * S(t) is the technology size (in this case the miles of track planted)
 * K is the final market size (need to be assumed at first, and use Excel Goal Seek to find the optimal value)
 * t refers to time

logarithm applied to both side:

$$\log{\frac{f}{1-f}}=-at+b$$

According to collected data, the left side of the equation can be worked out, so a Linear regression model can be applied to solve parameter a & b. Therefore, the predicted S curve can be expressed as followed:

$$S(t)=\frac{K}{1+e^{-a(t-ti)}}$$

Note:

 * ti is the midpoint of the lifecycle, where K/2 is reached ( ti = b/a )
 * Following is the graph that shows the difference between real data and prediction.

Illinois State streetcar running status:

Parameter Table As can be seen from the graph, the real developing speed of streetcar in state Illinois is faster than prediction, especially in the early 1900s, when the electric streetcar started to enter the market. According to the data, a lot of smaller town including Aurora, Peoria and Joliet began to equip their own streetcar system at that time. The developing speed decline in late 1910s.

Chicago streetcar running status:
Parameter Table The streetcar developing speed in Chicago remains strong during the study period, the historical document could reflect this as Chicago owned the largest streetcar network at that time, the streetcar mileage kept increasing as the city expanded. The curve is close to the forecast line and shows stability.

East St. Louis streetcar running status:
Parameter Table The scale of streetcar system in East St. Louis is much smaller than Chicago, but it shows a closer fit to logistic curve. The late midpoint time indicates that the development of streetcar is quite late in this town, but the developing speed is quick as can be seen from the graph.


text:
User:Trialpears

Hello! I'm a enwp editor who (very) occasionally checks in here. Feel free to look at my enwp User page.

title: User:Trialpears


text:
User:Trialpears/common.js

mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/lintHint/r.js&action=raw&bcache=1&maxage=86400&ctype=text/javascript" );

title: User:Trialpears/common.js


text:
User:Trialpears/sandbox

 |  |

title: User:Trialpears/sandbox


text:
User talk:Trialpears

Welcome!
Welcome to Wikibooks, Trialpears!

 First steps tutorial Wikibooks is for collaborative development of free textbooks.

You do not need technical skills to contribute. You can easily change most books. Please introduce yourself, and let us know what interests you.

If you already contribute at other Wikimedia projects, our Wikimedia Orientation should quickly get you started. (Would you like to provide feedback on this message?)

  Getting help   Made a mistake?   Goodies, tips and tricks
 * Read the Using Wikibooks book for a friendly introduction to the project, or our help pages for more information.
 * You can get friendly help from the community in the user assistance room or our IRC channel.
 * Upload freely licensed files to Wikimedia Commons. You may request permission to upload fair use files locally. Please include author and source information and a non-free use rationale for non-free files.
 * You can restore a previously saved version.
 * Pages should follow the  naming convention.
 * Need to rename a page? Use the move tab (is available once your account is 4 days old - until then, ask for help).
 * To request a page be deleted, add to the top of the page.
 * Was a page you made deleted? Please read the deletion policy, and check the deletion log to find out why. Also check the RFD archives if applicable. You can request undeletion at WB:RFU, or ask the administrator who deleted the page.
 * Please fill in the edit summary and preview your edits before saving.
 * Sign your name on discussion pages by typing ~~~~
 * User scripts can make many tasks easier. Look at the Gadgets tab of my preferences; check off the boxes for the scripts you want, and hit save!

About your edit to Edit filter/False positives: would you like to try again? It should be OK now. -- Jules (Mrjulesd) 10:29, 28 March 2021 (UTC)

 * Yep, I made two edits to bypass it. I'm now testing the lint error I came here to investigate. Thanks! Trialpears (discuss • contribs) 10:30, 28 March 2021 (UTC)

 * Is there a lint error with Template:Chapter navigation with TOC? I would be interested to know what it is. -- Jules (Mrjulesd) 10:38, 28 March 2021 (UTC)
 * Nah, but it transcludes the TOC mini subpage which I think is the cause for a lot of lint issues. Trialpears (discuss • contribs) 10:40, 28 March 2021 (UTC)

title: User talk:Trialpears


text:
Transportation Deployment Casebook/2021/Indiana Streetcar

Introduction
The streetcars (North American English for the European word tram) refers to a rail vehicle that runs on tramway track public urban streets. The streetcars are generally operated in single unites and usually driven by electric motor.

Technological Characteristics
The main technological characteristics involved in the mode of transport is the use of electricity. The idea moving vehicles by the transmission of electrical current had existed since the 1840s but was unable to achieve due to the lack of practical technique to generate sufficient electrical power. The early streetcar pioneer Frank Sprague (1857-1934) made significant advances to the streetcar technology, where his system demonstrated operational reliability and financial feasibility when it was put to the test along 12 miles of track for the union Passenger Railway in Richmond, Virginia, in 1888.

Advantage
Prior to the birth of the electric streetcars, the omnibuses and horsecars were adopted as the main urban transportation, where the animals can only work certain number of hours and carry small number of passengers per day and per trip. As the rapid development of the streetcars, the mode of transportation had spread across the U.S. The electric streetcars accommodated heavier passenger loads compared to predecessors, which hugely reduced passenger’s transportation cost per mile. The lowered fares and more comfortable ride had stimulated greater transit use by wider segments of society.

Other models and limitations
Omnibuses and horsecars were adopted as the main urban transportation before the birth of the streetcars. The horse-drawn omnibus lines started to operate along the city streets from the 1820s to the 1880s in North American. Such mode of transportation was designed with two wooden benches along the sides, which held the sitting passengers facing each other, which provided a much more comfortable ride compared with the omnibuses.

However, the limitation of the horsecars is obvious due to the fact that the given animals could only work a certain number of hours in a given day. The horses needed to be housed, groomed, fed and cared for day in and day out, where prodigious amounts of manure were produced, leading to a high cost for storing and disposing and dirtiness of the streets. Furthermore, the horses can sometimes be out of control, leading to possible serious traffic accidents. As such, a cost-efficient and convenient alternate source of transportation is desired.

Evolving markets
The evolving of markets is due to the unsatisfactory experience of the passengers’ demand over transportation. As numerous companies had operated the service of horsecars, where many of them only owns a single line, passengers would generally experience inconvenience transferring and paid multiple fares. With the invention of new electric technology, mergers were generated with large companies swallowing up smaller enterprises, monopolizing service in urban areas, and employing corporate business forms in order to raise capital needed for investment in electricity infrastructure.

3. Invention of the Streetcar
As a result of the unsatisfactory experience of horsecars for both the passengers and companies, new designed technology for transportation is desired. The first mechanical trams powered by steam were then invented and were used on the suburban tramway lines. Such steam streetcars were designed to have the steam engine in the body, referred to as steam dummy in the US. However, the limitation was shortly found due to its slow motion, loud noise and unpleasant pollution produced by the combustion of fuel. The inventors then had taken several measures to prevent the engines from emitting visible smoke and steam, including the replacement of coke rather than coal as well as the utilisation of condensers or superheating to avoid visible steam emission. Although they did partly solve the pollution problem, the major drawback of such mode of tram was the limited space for the engine and the general underpowered of these streetcars.

The design of the streetcars then shifted to the use of cable, where the streetcars were to be pulled along a fixed track by a moving steel cable. The cable movement was normally provided at a "powerhouse" site a distance away from the actual vehicle. The first practical cable car was tested in San Francisco in 1873, where part of its success was attributed to the development of the effective and reliable cable grip mechanism to both grab and release the moving cable without damage. Such cable cars were able to run at a higher speed and did not have the issue of producing pollution and noise. The cable cars were installed in many cities in the U.S. and had achieved approximately 800km of cable tramway spread over 16 cities by the 1890s. However, due to the expensive costs for the necessary cables systems, stationary engines, pulleys and lengthy underground vault structures beneath the rail, the cable cars suffered from its high infrastructure costs. The cable cars also require people with highly trained operation skills and alert operators to avoid obstructions and other cable cars. Due to the inventible damage of the cable during breaks and frays, the entire length of cable (typically several metres) would have to be replaced on a regular schedule.

Based on the technological expertise of electric motor and means of electric conduction through overhead lines, the electric streetcar line was first invented by Ukrainian engineer Fyodor Pirotsky in 1875.

The invention of electric streetcars was rapidly adopted due to the convenience and economy of electricity once the technical problems of production and transmission of electricity were solved. After the development of reliable electrically powered trams, the costly high-maintenance cable car systems were rapidly replaced in most locations.

4. Early Market Development
The American was called the walking city due to the dominant by foot mode for the journey to work. The federal government started promoting transport infrastructures since the beginning of the 1840s. As the State of Indiana experience much higher levels of growth well before other cities and has played as a national leader in the railroad industry in the US, the first world’s union station was opened in the Wholesale District on September 20, 1853 in Indianapolis, Indiana. Moreover, the first electricity streetcar railway in Indiana was opened in South Bend on 30 August,1888, namely the Lafayette Street Railway. Up until the 1890s, many of Indiana’s larger and mis-sized cities were to have multiple lines built by different transit companies and the streetcar systems were operated in Indianapolis, Richmond, Kokomo, etc.

The new technology of electric streetcars has brought mergers of large companies swallowing up smaller enterprises, monopolizing service in urban areas, and employing corporate business forms in order to raise capital needed for investment in electricity infrastructure

Policy
The federal government started promoting transport infrastructures since the beginning of the 1840s. The policy was closely associated with the rapid growth of transportation demand during the birthing phase of the streetcars. The policy of franchises was brought on from the period of horsecars and was later innovated into the birthing phase of the electric streetcars, where the franchise gave a given company a monopoly of operation on particular streets. The continued use of franchises was essential for street railways, as companies had to impinge on public rights-of-way to lay track in the street to operate horsecars, and later, cable cars and electric streetcars. During the period of 1880s and 1890s, the transit industry identified the necessity of reorganisation to raise the essential financial resources and to provide the best possible service to the urban public, where a single monopolistic transit firm in a city or urban area became the standard practice for transit in the U.S at this time.

Locked-in Policy
The policy of 5-cent fare was borrowed from the period of horsecars into the electric streetcar system. In order to exchange for a perpetual franchise (999-year franchise), the companies were agreed on the policy of 5-cent fare in the birthing phase. Typically, a private company ran lines under a franchise were awarded by the municipality which outlined the public roads on which the company could build rails and operate routes, along with other stipulations. The policy was then embedded in the franchise, where the companies and operators were ‘locked-in’ with the 5-cent policy.

6. Growth Phase
The first electricity streetcar railway in Indiana was opened in South Bend on 30 August,1888, namely the Lafayette Street Railway. The electric streetcar in Indiana experience much higher levels of growth well before other cities where Indiana has played as a national leader in the railroad industry in the US. The period from 1902 up until the late 1910s was a period of tremendous growth in electric streetcars replacing horse-drawn cars in the US. The streetcar ridership generally peaked in the 1920s, with 11,000 to 17,000 miles of streetcar tracks in cities from coast to coast.

Constraints to changing Markets
A steady decline began after WWI, stimulated largely by the invention of the automobile. During the period of WWI, streetcar enterprises encountered financial difficulties due to the rose of wage and materials costs. The companies were squeezed by the fixed fares set almost universally by the municipal franchises. The ‘lock-in’ policies implemented by the government also contributed to the decline of the mode, where the companies are forced to adhere a fixed fare set by municipal franchises. Such policies resulted in the financial infeasibility of companies to conduct any line expansions, resulting in the locked adoption of expensive and often failing lines. Even the government action permitted fare raises later, but by then the use of automobiles had spread, and many cities shifted to motor-bus systems of public transportation.

Competition
As a result of the spread use of automobiles, many cities shifted to motor-bus systems of public transportation, where the streetcar operators were started to feel the pressure. The direct operating expenses of the bus were slightly greater than the streetcars; however, the heavy expenses of both maintenance and track construction ultimately rendered streetcars uneconomical. The U.S streetcars began to be steadily declined by automobile and buses in the 1930s, where such trend accelerated during the ‘40s and ‘50s.

Re-Invention
The re-invention of the streetcar system could focus on the transportation of a certain region. With the modern technology, the streetcars can provide larger capacity, higher speed, and more comforting experience. As the operation of light rail does not include greenhouse gas emission and provide better riding experience, the streetcars, or light rails nowadays, are usually preferable than the transportation mode of buses.

1. Model Estimation
A three-parameter logistic function is used to generate and analyse the model:

S(t)=(K/([1+e^(-b(t-t_0 ) )]))

Where:

 * S(t) is the status measure (eg. Miles of track)
 * t is the time (years)
 * t_0 is the inflection time (year in which 1/2 K is achieved)
 * K is the saturation status level

 * b is a coefficient

As the number of miles is known from the data, as is the year, where K is unknow in this case. A number of regressions, with various trials for K were done by n simply estimating the coefficients c and b in a model of the form:

Y=bX+c

Where:

 * Y=Ln(Miles/(K-Miles))
 * X=year

2. Data Used
By identifying data from the McGraw Electric Railway Manual, the number of miles and the associating year is obtained and listed in the table below: Using the model estimation equations, and the series of conducted regressions, values for t_i, S_max and b were estimated as below:

3. Model Analysis
According to the obtained figure above, the electric streetcar system was continued growing through the period of 1903 to 1911. A sudden minor drop was observed at the end of 1911, where the rate of growth is decelerating but the overall miles of track is still growing.

The growth phase was around 1903 and before as the State of Indiana experience much higher levels of growth well before other cities and has played as a national leader in the railroad industry in the US. The S-curve has a general close to linear growth before 1914, and a descending growth up until 1920. This might be due to the period of WWI, where inflation and decline of the streetcars occurred.


text:
User:Zyan7334/sandbox

= Mississippi Streetcar = A streetcar (also commonly known as a tram, trolley or electric railway) is a mode of public transport that operates on rail tracks constructed on the street. Unlike that of buses, streetcars are restrained to the existing rail tracks and cannot reach locations that have no pre-existing tracks. Also, unlike that of other public transport systems that operate on rail networks (particularly train and metro systems) streetcars commonly operate on the streetscape in mixed traffic and share the road with pedestrians and occasionally, vehicles, as opposed to operating in isolation deep underground or on dedicated rail tracks. While historically, streetcars have operated on various power sources, they are now most commonly relying on electricity.

Technological Characteristics
Streetcars have been designed to serve one of two main purposes: to carry cargo and to carry passengers, from one location to another. Like that of other modes of transport, the usage of the service incurs a small fee for the user and is paid to the owner of the network. In the United States as well as around the world, streetcar networks have been commonly owned and operated by private companies. It comes without question that these networks have been constructed with the aim of maximising returns for the company. Therefore, the rail tracks are typically built in areas with greatest predicted usage to optimise on returns. This incentive is in general desirable as it allows the network to provide accessibility to the maximum number of people, creating a healthy and natural supply and demand relationship.

Advantages and disadvantages
The main advantages and disadvantages of streetcars [1] are summarised in the following table

History
Prior to the development and widespread usage of the streetcar, transport of passengers across land was most commonly conducted through that of horse drawn vehicles; the most popular of which was the omnibuses.These typically consisted of an enclosed passenger cabin with wooden benches along the sides. The cabin was supported by four wooden spoked wheels and was drawn by one or two horses. The driver was usually seated on a separate front facing bench in the outside of the cabin. Omnibuses were popular in both the United States as well as Europe throughout the eighteenth to nineteenth century.

However the horse drawn omnibus was inefficient. The force required to pull the carriage was large due to the rolling resistance between the wheels and the unpaved ground. The horses which pulled the carriages would become fatigued very fast, limiting the operation of the omnibuses to a small number hours each day. Even then, in order for such a service to be properly operated in accordance with the schedule, the companies must house and care for tens of horses for every service they operate.

As a result, omnibus services were relatively expensive. In most cities, the middle to lower class would hence often choose to walk as the primary mode of transport [2]. The lack of pavement however, meant that the commute by walking was often muddy, if not dusty. The roads were also commonly filled with manure from the horses pulling the omnibuses. This made the commute an unpleasant journey. There was hence a constant interest for growth in public transport as the demand for better means of transport was persistently there.

Invention of the streetcar
The development and growth of the streetcar was a result of an amalgamation of technological advances accumulated up over the course of several centuries. The success of it is mainly owed to a combination of iron working techniques from the industrial revolution, adoption of electric powered engines and human ingenuity for combining various ideas.

While rails have been historically used as early as the sixteenth century, they were originally used to carry heavy loads of ores from mines. The rail tracks in the early invention were constructed from wood as were the wheels of the cart. The cart itself was horse drawn or pulled by a cable. However, it wasn’t until the eighteenth century that concept of horse drawn carriages on a rail system was introduced as a mode of transport inside cities. This system significantly improved the smoothness of the ride by reducing the rolling resistance between the wheels of the cart and the rail, solving the issue of horse fatigue. A larger carriage was therefore able to be drawn but a single horse as opposed to two like that of the omnibus. Companies were thus able to operate transport services at lower expenses and at the same time, provide a service with greater comfort.

In the mid eighteenth century, the invention of the steam engine led to an explosive growth known as the industrial revolution. During this time, the invention of the blast furnace significantly increased the iron production. As a result, in the late eighteenth century, iron plates and wheels began to be formed using cast iron. A layer of cast iron was commonly fixed onto the upper surface of wooden rails to form a composite wood/iron rail track. The use of cast iron in tracks was a step up from that of using wood. They could hold significantly higher loads, and had even less rolling resistance in comparison to the wooden predecessor further increasing efficiency and comfort. Cast iron however also had its corresponding set of problems. It was brittle and was prone to wear and tear. High traffic and constant use of the rail with heavy loads would lead to damage to the rails. The cast iron plates will therefore need to be replaced often, also making it a significant economical expense.

The brittleness of cast iron was solved by the invention of a new metal work process which created a ductile material known as wrought iron in the early nineteenth century. This was another improvement since the ductility of the wrought iron allowed for the tracks to last for much longer, making it more economically efficient. However, the softness of wrought iron still meant that the tracks would last for less than 10 years before requiring maintenance, repair or replacement. This was a key constraining factor in the growth of the streetcar networks.

In the mid to late nineteenth century, the Bessemer process along with the open hearth furnace was invented. The combination of these two allowed for steel to be made efficiently at a very cheap cost. Given this condition, rail tracks constructed from steel were rapidly adopted due to the desirable properties. The high strength of steel along with its durability and low cost meant that it lasted many times longer than those made from wrought iron and further came at a similar price. This resulted in strong, long lasting and smooth rail tracks, sparking an explosive growth in the rail industry in the late nineteenth century. Many railway companies started and thousands of miles of railway tracks were constructed over the next decades.

There were many attempts at utilising different power sources for the streetcar. However, over time it was found that steam engines were too large in size to fit into a small vehicle and diesel engines would be too heavy and consequently inefficient. The source of power of choice therefore quickly shifted into electricity as it was small and efficient, particularly for light carriages like that of the streetcar. By the early nineteenth century, most street railways were converted from horse operated carriages into electrified railways.

The use of electrified streetcars meant that the initial investment was within reason. The system could be set up by constructing the rail tracks, the overhead wiring which carried the electricity and finally, constructing carriages that have electric motors on board. This led to the rapid expansion of the electric streetcar industry in the United States.

Market Development
The birthing phase of the streetcar in Mississippi began with the adoption of horse drawn carriages along wooden and iron composite rail tracks in the late nineteenth century. These acted as a replacement for the horse drawn omnibuses [3]. The earliest cities with such systems were Greenville (1887) and Natchez (1886) where the privately owned companies Greenville Street Railway and Co. and Natchez Street Railway Co. were the respective developers and owners of the system [3]. The networks were privately owned and maintained at the company’s own expense. By 1894, Greenville Street Railway and Co. had $100,000 of authorized capital stock and maintained 6 miles of tracks with 15 horses and 9 carriages [4]. On the other hand Natchez Street Railway Co. had grown to a similar size, also owning $100,000 of authorized capital stock and maintained 5 miles of tracks along with 20 horses and 7 carriages [4].

Several other cities had companies which constructed and maintained horse car systems in the late nineteenth century but due to low ridership, the routes were abandoned and the companies which operated the systems were dissolved. This is likely because Mississippi was a rural state with a low population density making the streetcar a difficult and non economically viable business to run. The lack of natural demand for the service therefore made it hard for companies to operate in smaller cities. The only cities with streetcar systems were therefore the larger ones such as Meridian, Greenville, Natchez, Jackson and Gulfport. At any one time, there was a maximum total of a mere thirteen trolley lines across the entire state of Mississippi.

After the widespread adoption of the steel rail track and electric carriage design, there was a rapid growth in the streetcar industry across the United States. This was a process of functional discovery and enhancement where many saw the new technology as an opportunity for growth. This was also true for Mississippi. However, since the construction of such systems required large capital investments, most local governments did not provide funding for the construction. Instead, they franchised the streets to private companies who would then proceed to get chartered for a length of time, typically in the order of twenty years. Those who saw this as a profitable opportunity therefore gathered the capital and formed a chartership with the local government. As a result,  a new wave of railway companies were chartered.

The original horse drawn streetcar systems in Greenville were halted in 1899 and the construction of new electrified steel tracks began over the course of two years. The new company Delta Light and Traction Co. was chartered and thereafter, purchased the previous railway companies in Greenville and monopolised Greenville’s lighting and streetcar industry. The line was a major success and experienced growth over the course of the following decade.

Policy development
Like that of most other states, the legislation ruling the operation of the electric streetcar in its birthing phase was borrowed from the preceding transit services, namely the omnibus and the horse drawn streetcar service. Particularly, right of way policies were in line with those of the horse drawn streetcar services. This was mostly because of the similarities between the horse drawn streetcar and the electric powered streetcar.

However, the government further introduced more policies to reduce their costs of maintenance in public infrastructure. The price which private companies needed to pay for the franchise agreement involved negotiation of terms and often required the private companies to contribute to the expansion and improvement of the quality of the public roads [2]. While the private companies often argued against these policies, they were ultimately imposed upon the operators at the signing of the franchise agreement after a reluctant agreement.

Market growth patterns similar to that of Greenville were observed in other major streetcar cities across Mississippi including Meridian, Natchez and Jackson where companies which constructed, maintained and operated the streetcar system emerged. Quickly, each city had its own corresponding private company which adopted a model where they run both the lighting and electrified streetcar services. The private companies were relatively small in size, and did not expand beyond the city due to the limitation of demand for more services. The small size of the companies led to simplistic and direct management of the services, and overall resulted in a short but successful streetcar system [4].

However, the lack of competition and monopoly of the streetcar system across an entire city naturally drove the fare prices higher. Therefore, as the system matured, the government introduced a lock-in policy in the franchise agreements to prevent the operators from increasing the fare price beyond five cents. All operators who have agreed to the franchise therefore needed to keep their fares to five cents regardless of market conditions. As a result, the streetcar system was well received by the public and opening of new services often came with great celebration [3].

Public Sector Contribution
While the growth of the streetcar system was smaller than that of other cities around the United States at the time due to the smaller demand in Mississippi, the government still played a key role in its development. Particularly, the government mostly controlled the planning of the systems through its franchise agreement. By restricting the path of the streetcar to certain routes, the government had control over the urban planning component of the service. Furthermore, by introducing aforementioned policies such as a maximum fare on the service, the government was able to ensure that the services were readily accessible to the general public. This planning therefore guided a path towards a more efficient economic growth.

Private Sector Contribution
The private sector was the main contributor to the streetcar services. Private companies constructed, owned, maintained and operated all of the systems with an expectation to profit from the services. While they must operate under the policies that have been agreed upon from the franchise agreement, private sector companies continually sought to improve efficiency and maximise profits. This pushed private companies to extend streetcar services to areas where the private companies saw as profitable and also created an incentive for the private sector companies to improve the quality of their services to increase ridership. Railway companies would hence purchase lighting companies and provide lighting services along their routes to attract passengers. As a result, the private sector contributed greatly to the public transit network infrastructure, operation of the services as well as improvements to the quality of infrastructure in cities.

Policy Issues
The greatest conflict of interest between the public and private sector lies in the policies associated with fares. The governing body wanted ease of access at low costs while the private companies wanted to maximise profits. While the lock-in policy which limited the fares that streetcar operators could charge was not a problem to begin with, it became an issue when inflation began to occur in the twentieth century. As a result, many railway companies were no longer economically viable and were soon replaced by other forms of transport like that of the car.

Mature Phase
Due to the low population density across Mississippi, the mature phase of the streetcar network was reached relatively early, approximately around 1918. Most streetcar systems did not experience significant growth and ridership did not improve over the years. As such, there was no incentive for the private companies to continue expanding their networks as it would not be profitable.

This was further compounded with the lock-in policy for the maximum fare of 5 cents. As inflation grew, the lack of improvement in ridership meant that the private sector was gradually making declining profits and eventually, they were no longer economically viable. The onset of the streamlined automobile manufacturing from Ford Motor Co. was the final push that sent the streetcar industry into its declining phase. By 1930, the automobile industry was rapidly growing and streetcar systems were rapidly replaced by new buses that were more efficient, flexible and did not need an extensive rail infrastructure [5]. Since right of way policies haven’t changed since their horse drawn predecessors, streetcars needed to share a way with other vehicles on the road. The increase of other forms of transport including cars and buses therefore made competition for the right of way and pushed the streetcar out of service due to its lack of flexibility. As a result, between the 1930s and the 1950s, well over a hundred cities abandoned their streetcar systems and replaced it with buses and private cars [5]. All cities in Mississippi lie in this category of cities that have abandoned their streetcar systems. By the mid 1930s, there were no longer any more streecars to be seen in Mississippi [3].

Reinventing the Mode
While the streetcar has been long abandoned, and replaced by more flexible services such as buses, there remains to be a list of advantages which streetcars hold. Consequently, there exists an opportunity to reinvent the streetcar for modern usage, particularly in short lengths in highly congested areas. However, policies must be changed accordingly to accommodate for this to happen. Highly congested roads in the central business district can be readily converted into streetcar systems at low costs. However, to prevent further conflicts for the right of way, it is necessary to adapt the roads so that there are no conflicts between the cars, buses and the streetcars.

Streetcar systems are also unlikely to be profitable to operate for the private sector. Funding from the public sector will therefore also be necessary for such a system to be reinvented. While the cost of capital is relatively high, the economic benefits and growth that comes along with the streetcar can potentially outweigh the costs of the line.

Quantitative Analysis
For each city in Mississippi with a streetcar system, quantitative analysis was conducted to fit the length of track in the Mississippi streetcar system to a logistic function to identify the three stages of development: the birthing, growth and mature stages. Data was collected from "McGraw electric railway manual - the red book of American street railway investment" from years 1894 to 1920 using an automated Python script where possible. The data was then checked manually and then used for curve fitting. The function that is used to fit the data is

$$S(t) = \frac{K}{1 + \exp(-b(t - t_0))}$$

where $$S(t)$$ represents the length of track in miles in the year $$t$$, $$K$$ represents the saturated length of track in the mature stage of the system, and $$b$$ and $$t_0$$ are parameters which are fitted using least squares regression in a linear form

$$b(t - t_0) = \ln\left( \frac{S(t)}{K - S(t)}\right)$$

Since some networks have not yet entered their mature stage, the parameter $$K$$ is unknown. In such cases, we iterate through a range of possible values and maximise the correlation $$R^2$$ in least squares regression. This optimisation problem is solved for using a brute force iterative method in Python. For each system in Mississippi over the study period, a logistic function is fitted, albeit some data shows that a logistic function may not be the best fit.

Mississippi - Aggregated
The data was summed across all the systems in Mississippi and aggregated together to find the total track length in Mississippi in the years between 1894 to 1920. When there was no reports to changes in the track length of a system, it was assumed that the track has experienced no changes and therefore maintained its previous reported length. The results are summarised in the table below.

Code - Scraping the data
When a txt file of the data was avaialble, the following code was run to simplify the data extraction process. This was not perfect and thus, after extracting the data, there needed to be some manual work to clean and check the data.

Code - Optimising the linear regression and plots
= References = [1] Parsons Brinckerhoff. Seattle Streetcar Network And Feasibility Analysis.Seattle Department of Transportation. 2004

[2] Monroe Dodd. A splendid ride - The Streetcars of Kansas City 1870 - 1957. Kansas City Star Books. 2002.

[3] Frank A. Brooks, Jr. Stories about street cars - Southern Traction - Travelling by Trolley in Mississippi. 1983.

[4] McGraw electric railway manual - the red book of American street railway investment. 1894.

[5] Peter Spearritt. Why Melbourne Kept Its Trams. Landscapes and Ecologies of Urban and Planning history.

title: User:Zyan7334/sandbox