Add a dos installer, and improve the makefile on dos #1
7
.gitignore
vendored
7
.gitignore
vendored
@ -4,3 +4,10 @@
|
||||
.vscode/
|
||||
.DS_Store
|
||||
build/
|
||||
BUILD/
|
||||
dist-dos/
|
||||
*.obj
|
||||
*.OBJ
|
||||
*.log
|
||||
*.LOG
|
||||
|
||||
|
||||
89
INSTALL.BAT
Normal file
89
INSTALL.BAT
Normal file
@ -0,0 +1,89 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM INSTALL.BAT - cnotes v0.1.1 DOS Installer
|
||||
REM ================================================================
|
||||
REM Simple installer for Turbo C++ 3.0 built cnotes tools
|
||||
REM Places everything in C:\CNOTES by default
|
||||
REM ================================================================
|
||||
|
||||
cls
|
||||
echo.
|
||||
echo cnotes v0.1.1 - DOS Installation
|
||||
echo =================================
|
||||
echo.
|
||||
echo This will install the cnotes commands (cnadd, cndump, etc.)
|
||||
echo to C:\CNOTES
|
||||
echo.
|
||||
echo You can change the destination by editing this file.
|
||||
echo.
|
||||
|
||||
if "%CNOTES_HOME%"=="" set TARGET=C:\CNOTES
|
||||
if not "%CNOTES_HOME%"=="" set TARGET=%CNOTES_HOME%
|
||||
|
||||
echo Target directory: %TARGET%
|
||||
echo.
|
||||
|
||||
if exist %TARGET%\nul goto exists
|
||||
echo Creating directory %TARGET%...
|
||||
md %TARGET%
|
||||
if errorlevel 1 goto fail
|
||||
|
||||
:exists
|
||||
echo Copying files...
|
||||
copy cnadd.exe %TARGET%\cnadd.exe >nul
|
||||
copy cndump.exe %TARGET%\cndump.exe >nul
|
||||
copy cncount.exe %TARGET%\cncount.exe >nul
|
||||
copy cndel.exe %TARGET%\cndel.exe >nul
|
||||
copy cnfind.exe %TARGET%\cnfind.exe >nul
|
||||
copy cnhelp.exe %TARGET%\cnhelp.exe >nul
|
||||
|
||||
if errorlevel 1 goto copyfail
|
||||
|
||||
echo.
|
||||
echo Add C:\CNOTES to PATH permanently? (Y/N)
|
||||
choice /c:yn
|
||||
if errorlevel 2 goto noautoexec
|
||||
|
||||
echo SET PATH=%%PATH%%;C:\CNOTES >> C:\AUTOEXEC.BAT
|
||||
echo Added to AUTOEXEC.BAT (will take effect after reboot)
|
||||
goto endauto
|
||||
|
||||
:noautoexec
|
||||
echo Skipped AUTOEXEC.BAT modification.
|
||||
echo.
|
||||
echo To use cnotes:
|
||||
echo 1. Add the directory to your PATH (recommended):
|
||||
echo.
|
||||
echo SET PATH=%%PATH%%;%TARGET%
|
||||
echo.
|
||||
echo (add this line to AUTOEXEC.BAT for permanent effect)
|
||||
echo.
|
||||
echo 2. Or run commands directly:
|
||||
echo %TARGET%\cnadd "Your first note"
|
||||
echo.
|
||||
echo Type CNHELP for command overview.
|
||||
echo.
|
||||
goto endauto
|
||||
|
||||
:endauto
|
||||
echo.
|
||||
echo Installation complete!
|
||||
echo.
|
||||
goto end
|
||||
|
||||
:copyfail
|
||||
echo.
|
||||
echo ERROR: Could not copy one or more files.
|
||||
echo Make sure all .EXE files are in the current directory.
|
||||
echo Check disk space and write permissions.
|
||||
goto end
|
||||
|
||||
:fail
|
||||
echo.
|
||||
echo ERROR: Could not create directory %TARGET%
|
||||
echo Check drive letter, disk space, or path.
|
||||
goto end
|
||||
|
||||
:end
|
||||
echo.
|
||||
pause
|
||||
37
MAKEFILE.TC
37
MAKEFILE.TC
@ -18,35 +18,68 @@ CFLAGS = -A -w -ml -I.\include
|
||||
|
||||
SRCDIR = src
|
||||
INCDIR = include
|
||||
BUILDDIR = build
|
||||
BUILDDIR = BUILD
|
||||
INSTALL_FILE = INSTALL.BAT
|
||||
README_DOS = READ-DOS.TXT
|
||||
|
||||
.c.obj:
|
||||
$(CC) $(CFLAGS) -c -o$*.obj $<
|
||||
|
||||
all: $(BUILDDIR) $(BUILDDIR)\cnadd.exe $(BUILDDIR)\cndump.exe $(BUILDDIR)\cncount.exe $(BUILDDIR)\cndel.exe $(BUILDDIR)\cnfind.exe $(BUILDDIR)\cnhelp.exe
|
||||
# ────────────────────────────────────────────────
|
||||
# Main targets – split to avoid long command lines
|
||||
# ────────────────────────────────────────────────
|
||||
|
||||
all: build-exes build-support-files
|
||||
|
||||
build-exes: $(BUILDDIR)\cnadd.exe \
|
||||
$(BUILDDIR)\cndump.exe \
|
||||
$(BUILDDIR)\cncount.exe \
|
||||
$(BUILDDIR)\cndel.exe \
|
||||
$(BUILDDIR)\cnfind.exe \
|
||||
$(BUILDDIR)\cnhelp.exe
|
||||
|
||||
build-support-files: $(BUILDDIR)\$(INSTALL_FILE) \
|
||||
$(BUILDDIR)\$(README_DOS)
|
||||
|
||||
$(BUILDDIR):
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
|
||||
# Individual exe rules (unchanged)
|
||||
$(BUILDDIR)\cnadd.exe: $(SRCDIR)\cnadd.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnadd.exe $(SRCDIR)\cnadd.c
|
||||
|
||||
$(BUILDDIR)\cndump.exe: $(SRCDIR)\cndump.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndump.exe $(SRCDIR)\cndump.c
|
||||
|
||||
$(BUILDDIR)\cncount.exe: $(SRCDIR)\cncount.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cncount.exe $(SRCDIR)\cncount.c
|
||||
|
||||
$(BUILDDIR)\cndel.exe: $(SRCDIR)\cndel.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndel.exe $(SRCDIR)\cndel.c
|
||||
|
||||
$(BUILDDIR)\cnfind.exe: $(SRCDIR)\cnfind.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnfind.exe $(SRCDIR)\cnfind.c
|
||||
|
||||
$(BUILDDIR)\cnhelp.exe: $(SRCDIR)\cnhelp.c
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnhelp.exe $(SRCDIR)\cnhelp.c
|
||||
|
||||
$(BUILDDIR)\$(INSTALL_FILE): $(INSTALL_FILE)
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
copy $(INSTALL_FILE) $(BUILDDIR)\$(INSTALL_FILE)
|
||||
|
||||
$(BUILDDIR)\$(README_DOS): $(README_DOS)
|
||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||
copy $(README_DOS) $(BUILDDIR)\$(README_DOS)
|
||||
|
||||
clean:
|
||||
if exist $(BUILDDIR)\*.exe del $(BUILDDIR)\*.exe
|
||||
if exist $(BUILDDIR)\*.obj del $(BUILDDIR)\*.obj
|
||||
if exist $(BUILDDIR)\$(INSTALL_FILE) del $(BUILDDIR)\$(INSTALL_FILE)
|
||||
if exist $(BUILDDIR)\$(README_DOS) del $(BUILDDIR)\$(README_DOS)
|
||||
if exist $(BUILDDIR) rmdir $(BUILDDIR)
|
||||
|
||||
54
READ-DOS.TXT
Normal file
54
READ-DOS.TXT
Normal file
@ -0,0 +1,54 @@
|
||||
cnotes v0.1.1 for DOS
|
||||
=====================
|
||||
|
||||
A simple command-line note-taking system
|
||||
Built with Turbo C++ 3.0 (large memory model)
|
||||
|
||||
WHAT IS THIS?
|
||||
------------
|
||||
cnotes lets you quickly add, view, search, count, and archive short notes
|
||||
from the DOS prompt. Notes are saved in plain cnotes.csv in your notes
|
||||
directory (usually current directory on DOS).
|
||||
|
||||
COMMANDS INCLUDED
|
||||
-----------------
|
||||
CNADD - Add a new note
|
||||
CNDUMP - Show all notes in a table
|
||||
CNCOUNT - Show statistics (total, by category, by date)
|
||||
CNDEL - Archive (move) notes to cnotes.arc
|
||||
CNFIND - Search notes by text/category/date
|
||||
CNHELP - Show this help overview
|
||||
|
||||
INSTALLATION
|
||||
------------
|
||||
1. Unzip all files to any directory (e.g. C:\TEMP)
|
||||
2. Run INSTALL.BAT from that directory
|
||||
3. Follow the on-screen prompts
|
||||
|
||||
After installation:
|
||||
- Best: add C:\CNOTES to your PATH
|
||||
SET PATH=%PATH%;C:\CNOTES
|
||||
(put this line in C:\AUTOEXEC.BAT to make it permanent)
|
||||
- Or run commands with full path: C:\CNOTES\CNADD "Test note"
|
||||
|
||||
QUICK START
|
||||
-----------
|
||||
CNADD "Remember to call Bob"
|
||||
CNADD -c Work "Meeting 3pm tomorrow"
|
||||
|
||||
CNDUMP - view all notes
|
||||
CNHELP - full command help
|
||||
CNHELP cnadd - help for one command
|
||||
|
||||
NOTES LOCATION
|
||||
--------------
|
||||
By default: current directory (cnotes.csv and cnotes.arc)
|
||||
Override with environment variable:
|
||||
SET CNOTES_PATH=C:\MYNOTES
|
||||
|
||||
Have fun logging notes the retro way!
|
||||
|
||||
Questions or bugs? See the project at:
|
||||
https://repos.gmgauthier.com/gmgauthier/cnotes
|
||||
|
||||
Greg Gauthier - February 2026
|
||||
97
make-dos-zip.sh
Executable file
97
make-dos-zip.sh
Executable file
@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# make-dos-zip.sh
|
||||
# ================
|
||||
# Packages already-built DOS cnotes binaries into a release zip.
|
||||
#
|
||||
# Assumes:
|
||||
# - You have already run make -f makefile.tc in DOSBox
|
||||
# - All .exe files + INSTALL.BAT are in the 'build/' directory
|
||||
#
|
||||
# Usage:
|
||||
# ./make-dos-zip.sh [version]
|
||||
#
|
||||
# Examples:
|
||||
# ./make-dos-zip.sh 0.1.1 → creates cnotes-v0.1.1-dos.zip
|
||||
# ./make-dos-zip.sh → uses date as version (YYYYMMDD)
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
VERSION="${1:-$(date +%Y%m%d)}"
|
||||
ZIP_NAME="cnotes-v${VERSION}-dos.zip"
|
||||
BUILD_DIR="BUILD"
|
||||
DIST_DIR="dist-dos"
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${GREEN}Packaging DOS release: ${ZIP_NAME}${NC}"
|
||||
|
||||
# 1. Check required files exist in build/
|
||||
REQUIRED_FILES=(
|
||||
"CNADD.EXE"
|
||||
"CNDUMP.EXE"
|
||||
"CNCOUNT.EXE"
|
||||
"CNDEL.EXE"
|
||||
"CNFIND.EXE"
|
||||
"CNHELP.EXE"
|
||||
"INSTALL.BAT"
|
||||
"READ-DOS.TXT"
|
||||
)
|
||||
|
||||
missing=0
|
||||
for file in "${REQUIRED_FILES[@]}"; do
|
||||
if [ ! -f "${BUILD_DIR}/${file}" ]; then
|
||||
echo -e "${RED}Missing required file: ${BUILD_DIR}/${file}${NC}"
|
||||
missing=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $missing -eq 1 ]; then
|
||||
echo -e "${RED}Aborting: one or more required files are missing.${NC}"
|
||||
echo "Make sure you have built with 'make -f makefile.tc' in DOSBox"
|
||||
echo "and that INSTALL.BAT is present."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2. Prepare clean staging directory
|
||||
rm -rf "${DIST_DIR}"
|
||||
mkdir -p "${DIST_DIR}"
|
||||
|
||||
# 3. Copy files to staging
|
||||
echo "Staging files..."
|
||||
cp "${BUILD_DIR}"/*.EXE "${DIST_DIR}"/
|
||||
cp "${BUILD_DIR}/INSTALL.BAT" "${DIST_DIR}"/
|
||||
cp "$$ {BUILD_DIR}/READ-DOS.TXT" " $${DIST_DIR}"/ 2>/dev/null || {
|
||||
echo -e "$$ {RED}Warning: READ-DOS.TXT not found in build/ (optional but recommended) $${NC}"
|
||||
}
|
||||
|
||||
# Optional extras (uncomment/add if you have them)
|
||||
# cp README-DOS.TXT "${DIST_DIR}"/ 2>/dev/null || true
|
||||
# cp LICENSE "${DIST_DIR}"/ 2>/dev/null || true
|
||||
|
||||
# 4. Create zip
|
||||
echo "Creating zip archive..."
|
||||
cd "${DIST_DIR}"
|
||||
zip -r -9 "../${ZIP_NAME}" . >/dev/null
|
||||
cd ..
|
||||
|
||||
# 5. Optional SHA256
|
||||
if command -v sha256sum >/dev/null 2>&1; then
|
||||
sha256sum "${ZIP_NAME}" > "${ZIP_NAME}.sha256"
|
||||
echo "Checksum: ${ZIP_NAME}.sha256"
|
||||
elif command -v shasum >/dev/null 2>&1; then
|
||||
shasum -a 256 "${ZIP_NAME}" > "${ZIP_NAME}.sha256"
|
||||
echo "Checksum: ${ZIP_NAME}.sha256"
|
||||
fi
|
||||
|
||||
# 6. Show result
|
||||
echo -e "${GREEN}Done! Zip created:${NC}"
|
||||
ls -lh "${ZIP_NAME}"*
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Upload ${ZIP_NAME} (and .sha256 if created) to Gitea release"
|
||||
echo " 2. Optionally delete staging dir: rm -rf ${DIST_DIR}"
|
||||
Loading…
Reference in New Issue
Block a user