Hot answers tagged

47

MOV changes the N, Z and V flags according to the copied data. JMP doesn't do that. It means you can run e.g. arithmetic operations somewhere, then jump to another location for the compare routine. Also JMP appears to be 1 cycle faster. The handbook says JMP takes 1 to 3 cycles while MOV take 0 to 4 - maybe because it doesn't set the flags.


42

Besides the flags, and differences in cycle count, the more important difference is that JMP x uses the effective address of x, while MOV x,R7 uses the value at x. In other words, there's one level less of indirection, similar to the LEA and MOV opcodes for the x86. So JMP R1 faults, and JMP @R1 is equivalent to MOV R1,R7. This means one can use JMP d(R7) ...


37

Little is known about how these computers and chips were made, because their development was top secret in the Soviet Union. As far as I know, Soviet Western-compatible ICs were made by copying masks used in fabrication or by buying manufactured products under fake identities and smuggling them back into Socialist countries where they were reverse-...


33

It seems to be pretty much accepted wisdom that the Soviets completely cloned the Western chips and did not simply develop reimplementations of the same instruction sets. Since at the time it was pretty important to have the impression of having own developments, the copying was obviously not admitted publicly so not much is known about how exactly the ...


24

The Unix Assembly Reference Manual by Dennis M. Ritchie, at §8.1 notes that: The syntax of the address forms is identical to that in DEC assemblers, except that ‘‘*’’ has been substituted for ‘‘@’’ and ‘‘$’’ for ‘‘#’’; the UNIX typing conventions make ‘‘@’’ and ‘‘#’’ rather inconvenient. In a SO answer, and in this comment, fuz notes that this is ...


22

This answer is written from memory, corrections may be made later if I remember/research more details. It starts with historical background to put things into perspective. This answer is specifically about Soviet ZX Spectrum clones, for other stuff read other answers, or for example this https://www.glaver.org/blog/?p=959 (Yes, Soviets were copying ...


22

It seems that JSR and RTS expected a down growing stack. Stack addressing modes R6, also written SP, is used as a hardware stack for traps and interrupts. A convention enforced by the set of modes the PDP-11 provides is that a stack grows downward—toward lower addresses—as items are pushed onto it. When a mode is applied to SP, or to any register ...


19

LOGO was intimately tied up with research into educational methods, and in teaching children how to use computers. The project proposal by Seymour Papert mentions "research on children's thinking and elementary education". Further LOGO memos are found here. The question remains is, is this what the language was "originally" for, or was the language co-...


18

The Heathkit H11 was available either as a kit or pre-assembled. It never became really popular in the West, but it was one of the most powerful PCs available in 1978. It used the LSI-11 small format of the PDP-11, and came with 4 kwords of memory for $1295. (That is 8 kbytes, but DEC preferred to refer to memory as register size, which was 16 bits.) It ...


17

You could reverse-engineer those early CPUs by grinding or etching away the top (plastic) layer of the chips down to the silicon die and examine the chip structures on an (optical) microscope. (Picture of a real Z80 die, from Wikipedia, Von Pauli Rautakorpi - Eigenes Werk, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=30690133) The Z80 had, ...


14

In spirit it's both, thus eventually neither. Features of the 6800 can be put in line with many CPUs of that time - from PDP-8 and -11 all the way to TI's 990 or even IBM's /360 - but none will put it decisively into being based on either. In fact, many of the arguments that can be used to put the 6800 into PDP-8/-11 heritage can as well be applied to the ...


13

Here is an example: mov r5,-(r5) That moves the contents of R5 to the address location specified in R5 after first decrementing R5. The question is what gets put in the memory location? Is it the contents of R5 before the instruction was started or is it the decremented R5. For example, if R5 contained 10 (decimal), usually the microcoded PDP-11s, would ...


13

Most sources say it was based on PDP-11. Here are citations from the book "Early Home Computers", summarizing the similarities and the differences: Unlike the PDP-11, 6502 and 8080, the 6800 was big-endian, as was the IBM 360 (...) Unlike the PDP-11 and 6502, but like the 8080, the 6800 used borrow carry (...) Unlike the 8080 and especially the ...


12

