From 5ffcd2b73114c345df82fb41e77b23bfe0aadabe Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Wed, 1 Nov 2023 07:27:47 -0700 Subject: [PATCH] Add alt code to 2006/toledo2 The alt code is based on the author's remarks that should allow users with non-standard systems like DOS/Windows which have conio.h to use this program, replacing read(2) and write(2) syscalls. It need hardly be mentioned that I have no way of testing this so it's possible I did something wrong but it seems not the case (whether anything has changed since 2006 that might also break it is unknown). The bug status has been updated both that one bug is not actually a bug but appeared to be a typo and there also appears to be a missing file (IMPORT.COM). --- 2006/toledo2/Makefile | 7 +++++-- 2006/toledo2/README.md | 38 ++++++++++++++++++++++++-------------- bugs.md | 22 +++++++--------------- thanks-for-fixes.md | 4 ++++ 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/2006/toledo2/Makefile b/2006/toledo2/Makefile index ace252884..ba66ba588 100644 --- a/2006/toledo2/Makefile +++ b/2006/toledo2/Makefile @@ -116,8 +116,8 @@ OBJ= ${PROG}.o DATA= C.BASIC C.BIOS TARGET= ${PROG} C # -ALT_OBJ= -ALT_TARGET= +ALT_OBJ= ${PROG}.alt.o +ALT_TARGET= ${PROG}.alt ################# @@ -144,6 +144,9 @@ C: C.BASIC alt: data ${ALT_TARGET} @${TRUE} +${PROG}.alt: ${PROG}.alt.c + ${CC} ${CFLAGS} $< -o $@ ${LDFLAGS} + # data files # data: ${DATA} diff --git a/2006/toledo2/README.md b/2006/toledo2/README.md index 6a38d78b2..233fc2e2d 100644 --- a/2006/toledo2/README.md +++ b/2006/toledo2/README.md @@ -12,6 +12,10 @@ Mexico\ make ``` +There is [alternate code](#alternate-code) that is based on the author's notes +for DOS/Windows. This cannot be tested by us, not even to compile, but it appears +that it should be fine, after the proper header files were added. + ### Bugs and (Mis)features @@ -19,7 +23,7 @@ The current status of this entry is: ``` STATUS: INABIAF - please **DO NOT** fix -STATUS: possible bug (possibly depending on system) - please help test and if necessary fix +STATUS: missing files - please provide them ``` For more detailed information see [2006 toledo2 in bugs.md](/bugs.md#2006-toledo2). @@ -36,13 +40,6 @@ below section, it is supposed to crash on termination though some noted this does not seem to happen in macOS. He asks ironically: 'if it's supposed to crash and it does not crash is it actually a bug or is it a feature? :-)' -### INABIAF - it's not a bug it's a feature! :-) - -By design this program is supposed to crash on termination. - -You must type in caps (except in strings) and this program is indeed -case-sensitive. - ## Try: @@ -61,14 +58,23 @@ RUN To end the program hit ctrl-z. -### IABINAF - it's a bug it's not a feature! :-) +## Alternate code: -Although the program does not crash when reading in `C.BIOS` it appears that the -CP/M emulator does not work as expected at least according to the author's -remarks. +This version, as noted, should work for DOS/Windows. It uses non-standard +functions in place of `read(2)` and `write(2)`. -See also [bugs.md](/bugs.md) for more details. +### Alternate build: +```sh +make alt +``` + +### Alternate use: + +The author noted that for PC/DOS you will have to add `ANSI.SYS` to your +`CONFIG.SYS` but this is also not something we can test. + +Use `toledeo2.alt` as you would `toledo2` above. ## Judges' remarks: @@ -166,7 +172,7 @@ When the `>` prompt appears, do: IMPORT DDT.COM ``` -When it ends, do `HALT`, so the file is saved, and you can start +When it ends, do `HALT`, so the file is closed, and you can start the same process with another file. At this time I have tested successfully the following software @@ -199,11 +205,15 @@ ANSI terminal: write --> putchar(7[o]) system --> nothing +Notice that you'll have to do `#include ` as well. + Also add the following to trap Ctrl-C: #include signal(SIGINT, SIG_IGN); +NOTE: this is what the [alternate code](#alternate-code) is for! + NOTE from the judges: in Unix like systems `getch()` is part of curses but this is not what is needed. diff --git a/bugs.md b/bugs.md index 9683b1e25..33869649f 100644 --- a/bugs.md +++ b/bugs.md @@ -1534,28 +1534,20 @@ not crash in macOS (it appeared to work fine in fedora linux on an `x86_64` architecture but he does not know if it crashed in macOS Ventura due to the fact it is an `arm64` CPU - the Apple silicon chip). This fix, BTW, is a mix of a fix by [Yusuke Endoh](/winners.html#Yusuke_Endoh) and Cody's. Nevertheless there are -two features that are not bugs and one bug (see below). +two features that are not bugs. By design this program is supposed to crash on termination. You must type in caps (except in strings) and this program is indeed case-sensitive. -### STATUS: possible bug (possibly depending on system) - please help test and if necessary fix +### STATUS: missing files - please provide them -The author showed something like this in their remarks: - -```sh -./toledo2 DDT.COM -A> IMPORT DDT.COM -``` - -but the `A>` prompt never appears; instead it's just the same as if you -specified no arg which is `>`. It seems like the `A>` might be a typo. That -being said from the description by the author, if the required files exist in -the directory, it seems you can do `HALT` 'so the file is saved, and you can -start the same process with another file'. This does not seem to work but it -might be not enough information or a misunderstanding. +A file is missing from the archive linked to by the author so we have not been +able to add it. Cody tried a few of the other zip files at the website linked to +but no luck. Do you have the proper file? The file is `IMPORT.COM`. If you do +please provide a link or make a pull request, adding it to the repo, after +testing it to make sure it works in the program. # 2007 diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index ef4c4e0c4..40cc952c2 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -2274,6 +2274,10 @@ macOS - it did not seem to be a problem under linux, at least not fedora. The problem was wrong variable types - implicit `int`s instead of `FILE *`s. It now works with both macOS and linux. +Cody also added the (untested) alt code that is based on the author's remarks to +port this to systems that have the non-standard `kbhit()` and `getch()` (not the +one from curses) which is typically (always?) in `conio.h`. + ## [2006/toledo3](2006/toledo3/toledo3.c) ([README.md](2006/toledo3/README.md]))