Did CP/M provide compatibility for screen-based programs?
I refer here to 'screen-based programs' that are not actually graphical, but take full advantage of the screen as a two-dimensional array of 80x25 characters, as opposed to typical 'command-line programs' whose output is essentially one dimensional.
MS-DOS provided compatibility for command-line programs. A single binary could run on many different and incompatible computers, provided they all ran MS-DOS.
MS-DOS did not provide compatibility for screen-based programs. In theory it did but in practice it didn't; the screen display routines provided by the operating system were so slow that we all wrote directly to video RAM instead, which meant our programs would only run on an IBM PC or clone.
CP/M was in a sense the precursor of MS-DOS. Did it provide practical compatibility for screen-based programs? Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
cp-m
add a comment |
I refer here to 'screen-based programs' that are not actually graphical, but take full advantage of the screen as a two-dimensional array of 80x25 characters, as opposed to typical 'command-line programs' whose output is essentially one dimensional.
MS-DOS provided compatibility for command-line programs. A single binary could run on many different and incompatible computers, provided they all ran MS-DOS.
MS-DOS did not provide compatibility for screen-based programs. In theory it did but in practice it didn't; the screen display routines provided by the operating system were so slow that we all wrote directly to video RAM instead, which meant our programs would only run on an IBM PC or clone.
CP/M was in a sense the precursor of MS-DOS. Did it provide practical compatibility for screen-based programs? Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
cp-m
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago
add a comment |
I refer here to 'screen-based programs' that are not actually graphical, but take full advantage of the screen as a two-dimensional array of 80x25 characters, as opposed to typical 'command-line programs' whose output is essentially one dimensional.
MS-DOS provided compatibility for command-line programs. A single binary could run on many different and incompatible computers, provided they all ran MS-DOS.
MS-DOS did not provide compatibility for screen-based programs. In theory it did but in practice it didn't; the screen display routines provided by the operating system were so slow that we all wrote directly to video RAM instead, which meant our programs would only run on an IBM PC or clone.
CP/M was in a sense the precursor of MS-DOS. Did it provide practical compatibility for screen-based programs? Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
cp-m
I refer here to 'screen-based programs' that are not actually graphical, but take full advantage of the screen as a two-dimensional array of 80x25 characters, as opposed to typical 'command-line programs' whose output is essentially one dimensional.
MS-DOS provided compatibility for command-line programs. A single binary could run on many different and incompatible computers, provided they all ran MS-DOS.
MS-DOS did not provide compatibility for screen-based programs. In theory it did but in practice it didn't; the screen display routines provided by the operating system were so slow that we all wrote directly to video RAM instead, which meant our programs would only run on an IBM PC or clone.
CP/M was in a sense the precursor of MS-DOS. Did it provide practical compatibility for screen-based programs? Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
cp-m
cp-m
asked 3 hours ago
rwallacerwallace
7,776336110
7,776336110
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago
add a comment |
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago
add a comment |
2 Answers
2
active
oldest
votes
Two-dimensional positioning was not provided by basic CP/M; the BIOS provides only a single-character console output call, and does not define any control characters. Furthermore, unlike MS-DOS there was never a dominant hardware configuration behind CP/M so going straight to hardware wasn't an option.
In practice programs tended to ship with support for a variety of popular terminals — the Hazeltine, the ADM3a, the VT52, etc — and a setup utility to pick your display type. In implementation terms, that usually didn't require much more complexity than substituting the proper control codes. Programs were supplied as a single binary and small amounts of data were modified by the setup utility.
The problem is essentially the same as that solved by the termcap database in UNIX, but with each program providing its own solution.
A later CP/M extension, GSX, provided hardware-independent graphics display and developed into the virtual device interface underlying GEM, but was far too late to make a substantial impact.
Sample setup, from Turbo Pascal; upon launch TINST the user may configure either the screen or commands (i.e. keyboard control codes):
Output support is pretty wide:
All supported by the single binary in a single distribution, of less than 132kb in size (including sample programs).
Input selection is no more complicated than asking the user to press the keys they want:
It goes on a while — that's just the first screen.
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
|
show 1 more comment
This was the key concept of an Operating System
Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
In the Linux (and previously Unix) world, it is quite common to distribute libraries, languages, applications, etc. as source code. That works well because on the one hand, it helps to handle differences in system architecture (32-bit vs. 64-bit, x86 vs. Arm, etc.) and on the other hand, the systems are big enough to easily include compilers, the compilers are (for all practical purposes) open-source and included (or easily added) and the systems are fast enough (at least these days) to compile and link almost anything in a matter of minutes, often just seconds.
That wasn't the way things worked back in CP/M days. If you wanted to compile something, you needed to buy the right compiler, on the right disk format, and swap a bunch of floppies to get things done. Not practical for mass market software.
On the other hand, as with MS-DOS, Unix/Linux and other newer operating systems, CP/M did provide a full layer of abstraction to hide all the details of access to standard devices - this includes disks, terminals, printers, etc. The actual codes to be sent to terminals and printers would vary, of course, as did floppy disk formats (# and size of sectors, etc.), but the CP/M function calls were the same on any system, from Altair to Zenith. This was, arguably, the biggest advance of CP/M for the microcomputer world, as it avoided the need to load source code (whether by typing or on paper tape or eventually floppy disk) and then (hopefully) compile it on/for the target system. Instead, the most you had to do was convert a physical disk format - and there were service bureaus that could do that if the software manufacturer couldn't provide your preferred format.
As far as text display speed on MS-DOS, it was often much worse with CP/M. Typical terminal speed was 19,200 bps or even 9,600 bps. But compared to the common alternative of a 300bps modem connecting to a minicomputer, it was super fast.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "648"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f8702%2fdid-cp-m-provide-compatibility-for-screen-based-programs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Two-dimensional positioning was not provided by basic CP/M; the BIOS provides only a single-character console output call, and does not define any control characters. Furthermore, unlike MS-DOS there was never a dominant hardware configuration behind CP/M so going straight to hardware wasn't an option.
In practice programs tended to ship with support for a variety of popular terminals — the Hazeltine, the ADM3a, the VT52, etc — and a setup utility to pick your display type. In implementation terms, that usually didn't require much more complexity than substituting the proper control codes. Programs were supplied as a single binary and small amounts of data were modified by the setup utility.
The problem is essentially the same as that solved by the termcap database in UNIX, but with each program providing its own solution.
A later CP/M extension, GSX, provided hardware-independent graphics display and developed into the virtual device interface underlying GEM, but was far too late to make a substantial impact.
Sample setup, from Turbo Pascal; upon launch TINST the user may configure either the screen or commands (i.e. keyboard control codes):
Output support is pretty wide:
All supported by the single binary in a single distribution, of less than 132kb in size (including sample programs).
Input selection is no more complicated than asking the user to press the keys they want:
It goes on a while — that's just the first screen.
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
|
show 1 more comment
Two-dimensional positioning was not provided by basic CP/M; the BIOS provides only a single-character console output call, and does not define any control characters. Furthermore, unlike MS-DOS there was never a dominant hardware configuration behind CP/M so going straight to hardware wasn't an option.
In practice programs tended to ship with support for a variety of popular terminals — the Hazeltine, the ADM3a, the VT52, etc — and a setup utility to pick your display type. In implementation terms, that usually didn't require much more complexity than substituting the proper control codes. Programs were supplied as a single binary and small amounts of data were modified by the setup utility.
The problem is essentially the same as that solved by the termcap database in UNIX, but with each program providing its own solution.
A later CP/M extension, GSX, provided hardware-independent graphics display and developed into the virtual device interface underlying GEM, but was far too late to make a substantial impact.
Sample setup, from Turbo Pascal; upon launch TINST the user may configure either the screen or commands (i.e. keyboard control codes):
Output support is pretty wide:
All supported by the single binary in a single distribution, of less than 132kb in size (including sample programs).
Input selection is no more complicated than asking the user to press the keys they want:
It goes on a while — that's just the first screen.
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
|
show 1 more comment
Two-dimensional positioning was not provided by basic CP/M; the BIOS provides only a single-character console output call, and does not define any control characters. Furthermore, unlike MS-DOS there was never a dominant hardware configuration behind CP/M so going straight to hardware wasn't an option.
In practice programs tended to ship with support for a variety of popular terminals — the Hazeltine, the ADM3a, the VT52, etc — and a setup utility to pick your display type. In implementation terms, that usually didn't require much more complexity than substituting the proper control codes. Programs were supplied as a single binary and small amounts of data were modified by the setup utility.
The problem is essentially the same as that solved by the termcap database in UNIX, but with each program providing its own solution.
A later CP/M extension, GSX, provided hardware-independent graphics display and developed into the virtual device interface underlying GEM, but was far too late to make a substantial impact.
Sample setup, from Turbo Pascal; upon launch TINST the user may configure either the screen or commands (i.e. keyboard control codes):
Output support is pretty wide:
All supported by the single binary in a single distribution, of less than 132kb in size (including sample programs).
Input selection is no more complicated than asking the user to press the keys they want:
It goes on a while — that's just the first screen.
Two-dimensional positioning was not provided by basic CP/M; the BIOS provides only a single-character console output call, and does not define any control characters. Furthermore, unlike MS-DOS there was never a dominant hardware configuration behind CP/M so going straight to hardware wasn't an option.
In practice programs tended to ship with support for a variety of popular terminals — the Hazeltine, the ADM3a, the VT52, etc — and a setup utility to pick your display type. In implementation terms, that usually didn't require much more complexity than substituting the proper control codes. Programs were supplied as a single binary and small amounts of data were modified by the setup utility.
The problem is essentially the same as that solved by the termcap database in UNIX, but with each program providing its own solution.
A later CP/M extension, GSX, provided hardware-independent graphics display and developed into the virtual device interface underlying GEM, but was far too late to make a substantial impact.
Sample setup, from Turbo Pascal; upon launch TINST the user may configure either the screen or commands (i.e. keyboard control codes):
Output support is pretty wide:
All supported by the single binary in a single distribution, of less than 132kb in size (including sample programs).
Input selection is no more complicated than asking the user to press the keys they want:
It goes on a while — that's just the first screen.
edited 3 hours ago
answered 3 hours ago
TommyTommy
13.8k13767
13.8k13767
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
|
show 1 more comment
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
Terminals? I thought CP/M was mostly used on classic microcomputers with video memory in the CPU address space. Are you saying most CP/M computers used a serial terminal for their display?
– rwallace
3 hours ago
2
2
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Yes, it originated on computers of the Altair 8800 form where one would actually have to locate and attach a real terminal, and most microcomputer implementations then just emulated one of the classic terminals. Some with the video memory in CPU address space, some without.
– Tommy
3 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
Now that is interesting. Thanks!
– rwallace
2 hours ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
MSDOS provided a similar functionality through the ANSI.SYS driver, where you could output terminal (VT100 subset) escape sequences to the console and control the screen display.
– mannaggia
1 hour ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
@rwallace I think (but no proof without research that I don't have time for) that the vast majority of CP/M systems used a 24x80 moderately smart terminal (or occasionally smaller, but 24x80 was the de facto standard) and escape/control codes to do the work. Turbo Pascal raised everything to a fine art, but WordStar and plenty of other programs did this too.
– manassehkatz
26 mins ago
|
show 1 more comment
This was the key concept of an Operating System
Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
In the Linux (and previously Unix) world, it is quite common to distribute libraries, languages, applications, etc. as source code. That works well because on the one hand, it helps to handle differences in system architecture (32-bit vs. 64-bit, x86 vs. Arm, etc.) and on the other hand, the systems are big enough to easily include compilers, the compilers are (for all practical purposes) open-source and included (or easily added) and the systems are fast enough (at least these days) to compile and link almost anything in a matter of minutes, often just seconds.
That wasn't the way things worked back in CP/M days. If you wanted to compile something, you needed to buy the right compiler, on the right disk format, and swap a bunch of floppies to get things done. Not practical for mass market software.
On the other hand, as with MS-DOS, Unix/Linux and other newer operating systems, CP/M did provide a full layer of abstraction to hide all the details of access to standard devices - this includes disks, terminals, printers, etc. The actual codes to be sent to terminals and printers would vary, of course, as did floppy disk formats (# and size of sectors, etc.), but the CP/M function calls were the same on any system, from Altair to Zenith. This was, arguably, the biggest advance of CP/M for the microcomputer world, as it avoided the need to load source code (whether by typing or on paper tape or eventually floppy disk) and then (hopefully) compile it on/for the target system. Instead, the most you had to do was convert a physical disk format - and there were service bureaus that could do that if the software manufacturer couldn't provide your preferred format.
As far as text display speed on MS-DOS, it was often much worse with CP/M. Typical terminal speed was 19,200 bps or even 9,600 bps. But compared to the common alternative of a 300bps modem connecting to a minicomputer, it was super fast.
add a comment |
This was the key concept of an Operating System
Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
In the Linux (and previously Unix) world, it is quite common to distribute libraries, languages, applications, etc. as source code. That works well because on the one hand, it helps to handle differences in system architecture (32-bit vs. 64-bit, x86 vs. Arm, etc.) and on the other hand, the systems are big enough to easily include compilers, the compilers are (for all practical purposes) open-source and included (or easily added) and the systems are fast enough (at least these days) to compile and link almost anything in a matter of minutes, often just seconds.
That wasn't the way things worked back in CP/M days. If you wanted to compile something, you needed to buy the right compiler, on the right disk format, and swap a bunch of floppies to get things done. Not practical for mass market software.
On the other hand, as with MS-DOS, Unix/Linux and other newer operating systems, CP/M did provide a full layer of abstraction to hide all the details of access to standard devices - this includes disks, terminals, printers, etc. The actual codes to be sent to terminals and printers would vary, of course, as did floppy disk formats (# and size of sectors, etc.), but the CP/M function calls were the same on any system, from Altair to Zenith. This was, arguably, the biggest advance of CP/M for the microcomputer world, as it avoided the need to load source code (whether by typing or on paper tape or eventually floppy disk) and then (hopefully) compile it on/for the target system. Instead, the most you had to do was convert a physical disk format - and there were service bureaus that could do that if the software manufacturer couldn't provide your preferred format.
As far as text display speed on MS-DOS, it was often much worse with CP/M. Typical terminal speed was 19,200 bps or even 9,600 bps. But compared to the common alternative of a 300bps modem connecting to a minicomputer, it was super fast.
add a comment |
This was the key concept of an Operating System
Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
In the Linux (and previously Unix) world, it is quite common to distribute libraries, languages, applications, etc. as source code. That works well because on the one hand, it helps to handle differences in system architecture (32-bit vs. 64-bit, x86 vs. Arm, etc.) and on the other hand, the systems are big enough to easily include compilers, the compilers are (for all practical purposes) open-source and included (or easily added) and the systems are fast enough (at least these days) to compile and link almost anything in a matter of minutes, often just seconds.
That wasn't the way things worked back in CP/M days. If you wanted to compile something, you needed to buy the right compiler, on the right disk format, and swap a bunch of floppies to get things done. Not practical for mass market software.
On the other hand, as with MS-DOS, Unix/Linux and other newer operating systems, CP/M did provide a full layer of abstraction to hide all the details of access to standard devices - this includes disks, terminals, printers, etc. The actual codes to be sent to terminals and printers would vary, of course, as did floppy disk formats (# and size of sectors, etc.), but the CP/M function calls were the same on any system, from Altair to Zenith. This was, arguably, the biggest advance of CP/M for the microcomputer world, as it avoided the need to load source code (whether by typing or on paper tape or eventually floppy disk) and then (hopefully) compile it on/for the target system. Instead, the most you had to do was convert a physical disk format - and there were service bureaus that could do that if the software manufacturer couldn't provide your preferred format.
As far as text display speed on MS-DOS, it was often much worse with CP/M. Typical terminal speed was 19,200 bps or even 9,600 bps. But compared to the common alternative of a 300bps modem connecting to a minicomputer, it was super fast.
This was the key concept of an Operating System
Could CP/M versions of programs like VisiCalc and WordStar provide a single binary that would run on any Z80 machine with CP/M, or did they have to be reassembled or modified for each incompatible computer?
In the Linux (and previously Unix) world, it is quite common to distribute libraries, languages, applications, etc. as source code. That works well because on the one hand, it helps to handle differences in system architecture (32-bit vs. 64-bit, x86 vs. Arm, etc.) and on the other hand, the systems are big enough to easily include compilers, the compilers are (for all practical purposes) open-source and included (or easily added) and the systems are fast enough (at least these days) to compile and link almost anything in a matter of minutes, often just seconds.
That wasn't the way things worked back in CP/M days. If you wanted to compile something, you needed to buy the right compiler, on the right disk format, and swap a bunch of floppies to get things done. Not practical for mass market software.
On the other hand, as with MS-DOS, Unix/Linux and other newer operating systems, CP/M did provide a full layer of abstraction to hide all the details of access to standard devices - this includes disks, terminals, printers, etc. The actual codes to be sent to terminals and printers would vary, of course, as did floppy disk formats (# and size of sectors, etc.), but the CP/M function calls were the same on any system, from Altair to Zenith. This was, arguably, the biggest advance of CP/M for the microcomputer world, as it avoided the need to load source code (whether by typing or on paper tape or eventually floppy disk) and then (hopefully) compile it on/for the target system. Instead, the most you had to do was convert a physical disk format - and there were service bureaus that could do that if the software manufacturer couldn't provide your preferred format.
As far as text display speed on MS-DOS, it was often much worse with CP/M. Typical terminal speed was 19,200 bps or even 9,600 bps. But compared to the common alternative of a 300bps modem connecting to a minicomputer, it was super fast.
answered 11 mins ago
manassehkatzmanassehkatz
1,984318
1,984318
add a comment |
add a comment |
Thanks for contributing an answer to Retrocomputing Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f8702%2fdid-cp-m-provide-compatibility-for-screen-based-programs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
For the few systems that did use a memory mapped display, it was almost always 80x24 not 25. 80x25 was an IBM PC thing and occasionally used elsewhere (e.g., function key labels on Wyse 100 and other terminals) but the target display for CP/M software was 80x24.
– manassehkatz
23 mins ago