This is how I did it in an old program I wrote to exercise my knowledge of the DMA DSP of the Sound Blaster, back in 1996.
char *AllocDMABuffer (void)
unsigned int Segm;
while (Segm & 0x0FFF)
For this specific ...
You’re correct, the goal of this code is to ensure that the allocated buffer is entirely contained within the same DMA segment (DMA operates on 64KiB segments, not to be confused with the 16-byte-aligned real-mode segments of the x86 addressing model).
The assumption that the allocator returns successive blocks is safe, at least before the heap gets ...
https://github.com/pkimpel/retro-b5500/blob/master/source/XBASIC/XBASIC.alg_m is a BASIC interpreter for the B5500, written in ALGOL, and dated 1975.
This also mentions Burroughs's own BASIC, but a cursory search doesn't turn up a manual etc. so I can't ascribe a date to it. However ALL Burroughs system software was either written in ALGOL (this includes ...
The BASIC interpreter for the TI 99/4A computer is written in an intermediate language called GPL, which in turn runs natively on the TMS9900 microprocessor.
BASIC for the MAI Basic Four minicomputer series was programmed in a version of TREE-META - a language for writing compilers in. I hesitate to call it a "high level language". TREE-META was more of a notation - very similar to BNF - with callouts to action routines. But it was not assembly language in any way. It was in fact an "attributed ...
Gordon Eubanks' BASIC-E for CP/M was written in PL/M around 1977. While PL/M is a fairly low-level systems programming language almost entirely targeting Intel processors, it's still higher level than directly targeting a specific processor in assembly language.
BASIC-E compiles to an intermediate p-code, which is then interpreted by a separate runtime. So ...
The 1966 ANSI standard X3.9-1966 ANSI standard (https://wg5-fortran.org/ARCHIVE/Fortran66.pdf) just says
A GO TO assignment statement is of the form
ASSIGN k to i
where k is a statement label and i is an integer variable name.
so anything other than an integer variable name would have been an extension to Fortran 66.
From the compiler writer's point of ...
DEC PDP-10 Fortran documentation says the target of an assigned go to can be a variable or an array element. It sounds like it would allow the construct discussed in this question.
This edition of the manual is dated 1972.
I can't say whether IBM invented this extension or even whether any IBM compiler ever supported it, but at least as of the IBFTC FORTRAN IV compiler for IBSYS version 13 (manual dated 1968), subscripted variables were explicitly prohibited in an ASSIGN.
Assuming the vendor's documentation to be accurate :-)
A System/360 FORTRAN IV manual says the same thing (...
Fortran was developed with scientific computing in mind. Negative values clearly occur quite frequently when doing scientific computing or, for that matter, in many other problem domains that the developers of the language might have considered.
Supporting unsigned integral would have had some value but the language would have still had to support signed ...
FORTRAN was originally developed for the IBM 704 computer, which stored integers in sign-and-magnitude format. In the original documentation, it supports fixed-point variables, which used the machine’s native format, floating-point variables, and unsigned fixed-point constants, which were intended for line numbers and subscripts. These would be translated ...