Add notes jotted down elsewhere over the last month
This commit is contained in:
parent
75fbd20e52
commit
1aa68490e6
|
|
@ -117,3 +117,5 @@ https://www.cs.drexel.edu/~bls96/oisc/
|
|||
- download manuals for decimal machines
|
||||
- + PDP
|
||||
- **aperture cards as slides**
|
||||
|
||||
- [The Mystery of Claude Shannon’s Personal Computer](https://ieeexplore.ieee.org/stampPDF/getPDF.jsp?tp=&arnumber=9039960&ref=)
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# 2023-09-27 — Dev notes
|
||||
|
||||
- Add `REW` rewind instruction for tape control?
|
||||
- (and `BSP` 'backspace'?)
|
||||
|
||||
IBM 701 halts the machine and lights a 'checko
|
||||
|
||||
IBM 701 (24-6042-1_701_PrincOps.pdf):
|
||||
|
||||
If a copy instruction is given when there is no read-write component connected to the computing unit (e.g., fi nO READ Or WRITE instruction has been given, or fi a coPY has been given too late), the cal-
|
||||
culator stops and a copy-check light turns on, indi- cating an error in the program.
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
# 2023-09-28 — Dev notes
|
||||
|
||||
https://stackoverflow.com/questions/3215878/what-are-in-out-instructions-in-x86-used-for#3215958
|
||||
|
||||
|
||||
|
||||
https://wiki.osdev.org/ATA_PIO_Mode
|
||||
|
||||
> The disk that was selected last (by the BIOS, during boot) is supposed to maintain control of the electrical values on each IDE bus. If there is no disk connected to the bus at all, then the electrical values on the bus will all go "high" (to +5 volts). A computer will read this as an 0xFF byte -- this is a condition called a "floating" bus. This is an excellent way to find out if there are no drives on a bus. Before sending any data to the IO ports, read the Regular Status byte. The value 0xFF is an illegal status value, and indicates that the bus has no drives.
|
||||
> …
|
||||
> Measuring "float" is a shortcut for detecting that drives do not exist. Reading a non-0xFF value is not completely definitive. The definitive test for detecting drives is the #IDENTIFY command.
|
||||
|
||||
…
|
||||
|
||||
> Status Register (I/O base + 7)
|
||||
|
||||
| Bit | Abbreviation | Function |
|
||||
|-----|--------------|-----------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 0 | ERR | Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). |
|
||||
| 1 | IDX | Index. Always set to zero. |
|
||||
| 2 | CORR | Corrected data. Always set to zero. |
|
||||
| 3 | DRQ | Set when the drive has PIO data to transfer, or is ready to accept PIO data. |
|
||||
| 4 | SRV | Overlapped Mode Service Request. |
|
||||
| 5 | DF | Drive Fault Error (does not set ERR). |
|
||||
| 6 | RDY | Bit is clear when drive is spun down, or after an error. Set otherwise. |
|
||||
| 7 | BSY | Indicates the drive is preparing to send/receive data (wait for it to clear). In case of 'hang' (it never clears), do a software reset. |
|
||||
|
||||
|
||||
|
||||
|
||||
https://www.sci.muni.cz/docs/pc/serport.txt
|
||||
|
||||
> Q. Why does my PC have a 25pin/9pin connector if there are only 3 lines
|
||||
needed?
|
||||
A. There are several status lines that are only used with modems etc. See the
|
||||
Hardware section and the Registers section of this file.
|
||||
|
||||
|
||||
http://inputoutput5822.weebly.com/programmed-io.html
|
||||
|
||||
|
||||
! https://industrial-electronics.com/DAQ/comp-archi_16.html
|
||||
|
||||
> It may seem that writing software to perform programmed I/O is trivial: a program merely assigns a value to an address on the bus. To understand I/O programming, however, we need to remember two things. First, a nonintelligent device cannot remember a list of commands. Instead, circuits in the device perform each command precisely when the processor sends the command. Second, a processor operates much faster than an I/O device - even a slow processor can execute thousands of instructions in the time it takes for a motor or mechanical actuator to move a physical mechanism.
|
||||
> …
|
||||
> To prevent problems, programmed I/O relies on synchronization. That is, once it issues a command, the processor must interact with the device to wait until the device is ready for another command.
|
||||
|
||||
> We use the term Control and Status Registers (CSRs) to refer to the set of ad dresses that a device uses. More specifically, a control register corresponds to a contiguous set of addresses (usually the size of an integer) that respond to a store operation, and a status register corresponds to a contiguous set of addresses that respond to a fetch operation.
|
||||
|
||||
! https://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s%E2%80%93present)
|
||||
|
||||
https://en.wikipedia.org/wiki/CDC_6600
|
||||
|
||||
> The CP had no instructions for input and output, which are accomplished through Peripheral Processors (below).
|
||||
|
||||
CDC 6600 Simulation Model
|
||||
|
||||
- has ISA details
|
||||
|
||||
|
||||
|
||||
http://www.quadibloc.com/comp/cp0301.htm
|
||||
|
||||
https://detreville.substack.com/p/the-ibm-701
|
||||
|
||||
!!! https://amturing.acm.org/Buchholz_102636426.pdf
|
||||
|
||||
!! https://www.cambridgescholars.com/resources/pdfs/978-1-5275-0650-3-sample.pdf
|
||||
|
||||
> [OCR from screenshot:]
|
||||
>
|
||||
> The I/O system implemented five functions for using an I/O device:
|
||||
>
|
||||
> 1. Selecting an I/O unit for reading, writing, or a control operation, such as rewinding a tape on a magnetic tape drive.
|
||||
>
|
||||
> 2. Interlocking the selected I/O unit's operation with the execution of a program.
|
||||
>
|
||||
> 3. Copying data to/from the electrostatic storage unit and the I/0 units.
|
||||
>
|
||||
> 4. Synchronizing signals between the selected I/O unit and the CPU.
|
||||
>
|
||||
> 5. Disconnecting the I/O unit from control by the computer system its operation was completed.
|
||||
>
|
||||
> Because the IBM 701 could continue to execute a program after it had selected an I/O unit, an interlock was implemented that "remembered" that the I/O unit had been selected for reading or writing. When the program encountered another select instruction, its execution was delayed until the operation on the previously selected I/O unit was completed. Information transferred to or from an I/O unit was always routed through the MQ register. These transfers occurred one word at a time and required the execution of a copy instruction on each transfer.
|
||||
>
|
||||
> When a selected I/O unit was ready to transfer data, the program had to arrive at a copy instruction in order to perform the transfer. If no copy instruction was available, because the program had not reached the appropriate address, the I/O was disconnected from the computer and the interlock was turned off to prevent any information transfer.
|
||||
|
||||
***
|
||||
|
||||
https://retrocomputing.stackexchange.com/questions/27756/how-late-were-80-column-punched-cards-relevant
|
||||
|
||||
https://homepage.divms.uiowa.edu/~jones/cards/collection/i-ballot.html
|
||||
|
||||
https://verifiedvoting.org/election-system/ess-votomatic/
|
||||
|
||||
https://retrocomputing.stackexchange.com/questions/19686/how-were-card-sequence-numbers-typically-checked
|
||||
|
||||
|
||||
https://en.m.wikipedia.org/wiki/IBM_1401
|
||||
|
||||
> Some operations use specific memory locations (those locations are not reserved and can be used for other purposes). Read a card stores the 80 columns of data from a card into memory locations 001–080. Index registers 1, 2 and 3 are in memory locations 087–089, 092-094 and 097-099 respectively. Punch a card punches the contents of memory locations 101-180 into a card. Write a line prints the contents of memory locations 201–332.
|
||||
|
||||
|
||||
https://www.multicians.org/thvv/1401s.html
|
||||
|
||||
|
||||
http://www.righto.com/2021/02/an-ibm-1401-mainframe-computer-at.html?m=1
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# 2023-09-29 — Dev notes
|
||||
|
||||
## Games that teach assembly (and related material)
|
||||
|
||||
- [PROJEKT: OVERFLOW: RISC-V assembly board game](https://punkx.org/overflow/)
|
||||
- [comments on Hacker News](https://news.ycombinator.com/item?id=37704760)
|
||||
- [Machine Code is for Kids!](https://www.gamesindustry.biz/machine-code-is-for-kids-article) ("Dylan Cuthbert on why machine code is perfect for kids to learn programming")
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# 2023-09-30 — Dev notes
|
||||
|
||||
## ipad cardiograph links - 2023-09-30ish
|
||||
|
||||
### Toy RISC machines
|
||||
|
||||
- [GitHub - meetdoshi90/8-Bit-RISC-Microprocessor: An 8-bit RISC based processor designed in verilog with x86 instructions.](https://github.com/meetdoshi90/8-Bit-RISC-Microprocessor)
|
||||
- [GitHub - olofk/serv: SERV - The SErial RISC-V CPU](https://github.com/olofk/serv)
|
||||
- [GitHub - NayanaBannur/8-bit-RISC-Processor: A Verilog RTL model of a simple 8-bit RISC processor](https://github.com/NayanaBannur/8-bit-RISC-Processor)
|
||||
- [GitHub - NayanaBannur/8-bit-RISC-Processor: A Verilog RTL model of a simple 8-bit RISC processor](https://github.com/TeamCM/Atom-Fluorine)
|
||||
- [GitHub - AnkurRyder/8085-Processor: 8-bit RISC Processor on Logisim](https://github.com/AnkurRyder/8085-Processor)
|
||||
- [natalius_8bit_risc/doc/Natalius 8 bit RISC Processor.pdf at master · freecores/natalius_8bit_risc · GitHub](https://github.com/freecores/natalius_8bit_risc/blob/master/doc/Natalius%208%20bit%20RISC%20Processor.pdf)
|
||||
- [Amber 2 Core Specification](https://opencores.org/websvn/filedetails?repname=amber&path=%2Famber%2Ftrunk%2Fdoc%2Famber-core.pdf#page14) (PDF)
|
||||
|
||||
|
||||
### MIPS
|
||||
|
||||
- [GitHub - GabrielGiurgica/8-bit-MIPS-Processor: A Verilog implementation of an 8-bit MIPS processor](https://github.com/GabrielGiurgica/8-bit-MIPS-Processor0
|
||||
- [MIPS Reference Sheet](https://uweb.engr.arizona.edu/~ece369/Resources/spim/MIPSReference.pdf#page14)
|
||||
- [MIPS Assembly/Instruction Formats](https://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats)
|
||||
- [GitHub - exallium/pyvm: 8-bit RISC Assembler and VM](https://github.com/exallium/pyvm)
|
||||
|
||||
|
||||
### Assemblers
|
||||
|
||||
- [Simple 8-bit Assembler Simulator](https://schweigi.github.io/assembler-simulator/)
|
||||
- [Make your own Assembler simulator in JavaScript (Part 1)](https://www.mschweighauser.com/make-your-own-assembler-simulator-in-javascript-part1/)
|
||||
- [Simple 8-bit Assembler - Instruction Set Help](https://schweigi.github.io/assembler-simulator/instruction-set.html)
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# 2023-10-01 — Dev notes
|
||||
|
||||
i like the compare and branch setup here: https://schweigi.github.io/assembler-simulator/instruction-set.html
|
||||
|
||||
## A very incomplete survey of 8-bit RISC machines
|
||||
|
||||
- https://github.com/NayanaBannur/8-bit-RISC-Processor
|
||||
- https://kevinpt.github.io/opbasm/rst/tutorial.html
|
||||
- https://www.allaboutcircuits.com/ip-cores/processor/open8-urisc/
|
||||
- https://opencores.org/projects/natalius_8bit_risc
|
||||
- https://hackaday.io/project/28042-phx8-homebrew-8bit-risc-cpu
|
||||
- https://shubham1172.github.io/SRM/
|
||||
|
||||
## Simple-As-Possible computer
|
||||
|
||||
- [Simple-As-Possible computer - Wikipedia](https://en.wikipedia.org/wiki/Simple-As-Possible_computer)
|
||||
- http://aserrano.es/portafolio/informatica-con-processing/sap1english/
|
||||
|
||||
## ?? ADC
|
||||
|
||||
maybe swap add for adc — you can always manually zero the flag
|
||||
|
||||
## flags
|
||||
|
||||
i do wonder if they should be done in a more conventional way
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# 2023-10-02 — Dev notes
|
||||
|
||||
[AVR Microcontrollers](https://en.wikipedia.org/wiki/AVR_microcontrollers)... from screenshot (with OCR errors):
|
||||
|
||||
> In the tinyAVR and megaAVR variants of the AVR architecture, the working registers are mapped in as the first 32 data memory addresses (0000<sub>16</sub>-001F<sub>16</sub>, followed by 64 I/O registers
|
||||
>
|
||||
> (002016-005F16). In devices with many peripherals, these registers are followed by 160 "extended I/O" registers, only accessible as memory-mapped 1/0 (006016-00FF16).
|
||||
>
|
||||
> Actual SRAM starts after these register sections, at address 006016 or, in devices with "extended IO" at 010016
|
||||
>
|
||||
> Even though there are separate addressing schemes and optimized opcodes for accessing the register file and the first 64 I/O registers, all can also be addressed and manipulated as if they were in SRAM.
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# 2023-10-14 — Dev notes
|
||||
|
||||
https://en.wikipedia.org/wiki/Tape-out
|
||||
|
||||
Comment by "Stratoscope" on ["Examining the silicon dies of the Intel 386 processor"](https://news.ycombinator.com/item?id=37886065):
|
||||
|
||||
> Great article as always! One nit:
|
||||
>
|
||||
> > ..."tapeout", when the chip data is sent on magnetic tape to the mask fabrication company.
|
||||
>
|
||||
> That's roughly true in a temporal sense, but it's not where the term "tapeout" comes from. They could have shipped the data on a Winchester disk, and the event would still be called tapeout.
|
||||
>
|
||||
> In the earlier days of printed circuit board (PCB) manufacturing, you would literally "tape out" your circuit manually with black tape on a white board, typically in an enlarged form.
|
||||
>
|
||||
> "Tapeout" came to mean the point in time when you finished taping out your circuit and it was ready to be sent to be photographed and reduced and boards manufactured from the layout.
|
||||
>
|
||||
> There wasn't even any "data" involved here, magnetic or otherwise. Just a physical art board with tape on it.
|
||||
>
|
||||
> Wikipedia has a pretty good article on this:
|
||||
>
|
||||
> https://en.wikipedia.org/wiki/Tape-out
|
||||
>
|
||||
> And for the young'uns who are wondering "what the heck is a Winchester disk?"
|
||||
>
|
||||
> https://www.pcmag.com/encyclopedia/term/winchester-disk
|
||||
>
|
||||
> I taped out my first printed circuit board as a third-grader sometime around 1960 and shared the story here:
|
||||
>
|
||||
> https://news.ycombinator.com/item?id=32116169
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# 2023-10-23 — Dev notes
|
||||
|
||||
## Recent links
|
||||
|
||||
### DCPU-16
|
||||
|
||||
https://gist.githubusercontent.com/metaphox/3888117/raw/588a5f1fc24a67cb14939deab588fbff29b7e2aa/DCPU-16Spec.txt
|
||||
|
||||
https://fail0verflow.com/blog/2012/dcpu-16-review/
|
||||
|
||||
failoverflow’s redesign: https://fail0verflow.com/media/files/dcpu16-proposal.txt
|
||||
|
||||
networking: https://github.com/ManuelKiessling/dcpu16-networkhub#readme
|
||||
|
||||
|
||||
### Book
|
||||
|
||||
https://www.amazon.ca/Computer-Organization-Design-MIPS-Interface/dp/0124077269
|
||||
|
||||
## Computer Confidence: A Woman’s Guide
|
||||
|
||||
https://archive.org/details/computerconfiden0000hell/page/n5/mode/1up?view=theater
|
||||
|
||||
### Misc.
|
||||
|
||||
- http://www.quadibloc.com/comp/cardint.htm
|
||||
- http://www.quadibloc.com/comp/panint.htm
|
||||
- http://www.quadibloc.com/arch/arcint.htm
|
||||
- http://www.quadibloc.com/comp/lineint.htm
|
||||
|
||||
## Z80
|
||||
|
||||
- https://clrhome.org/table/
|
||||
|
||||
## System/360 Front Panels
|
||||
|
||||
- http://www.righto.com/2019/04/iconic-consoles-of-ibm-system360.html?m=1
|
||||
|
||||
### BEFLIX
|
||||
|
||||
- [Using his BEFLIX Computer Animation Language, Ken Knowlton Produces "A Computer Technique for the Production of Animated Movies”](https://historyofinformation.com/detail.php?id=3467)
|
||||
Loading…
Reference in New Issue