# Pascal 例程 —— 来源与致谢（CREDITS）

> ⚠ **2026-09-28 精简（用户口径：「老语言举几个 BGI 例子就够了」）**
>
> 本目录原先收录 **98 份** Pascal 老程序（AVC / 7iles / gcorail / gmsdos / gnc / ktp /
> swag / tpdem 八批），其中**绝大多数是 DOS / Delphi 时代的存档程序**，依赖
> `Mem[]`/`Port[]`/`Intr($21)`/DOS 单元等本平台**不打算兼容**的东西
> （判据见 [docs/老程序兼容性.md](../../../../docs/老程序兼容性.md)）。
> 它们既不进「能跑的例子」这一层，又让 `examples-build` 的失败清单被淹掉
> —— 79 个失败里看不出哪几条是真缺陷。
>
> 现在**只保留 7 份**：
> * 本仓自己的 demo —— `catch` / `demo_bgi` / `demo_std` / `demo_tty` / `demo_ui` / `sysinfo`
> * 一份**能编译通过**的 BGI 图形例子 —— `swag_graphics_0038`
>
> 下面这些来源与许可记录**保留**（追溯与合规用），但**与当前目录内容不再一一对应**。

本目录收录的 Pascal 源码**全部来自上游仓库、文件头一字未改**，仅重命名了文件名
（归一为「小写 + 下划线」并加来源前缀，见下表）。

每个来源的许可证据（作者 → 许可 → URL → 依据原话）如下，完整许可文本见同目录 `LICENSES.txt`。
B 类（许可不明 / 有版权）的候选**没有**放进本目录，只在 `.scratch/pascal-programs/` 留档。

---

## `ktp_*` —— lkesteloot/turbopascal

- **作者**：Lawrence Kesteloot
- **许可**：BSD-2-Clause
- **许可声明 URL**：https://github.com/lkesteloot/turbopascal/blob/master/LICENSE
- **依据原话**：`See the LICENSE file for the BSD 2-clause license.`（README.md 末行）；LICENSE 首行 `Copyright (c) 2013, Lawrence Kesteloot` / `All rights reserved.` / `Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:`
- **说明**：浏览器版 Turbo Pascal 5.5 子集编译器（含 crt / graph(BGI) 单元实现）自带的一批 .PAS 测试程序。
- **本目录文件（7）**：`ktp_bspline.pas`, `ktp_fastmand.pas`, `ktp_firework.pas`, `ktp_hello.pas`, `ktp_rose.pas`, `ktp_spider.pas`, `ktp_test.pas`

## `g7iles_*` —— gladir/7iles

- **作者**：Sylvain Maltais
- **许可**：MIT
- **许可声明 URL**：https://github.com/gladir/7iles/blob/main/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2021 Sylvain Maltais` / `Permission is hereby granted, free of charge, to any person obtaining a copy of this software ...`
- **说明**：80+ 个 Pure Pascal 小游戏（Turbo Pascal 7 / Free Pascal 双分支）。
- **本目录文件（27）**：`g7iles_2048.pas`, `g7iles_7iles.pas`, `g7iles_asteroid.pas`, `g7iles_baby.pas`, `g7iles_berzerk.pas`, `g7iles_blox.pas`, `g7iles_breakout.pas`, `g7iles_csi.pas`, `g7iles_frogger.pas`, `g7iles_gomoku.pas`, `g7iles_hanois.pas`, `g7iles_invaders.pas`, `g7iles_life.pas`, `g7iles_loderunn.pas`, `g7iles_mahjong.pas`, `g7iles_mario.pas`, `g7iles_missile.pas`, `g7iles_monopoly.pas`, `g7iles_pacman.pas`, `g7iles_pegleap.pas`, `g7iles_pong.pas`, `g7iles_renju.pas`, `g7iles_sokoban.pas`, `g7iles_solitair.pas`, `g7iles_tetris.pas`, `g7iles_ttt.pas`, `g7iles_ttt3d.pas`

## `gmsdos_*` —— gladir/MSDOS-0

- **作者**：Sylvain Maltais
- **许可**：MIT
- **许可声明 URL**：https://github.com/gladir/MSDOS-0/blob/main/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2021 Sylvain Maltais`
- **说明**：MS-DOS 命令克隆（每个命令一个独立 .PAS）。
- **本目录文件（9）**：`gmsdos_chkdsk.pas`, `gmsdos_choice.pas`, `gmsdos_command.pas`, `gmsdos_debug.pas`, `gmsdos_deltree.pas`, `gmsdos_dosshell.pas`, `gmsdos_edit.pas`, `gmsdos_edlin.pas`, `gmsdos_format.pas`

## `gnc_*` —— gladir/NORTONCOMMANDER-0

- **作者**：Sylvain Maltais
- **许可**：MIT
- **许可声明 URL**：https://github.com/gladir/NORTONCOMMANDER-0/blob/main/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2024 Sylvain Maltais`
- **说明**：Norton Commander 克隆（单文件 81KB，本语料最大）。
- **本目录文件（2）**：`gnc_nc.pas`, `gnc_ncedit.pas`

## `gcorail_*` —— gladir/corail

- **作者**：Sylvain Maltais
- **许可**：MIT
- **许可声明 URL**：https://github.com/gladir/corail/blob/main/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2021 Sylvain Maltais`
- **说明**：510+ 个命令行小工具中的若干代表。
- **本目录文件（8）**：`gcorail_ascii.pas`, `gcorail_base64.pas`, `gcorail_du.pas`, `gcorail_guid.pas`, `gcorail_iconv.pas`, `gcorail_number.pas`, `gcorail_printf.pas`, `gcorail_vdiag.pas`