(speculation, but I'm pretty confident in it) Assuming \/ and /\ were actually used in early C to be max and min, someone probably quickly realized how totally stupid that symbology is. They look like the long-accepted boolean operators for OR (∨) and AND (∧). Having something you've been taught since high school means AND now stands for min in C would ...


12

After pressing "AP2+CБP" key combination computer switches to extended memory mode, in which screen is reduced to 1/4 of original size giving about 12Kb memory of screen RAM to user (extending user RAM from 16K to 28K).


11

Well, I used it. Back in the late 1980s, I led a small team who produced a signalling message distributor for British Rail (as it was then). This was on the PDP-11 in a mixture of C and Assembler. We used the coroutine switch instruction in the communications handler part of the application. It shaved the odd millisecond off the system's response to ...


11

There is a very minor difference between the "/dev/console" terminal port and any other "/dev/ttyxx" terminal ports: whether the port is optional. For the console port, the port is on a card that came with the base PDP-11 system (not an optional add-on). On some models of PDP-11 the port was on a separate card (or set of cards, e.g. the KL11 on a PDP-11/20)...


11

The system administrator console is the “terminal” used for system boot: init starts there, with a single-user shell, and only when that finishes does the system continue to multi-user boot (enabling the other terminals). The linked manpage has the details. The V6 PDP-11 installation instructions show how to enable additional terminals (connecting over TCP/...


11

This link describes the PDP-11/20 as having a speed of 800 nanoseconds. That works out as 1.25 MHz. Because that speed is the speed of the memory, (which is tightly connected to the speed of the CPU), and because the databus is no wider than 16 bits, that means that the PDP-11 will at most execute one instruction per clock cycle. And that speed precludes ...


11

Note: this is mostly guesswork I don't know this assembler but the f suffix seems to denote a label. Example bec 1f jmp cerror 1: Those instructions write the parameters in the parameter zone of the system call. mov 6(r5),0f mov 8(r5),0f+2 note that there's a 0 label just after the sys instruction. It holds the parameters (copies of those which ...


10

There was no clock. The way it worked was the Unibus and KA11 were intimate. To read a word from the bus, maybe core, maybe something else, the cpu put out address, control bits and data if write, wait some Unibus specified delay nanoseconds, then assert master sync. The slave decoded the master sync, address, and control then read the data or output data ...


9

There are two general ways to get terminals connected to a PDP-11: via Line Adapters or Multiplexors that provided direct terminal connections via a network link (using network protocols like Telnet, LAT, etc.) Terminal servers like the DECservers (but others made terminal servers as well, e.g. Xyplex) use method #2 to allow locally-attached terminals to ...


9

The PDP-11 could address 64kb of memory. It handled data as words, each word being addressed at an even memory location. So it depends on what your "data read instruction" is. If you issue a MOV instruction to move data from memory to a register, it would return a 16 bit word. A word instruction could only address even memory addresses. If you issue a ...


9

The short answer is yes. You can change the baud rate of a VT100 talking to a PDP-11. On the VT100, this is simply done using the Set Up facility. This is entered using the Set Up key on the top left of the VT100 keyboard. This takes the VT100 offline and into a configuration mode. Then press 5 to take you to a screen where you can change the baud rate ...


9

It's possibly a stretch, but the General Instruments CP1600 which was in the Intellivision, though otherwise unsuccessful, was based on the PDP-11 architecture. The Intellivision was a product of Mattel, not GI, so it's the one commercial machine that opted to use the chip rather than being the machine the chip was designed for. General Instruments designed ...


9

Apart from the R6 mechanisms in the hardware that expect the R6 stack to grow downwards (including the stack limit register), there's an implied bias for downward stack growth due to the predecrement/postincrement address modes. It's preferable to have your stack pointer point to the logical top-of-stack rather than the next free word on the stack, for ...


9

The older PDP-8 did similar.  It had only one register to speak of (the accumulator), so a subroutine that took several parameters would typically provide a set of values and/or pointers to values immediately after the call instruction (JMS).  The called routine would increment the return address to access parameters, and finally to return to the ...


9

According to Wikipedia: Logo, second paragraph fragment The language was conceived to teach concepts of programming related to Lisp and only later to enable what Papert called "body-syntonic reasoning", where students could understand, predict, and reason about the turtle's motion by imagining what they would do if they were the turtle.


9

As far as the Unibus is concerned, all reads are word-sized (and from an even address), and the CPU simply ignores the portion of the word it wasn't interested in. Thus, to read an odd-address byte, the CPU reads the even-address word containing that byte, and uses only the top 8 bits of the result. Unibus writes are allowed to be byte-sized (there are 2 ...


9

RSTS-11 (not RSTS/E) ran on the 11/20. It offered multiuser timesharing in BASIC. I think that in addition to the base 11/20 hardware, you needed a clock. You needed to max out the memory (28 Kwords). V4 was the last RSTS-11 release before it became RSTS/E. System manager's manual for RSTS-11. I have not checked to see if there are software kits available....


Only top voted, non community-wiki answers of a minimum length are eligible