## `avc_*` —— cavo789/swag

- **作者**：Christophe Avonture (AVC Software)
- **许可**：MIT
- **许可声明 URL**：https://github.com/cavo789/swag/blob/master/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2020 Christophe Avonture`；文件头另有作者自署 `(c) AVC Software` / `Cardware`
- **说明**：作者本人投给 SWAG 归档的 DOS 底层程序（端口 / 中断 / CMOS / EXE 头 / 视频内存）。
- **本目录文件（27）**：`avc_ani2ico.pas`, `avc_banyan.pas`, `avc_cmos.pas`, `avc_constant.pas`, `avc_convert_hex.pas`, `avc_crt_demo.pas`, `avc_cursor.pas`, `avc_disk_serial.pas`, `avc_dos_icon_viewer.pas`, `avc_exe_head.pas`, `avc_exe_size.pas`, `avc_fast_output_video.pas`, `avc_file_select.pas`, `avc_flush_keyboard.pas`, `avc_ico2inc.pas`, `avc_inline_com.pas`, `avc_menu.inc`, `avc_menu.pas`, `avc_mouse_unit.pas`, `avc_read_car.pas`, `avc_segment_offset.pas`, `avc_set_etat_led.pas`, `avc_swap_bin.pas`, `avc_tspeedbutton.pas`, `avc_vertical_menu.pas`, `avc_vertical_menu_sample.pas`, `avc_word2hex.pas`

## `tpdem_*` —— johangardhage/dos-tpdemos

- **作者**：Johan Gardhage
- **许可**：MIT
- **许可声明 URL**：https://github.com/johangardhage/dos-tpdemos/blob/master/LICENSE
- **依据原话**：`MIT License` / `Copyright (c) 2018 Johan Gardhage`
- **说明**：Borland Turbo Pascal 7 复古编程教程的 20 个递进小 demo + 两个自带单元。
- **本目录文件（11）**：`tpdem_demo01.pas`, `tpdem_demo02.pas`, `tpdem_demo03.pas`, `tpdem_demo05.pas`, `tpdem_demo07.pas`, `tpdem_demo10.pas`, `tpdem_demo13.pas`, `tpdem_demo17.pas`, `tpdem_demo20.pas`, `tpdem_gfx.pas`, `tpdem_vector.pas`

## `swag_*` —— nickelsworth/swag

- **作者**：多名（SWAG 捐赠者，逐条见 INVENTORY「许可依据原话」）
- **许可**：public domain / freeware（文件头作者自述）+ 仓库默认 BSD-2
- **许可声明 URL**：https://github.com/nickelsworth/swag/blob/master/LICENSE
- **依据原话**：仓库 LICENSE 原文：`The code snippets in this archive are generally freeware or public domain as defined by their accompanying comments and copyrights. Any content without a specific license attached to it is considered to be licensed under the 2-clause BSD license`；**本次入选的 20 个文件每一个的文件头都另有作者自述**（如 `Released into the public domain 1989`、`PUBLIC DOMAIN 1993 Peter M. Gruhn`、`FreeWare`），逐条原话见 .scratch/pascal-programs/INVENTORY.md
- **说明**：SWAG（SourceWare Archive Group，1997 终版）里**文件头自己就写着 public domain / freeware** 的片段。⚠ 另有 3 个 SWAG 片段（`crt/0033.pas` TurboPower 版权+「with the aid of the commercial product」、`dos/0059.pas` 含 Borland RTL 源码部分、`timing/0014.pas` 「is copyrighted but may be used ... as long as」）**因为许可带条件或含他人版权，已降级为 B 类**，不在本目录，见 .scratch/pascal-programs/INVENTORY.md 的 `swagcond_*`。
- **本目录文件（20）**：`swag_crt_0009.pas`, `swag_dos_0034.pas`, `swag_dos_0051.pas`, `swag_egavga_0024.pas`, `swag_entry_0012.pas`, `swag_exec_0017.pas`, `swag_graphics_0029.pas`, `swag_graphics_0038.pas`, `swag_graphics_0046.pas`, `swag_graphics_0069.pas`, `swag_hardware_0057.pas`, `swag_interrupt_0012.pas`, `swag_memory_0022.pas`, `swag_memory_0034.pas`, `swag_memory_0038.pas`, `swag_memory_0054.pas`, `swag_mouse_0007.pas`, `swag_sound_0025.pas`, `swag_textwndw_0012.pas`, `swag_tsr_0007.pas`

---

## 再分发注意事项

1. MIT / BSD-2 都要求**保留版权声明与许可文本**。本目录同时保留 `CREDITS.md`（本文件）
   与 `LICENSES.txt`，`make-vml-lib.sh` 打包 `Examples/` 时必须把这两个文件一并带上。
2. `swag_*` 这批的许可依据是**每个文件自己文件头里作者的原话**（仓库级 LICENSE 只是兜底默认）。
   逐条原话见 `.scratch/pascal-programs/INVENTORY.md` 对应条目；改这几个文件等于改许可依据，
   所以**必须保持文件头原样**。
3. 本目录中 `catch.pas`、`sysinfo.pas`、`stm32/` 是本项目自己写的例子，不在本登记的范围内。
