Merge pull request #5 from catseye/develop-0.5
Develop 0.5
Chris Pressey authored 4 years ago
GitHub committed 4 years ago
0 | 0 | Funicular |
1 | 1 | ========= |
2 | 2 | |
3 | *Version 0.4. Subject to change in backwards-incompatible ways.* | |
3 | *Version 0.5. Work-in-progress. Subject to change in backwards-incompatible ways.* | |
4 | 4 | |
5 | **Funicular** is a system that semi-automates the creation of development | |
5 | **Funicular** is a system that semi-automates the creation of computing | |
6 | 6 | environments on eclectic architectures. |
7 | 7 | |
8 | 8 | "Semi-automate" means it automates what it can, and provides repeatable |
9 | 9 | instructions for you to follow for what it can't. |
10 | 10 | |
11 | "Development environment" means an environment in which you can build | |
12 | (and perhaps even write) software. Thus it is typically populated with | |
13 | programming language interpreters and compilers, debuggers, text editors, | |
14 | and the like. | |
11 | "Computing environment" could mean a "development environment", i.e. | |
12 | a system in which you can build (and perhaps even write) software, | |
13 | populated with interpreters and compilers, debuggers, text editors, | |
14 | and the like. Or it could mean any other environment that could be | |
15 | set up on a computer system. | |
15 | 16 | |
16 | 17 | "Eclectic architectures" is not terribly-well defined, but it includes |
17 | 18 | retrocomputing and esoteric architectures. Basically, if you've got an |
18 | 19 | emulator for it, and installation images for it, you might be able to |
19 | 20 | install and outfit and run a system for it, using Funicular. |
20 | 21 | |
21 | It's kind of like a Vagrant for the lunatic fringe, eh? | |
22 | ||
23 | It is currently a work in progress. The current released version of | |
24 | Funicular is **version 0.4**, but this means next to nothing. | |
22 | TL;DR it's kind of like a Vagrant, but instead of provisioning VMs, it | |
23 | provisions emulators. | |
25 | 24 | |
26 | 25 | It currently supports: |
27 | 26 | |
28 | 27 | * i386 running NetBSD under QEMU |
29 | 28 | * i386 running FreeDOS under QEMU |
29 | * Amiga 500 (etc) running AmigaDOS under E-UAE | |
30 | 30 | * Commodore 64 with a 1541 floppy drive under VICE |
31 | 31 | * VIC-20 with a 1541 floppy drive under VICE |
32 | ||
33 | And partially supports: | |
34 | ||
35 | 32 | * Apple //e running AppleDOS under Linapple |
36 | 33 | |
37 | Funicular unifies and replaces the discrete, ad-hoc projects NetBSD-Gondola, | |
38 | FreeDOS-Gondola, and Amiga-Gondola. | |
34 | Funicular unifies and replaces the older, discrete, ad-hoc projects | |
35 | NetBSD-Gondola, FreeDOS-Gondola, and Amiga-Gondola, which are now deprecated. | |
39 | 36 | |
40 | 37 | Quick Start |
41 | 38 | ----------- |
46 | 43 | * Run `funicular install`. |
47 | 44 | * Run `funicular init setup`. |
48 | 45 | * Run `funicular setup`. |
49 | * ... | |
46 | * You now have a configured Funicular. Run `funicular start` to use it. | |
50 | 47 | |
51 | 48 | Documentation |
52 | 49 | ------------- |
0 | # | |
1 | # Needs `lha`: on Linux, you can install `lhasa`, e.g. `sudo apt install lhasa` | |
2 | # | |
3 | ||
4 | PLATFORM="a500-e-uae" | |
5 | INSTALL_IMAGE='Workbench_1.3.adf' | |
6 | SETUP_IMAGE='setup.adf' | |
7 | SYSTEM_IMAGE='dh0' | |
8 | DIST_IMAGE='df0.adf' | |
9 | ||
10 | DISTFILES=" | |
11 | http://aminet.net/dev/asm/A68kGibbs.lha | |
12 | http://aminet.net/dev/asm/FixFd.lha | |
13 | http://aminet.net/dev/c/dice-3.15.lha | |
14 | http://aminet.net/dev/c/vbcc_target_m68k-amiga.lha | |
15 | http://aminet.net/dev/lang/Draco.lha | |
16 | http://aminet.net/dev/lang/pcq12b.lzh | |
17 | http://aminet.net/dev/misc/blink67.lzh | |
18 | http://aminet.net/dev/src/ArpRequest.lha | |
19 | http://aminet.net/text/font/FastFonts.lha | |
20 | http://aminet.net/util/batch/Xicon.lha | |
21 | http://aminet.net/util/boot/CLImax.lha | |
22 | http://aminet.net/util/shell/Conman.lha | |
23 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff048/du.lha | |
24 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff069/IconType.lha | |
25 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff092/SmallLib.lha | |
26 | http://www.nic.funet.fi/pub/amiga/fish/101-200/ff113/NoIconPos.lha | |
27 | http://www.nic.funet.fi/pub/amiga/fish/201-300/ff224/Who.lha | |
28 | http://www.nic.funet.fi/pub/amiga/fish/901-1000/ff935/MuchMore.lha | |
29 | " | |
30 | ||
31 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
32 | DISTREPO_ROOT="https://github.com/" | |
33 | fi | |
34 | DISTREPOS=" | |
35 | catseye/Befunge-93 | |
36 | catseye/Maentwrog | |
37 | catseye/minischeme | |
38 | catseye/Pixley | |
39 | catseye/RUBE | |
40 | catseye/Sally | |
41 | catseye/stringie | |
42 | " | |
43 | ||
44 | setup_script() { | |
45 | if [ ! -e kick.rom ]; then | |
46 | echo "Need kick.rom" | |
47 | return 1 | |
48 | fi | |
49 | ||
50 | if [ ! -e "$INSTALL_IMAGE" ]; then | |
51 | echo "Need $INSTALL_IMAGE" | |
52 | return 1 | |
53 | fi | |
54 | ||
55 | cp -Rp skel/* dh0/ | |
56 | ||
57 | #======== Extract the simple and cromulent archives ========# | |
58 | ||
59 | ARCHIVES=" | |
60 | FastFonts | |
61 | Conman CLImax | |
62 | MuchMore Who du | |
63 | Xicon NoIconPos IconType | |
64 | SmallLib FixFd | |
65 | ArpRequest | |
66 | " | |
67 | for ARCHIVE in $ARCHIVES; do | |
68 | lha xfw=dh0/Distributions distfiles/${ARCHIVE}.lha | |
69 | done | |
70 | ||
71 | #======== Now the stronger stuff ========# | |
72 | ||
73 | ### DICE 3.15 ### | |
74 | lha xfw=dh0/Distributions distfiles/dice-3.15.lha | |
75 | chmod 755 dh0/Distributions/dice-rel-3.15/abin/* | |
76 | # for lack of a better place to put this | |
77 | cp dh0/Distributions/SmallLib/small.lib dh0/Distributions/dice-rel-3.15/dlib/ | |
78 | ||
79 | ### vbcc_target_m68k-amiga.lha (...just for amigas.lib...) ### | |
80 | lha xfw=dh0/Distributions distfiles/vbcc_target_m68k-amiga.lha | |
81 | cp dh0/Distributions/vbcc_target_m68k-amigaos/targets/m68k-amigaos/lib/amigas.lib dh0/Distributions/dice-rel-3.15/dlib/ | |
82 | # can't stand the ugly... | |
83 | rm dh0/Distributions/vbcc_target_m68k-amigaos.info | |
84 | rm -rf dh0/Distributions/m68k-amigaos/vbcc_target_m68k-amigaos | |
85 | mv dh0/Distributions/vbcc_target_m68k-amigaos dh0/Distributions/m68k-amigaos | |
86 | ||
87 | ### A68k ### | |
88 | lha xfw=dh0/Distributions/A68k distfiles/A68kGibbs.lha | |
89 | ||
90 | ### Blink ### | |
91 | lha xfw=dh0/Distributions/Blink distfiles/blink67.lzh | |
92 | ||
93 | ### PCQ 1.2b ### | |
94 | lha xfw=dh0/Distributions/PCQ-1.2b distfiles/pcq12b.lzh | |
95 | ||
96 | ### Draco ### | |
97 | lha xfw=dh0/Distributions distfiles/Draco.lha | |
98 | chmod 755 dh0/Distributions/Draco/c/* | |
99 | ||
100 | #======== Now the distrepos ========# | |
101 | ||
102 | rm -rf dh0/Shelf | |
103 | mkdir dh0/Shelf | |
104 | cp -Rp distrepos/* dh0/Shelf/ | |
105 | ||
106 | #======== Drawer icons for Distributions and Shelf ========# | |
107 | ||
108 | for DIR in dh0/Distributions/* dh0/Shelf/*; do | |
109 | if [ -d $DIR ]; then | |
110 | cp -p skel/icons/Drawer.info ${DIR}.info | |
111 | fi | |
112 | done | |
113 | cp -p skel/icons/Drawer.info dh0/Distributions.info | |
114 | cp -p skel/icons/Drawer.info dh0/Shelf.info | |
115 | ||
116 | #======== Now populate some system directories ========# | |
117 | ||
118 | ### C: ### | |
119 | ||
120 | cp dh0/Distributions/Xicon/Xicon dh0/c/ | |
121 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/ # version 3.6 | |
122 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/Less | |
123 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/More # TODO: use Replex? | |
124 | cp dh0/Distributions/NoIconPos/noIconPos dh0/c/ | |
125 | cp dh0/Distributions/A68k/A68k dh0/c/ | |
126 | cp dh0/Distributions/Blink/Blink dh0/c/ | |
127 | cp dh0/Distributions/PCQ-1.2b/Pascal dh0/c/ | |
128 | cp dh0/Distributions/PCQ-1.2b/Peep dh0/c/ | |
129 | cp dh0/Distributions/Conman/ConMan dh0/c/ | |
130 | cp dh0/Distributions/Conman/SetCMan dh0/c/ | |
131 | cp dh0/Distributions/Conman/History dh0/c/ | |
132 | cp dh0/Distributions/CLImax/CLImax dh0/c/ | |
133 | cp dh0/Distributions/FixFd/FixFD dh0/c/ | |
134 | cp dh0/Distributions/FastFonts/FastFonts dh0/c/ | |
135 | cp dh0/Distributions/Who/Who dh0/c/ | |
136 | cp dh0/Distributions/Du/du dh0/c/ | |
137 | ||
138 | chmod 755 dh0/c/* | |
139 | ||
140 | ### L: ### | |
141 | cp dh0/Distributions/Conman/ConHandler dh0/l/ | |
142 | ||
143 | ### S: ### | |
144 | # just some tweaks to PCQ-1.2b's Make scripts | |
145 | cat >dh0/s/PCQMake <<EOF | |
146 | .key source | |
147 | pascal <source>.p t:<source>.asm | |
148 | a68k t:<source>.asm t:<source>.o | |
149 | delete t:<source>.asm | |
150 | blink t:<source>.o to <source> library PCQ:PCQ.lib | |
151 | delete t:<source>.o | |
152 | EOF | |
153 | ||
154 | cat >dh0/s/PCQOMake <<EOF | |
155 | .key source | |
156 | Pascal <source>.p t:<source>.asm | |
157 | Peep t:<source>.asm t:<source>.s | |
158 | delete t:<source>.asm | |
159 | a68k t:<source>.s t:<source>.o | |
160 | delete t:<source>.s | |
161 | blink t:<source>.o to <source> library PCQ:PCQ.lib | |
162 | delete t:<source>.o | |
163 | EOF | |
164 | ||
165 | ### LIBS: ### | |
166 | cp dh0/Distributions/Conman/conhandler.library dh0/libs/ | |
167 | cp dh0/Distributions/ArpRequest/arp.library dh0/libs/ # ver 39.1 | |
168 | } | |
169 | ||
170 | setup_instructions() { | |
171 | cat <<EOF | |
172 | ------------------------------------------------------ | |
173 | [*] Wait for the Workbench to appear. | |
174 | [*] Double-click the "Funicular" disk icon. | |
175 | You may need to move CLI windows out of the way | |
176 | first, to uncover it. | |
177 | [*] Double-click the "Workbenchize" icon that appears. | |
178 | [*] Wait until it asks you to reboot, then close | |
179 | the window and shut down the emulator. | |
180 | ------------------------------------------------------ | |
181 | EOF | |
182 | } | |
183 | ||
184 | dist_instructions() { | |
185 | cat <<EOF | |
186 | * Format DF0: by typing: | |
187 | format drive df0 name Burgundy | |
188 | (or pick whatever name you want instead of Burgundy.) | |
189 | * Copy whatever you like onto DF0: | |
190 | * If you want to make the disk bootable, type: | |
191 | install df0: | |
192 | EOF | |
193 | } |
0 | .k "" | |
1 | echo "** Workbenchizing your Funicular virtual disk!" | |
2 | ||
3 | echo "(1/12) Copying C:..." | |
4 | copy C: to Funicular:c all quiet | |
5 | ||
6 | echo "(2/12) Copying S:..." | |
7 | copy S: to Funicular:s all quiet | |
8 | ||
9 | echo "(3/12) Copying L:..." | |
10 | copy L: to Funicular:l all quiet | |
11 | ||
12 | echo "(4/12) Copying DEVS:..." | |
13 | copy DEVS: to Funicular:devs all quiet | |
14 | ||
15 | echo "(5/12) Copying LIBS:..." | |
16 | copy LIBS: to Funicular:libs all quiet | |
17 | ||
18 | echo "(6/12) Copying FONTS:..." | |
19 | copy FONTS: to Funicular:fonts all quiet | |
20 | ||
21 | echo "(7/12) Copying Utilities..." | |
22 | copy SYS:Utilities to Funicular:Utilities all quiet | |
23 | copy SYS:Utilities.info to Funicular:Utilities.info quiet | |
24 | ||
25 | echo "(8/12) Copying System..." | |
26 | copy SYS:System to Funicular:System all quiet | |
27 | copy SYS:System.info to Funicular:System.info quiet | |
28 | ||
29 | echo "(9/12) Copying Expansion..." | |
30 | copy SYS:Expansion to Funicular:Expansion all quiet | |
31 | copy SYS:Expansion.info to Funicular:Expansion.info quiet | |
32 | ||
33 | echo "(10/12) Copying Trashcan..." | |
34 | copy SYS:Trashcan to Funicular:Trashcan all quiet | |
35 | copy SYS:Trashcan.info to Funicular:Trashcan.info quiet | |
36 | ||
37 | echo "(11/12) Copying Shell..." | |
38 | copy SYS:Shell to Funicular:Shell all quiet | |
39 | copy SYS:Shell.info to Funicular:Shell.info quiet | |
40 | ||
41 | echo "(12/12) Copying Prefs..." | |
42 | copy SYS:Prefs to Funicular:Prefs all quiet | |
43 | copy SYS:Prefs.info to Funicular:Prefs.info quiet | |
44 | ||
45 | echo "Replacing startup-sequence..." | |
46 | copy Funicular:s/Startup-Sequence Funicular:s/Startup-Sequence.backup | |
47 | copy Funicular:s/Startup-Sequence.Funicular Funicular:s/Startup-Sequence | |
48 | ||
49 | ;echo "Making your icons float..." | |
50 | ;protect Funicular:c/NoIconPos rwed | |
51 | ;Funicular:c/NoIconPos Funicular:AmigaBasic | |
52 | ;Funicular:c/NoIconPos Funicular:Trashcan | |
53 | ;Funicular:c/NoIconPos Funicular:Extras/BasicDemos | |
54 | ;Funicular:c/NoIconPos Funicular:Extras/Tools | |
55 | ;Funicular:c/NoIconPos Funicular:Extras/FD1.3 | |
56 | ||
57 | echo "Done. You should now:" | |
58 | echo "** EJECT the Workbench and Extras disks, and" | |
59 | echo "** REBOOT your Amiga and see that it boots from Funicular" |
Binary diff not shown
Binary diff not shown
0 | Funicular:c/SetPatch >NIL: | |
1 | ||
2 | assign SYS: Funicular: | |
3 | assign C: SYS:c | |
4 | assign S: SYS:s | |
5 | assign L: SYS:l | |
6 | assign FONTS: SYS:fonts | |
7 | assign DEVS: SYS:devs | |
8 | assign LIBS: SYS:libs | |
9 | ||
10 | assign Extras: Funicular: ; to let (some) AmigaBasic sources' icons work | |
11 | ||
12 | Addbuffers df0: 10 | |
13 | cd c: | |
14 | echo "A500/A2000 Workbench disk -- now booting Funicular..." | |
15 | ; | |
16 | Sys:System/FastMemFirst | |
17 | BindDrivers | |
18 | SetClock load | |
19 | ; | |
20 | resident CLI L:Shell-Seg SYSTEM pure add | |
21 | resident c:Execute pure | |
22 | mount newcon: | |
23 | ; | |
24 | failat 11 | |
25 | run execute s:StartupII | |
26 | wait >NIL: 5 mins | |
27 | ; | |
28 | path ram: c: sys:utilities sys:system s: sys:prefs add | |
29 | ; | |
30 | ; == DICE == ; | |
31 | ; | |
32 | assign DCC: Funicular:Distributions/dice-rel-3.15 | |
33 | assign DLIB: DCC:dlib | |
34 | assign DINCLUDE: DCC:include | |
35 | path DCC:abin/ add | |
36 | ;assign LIBS: DCC:libs add | |
37 | ; | |
38 | ; == PCQ == ; | |
39 | ; | |
40 | assign PCQ: Funicular:Distributions/PCQ-1.2b | |
41 | assign INCLUDE: PCQ:Include | |
42 | ; | |
43 | ; == Draco == ; | |
44 | ; | |
45 | assign DRACO: Funicular:Distributions/Draco | |
46 | assign DRLIB: DRACO:drlib | |
47 | assign DRINC: DRACO:drinc | |
48 | path DRACO:c/ add | |
49 | path DRACO:s/ add | |
50 | ; | |
51 | run execute s:StartupII.Funicular | |
52 | wait >NIL: 5 mins | |
53 | ; | |
54 | fastfonts topaz.8 | |
55 | cd Funicular: | |
56 | conman -c | |
57 | climax | |
58 | ; | |
59 | LoadWB delay | |
60 | endcli >NIL: |
0 | echo "Ensuring your scripts are scripts..." | |
1 | protect S:SPAT srwd | |
2 | spat protect s:#? srwd | |
3 | spat protect DRACO:s/#? srwd | |
4 | ||
5 | echo "Removing Workbenchize icon..." | |
6 | delete Funicular:Workbenchize.info quiet | |
7 | echo "Done." | |
8 | ||
9 | break 1 C |
0 | # NOTE: this requires toolshelf and assumes gh:catseye/a2tools has been docked | |
0 | # TODO: let a Funicularfile say simply REQUIRED_TOOLS="linapple a2tools" | |
1 | ||
2 | for tool in linapple a2tools; do | |
3 | toolpath=`which $tool` | |
4 | if [ "X$toolpath" = "X" ]; then | |
5 | echo "You will need $tool on your search path to use this Funicular." | |
6 | exit 1 | |
7 | fi | |
8 | done | |
1 | 9 | |
2 | 10 | PLATFORM=apple2plus-linapple |
3 | INSTALL_IMAGE='blank.dsk' | |
11 | INSTALL_IMAGE='Master.dsk' # This can be retrieved from the linapple repository | |
4 | 12 | SETUP_IMAGE='setup.dsk' |
5 | 13 | SYSTEM_IMAGE='system.dsk' |
6 | 14 | DIST_IMAGE='dist.dsk' |
13 | 21 | " |
14 | 22 | |
15 | 23 | setup_script() { |
16 | export CWD=`pwd` | |
24 | for a2file in MYHELLO KEYS KEYS1 AA; do | |
25 | a2rm "${SYSTEM_IMAGE}" $a2file | |
26 | done | |
27 | for a2file in APPLE\ BEFUNGE\ EDITOR ; do | |
28 | a2out -r distrepos/apple-befunge/disk/befunge.dsk "${a2file}"|a2in -r a "${SYSTEM_IMAGE}" "${a2file}" | |
29 | done | |
30 | for a2file in HELLO.BF HEX.BF HWII.BF MAZE.BF ; do | |
31 | a2out -r distrepos/apple-befunge/disk/befunge.dsk "${a2file}"|a2in -r t "${SYSTEM_IMAGE}" "${a2file}" | |
32 | done | |
17 | 33 | |
18 | cat >linapple.conf <<EOF | |
19 | Computer Emulation = 1 | |
20 | Slot 6 Directory = $CWD | |
21 | Disk Image 1 = $CWD/system.dsk | |
22 | Slot 6 Autoload = 1 | |
23 | EOF | |
24 | ||
25 | # this is less than fantastic, but not sure how else to make sure this works | |
26 | LINAPPLE_DIR=`toolshelf.py pwd linapple` | |
27 | cp $LINAPPLE_DIR/splash.bmp . | |
28 | cp $LINAPPLE_DIR/charset40.bmp . | |
29 | # this is even less fantastic because no just no | |
30 | # instead, we should be using a2tools to put our things on a bootable disk image | |
31 | cp $LINAPPLE_DIR/Master.dsk system.dsk | |
34 | a2ls "${SYSTEM_IMAGE}" | |
32 | 35 | } |
0 | 0 | PLATFORM="i386-qemu" |
1 | 1 | INSTALL_IMAGE='fd11src.iso' |
2 | 2 | INSTALL_IMAGE_URL='http://www.freedos.org/download/download/fd11src.iso' |
3 | SETUP_IMAGE='freedos-init-cd.iso' | |
3 | SETUP_IMAGE='setup.iso' | |
4 | 4 | SYSTEM_IMAGE='hda.img' |
5 | 5 | DIST_IMAGE='a.img' |
6 | 6 | |
9 | 9 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/djdev205.zip |
10 | 10 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/faq230b.zip |
11 | 11 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/readme.1st |
12 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/bnu226br3.zip | |
13 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gcc610b.zip | |
12 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/bnu230b.zip | |
13 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gcc810b.zip | |
14 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gpp810b.zip | |
14 | 15 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/mak421b.zip |
15 | 16 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi7b.zip |
16 | 17 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip |
23 | 24 | https://raw.githubusercontent.com/yasm/yasm/v1.2.0/BSD.txt |
24 | 25 | |
25 | 26 | http://www.lua.org/ftp/lua-5.2.2.tar.gz |
26 | http://waterlan.home.xs4all.nl/dos2unix/d2u71b.zip | |
27 | https://sourceforge.net/projects/dos2unix/files/dos2unix/7.4.0/d2u740pm.zip | |
27 | 28 | |
28 | 29 | http://catseye.tc/distfiles/shelta-1.2-2014.0422.zip |
29 | 30 | https://github.com/catseye/Illgol-Grand-Mal/archive/rel_16_tons_and_what_do_you_get.zip |
42 | 43 | ZIP_UNVERSIONED=True |
43 | 44 | |
44 | 45 | |
45 | #name_map = { | |
46 | # ["yasm-1.2.0-dos.exe"] = 'yasm120.exe', | |
47 | # ["BSD.txt"] = 'yasmlcns.txt', | |
48 | # ["lua-5.2.2.tar.gz"] = 'lua522.tgz', | |
49 | # ["shelta-1.2-2014.0422.zip"] = 'shelta12.zip', | |
50 | # ["rel_16_tons_and_what_do_you_get.zip"] = 'illgolgm.zip', | |
51 | # ["gpl-2.0.txt"] = 'gpl20.txt', | |
52 | # ["befunge-93"] = 'befung93', | |
53 | # ["maentwrog"] = 'maentwrg', | |
54 | #}, | |
46 | name_map() { | |
47 | if [ "X$1" = "Xyasm-1.2.0-dos.exe" ]; then | |
48 | echo "yasm120.exe" | |
49 | elif [ "X$1" = "XBSD.txt" ]; then | |
50 | echo "yasmlcns.txt" | |
51 | elif [ "X$1" = "Xlua-5.2.2.tar.gz" ]; then | |
52 | echo "lua522.tgz" | |
53 | elif [ "X$1" = "Xshelta-1.2-2014.0422.zip" ]; then | |
54 | echo "shelta12.zip" | |
55 | elif [ "X$1" = "Xrel_16_tons_and_what_do_you_get.zip" ]; then | |
56 | echo "illgolgm.zip" | |
57 | elif [ "X$1" = "Xgpl-2.0.txt" ]; then | |
58 | echo "gpl20.txt" | |
59 | elif [ "X$1" = "XBefunge-93" ]; then | |
60 | echo "befung93" | |
61 | elif [ "X$1" = "XMaentwrog" ]; then | |
62 | echo "maentwrg" | |
63 | else | |
64 | echo $1 | |
65 | fi | |
66 | } | |
55 | 67 | |
56 | 68 | |
57 | 69 | install_instructions() { |
80 | 92 | * down-arrow to DONE |
81 | 93 | * proceed with installation -- yes |
82 | 94 | * Press any key to continue -- ...watch flickering... |
83 | * What to do with the bootloader? -- 1 | |
95 | * What to do with the bootsector? -- 1 | |
84 | 96 | * select "Boot from system harddisk" |
85 | 97 | * Hit Enter for the JEMMEX option, should be fine |
86 | * viola, `C:\>`. You can now just stop the emulator. | |
98 | * viola, C:\\>. You can now just stop the emulator. | |
87 | 99 | EOF |
88 | 100 | } |
89 | 101 | |
90 | 102 | setup_instructions() { |
91 | 103 | cat <<EOF |
92 | 104 | * Hit Enter for the JEMMEX option, should be fine |
93 | * When booted, run `D:\INSTDJGP` | |
94 | * When it asks `replace lib/Perl5/Pod/perlmaco.pod?`, type `A`, Enter. | |
105 | * When booted, run "D:\INSTDJGP" | |
106 | * When it asks "replace lib/Perl5/Pod/perlmaco.pod?", type "A", Enter. | |
95 | 107 | * THEN HIT ENTER AGAIN. It's waiting silently for you. |
96 | 108 | * When finished, you may want to exit the emulator, run |
97 | `funicular backup hda-djgpp`, and start it again. | |
98 | * run `D:\INSTPLAT`. This will install some tools into `C:\TOOLS`. | |
109 | "funicular backup hda-djgpp", and start it again. | |
110 | * run "D:\\INSTPLAT". This will install some tools into "C:\\TOOLS". | |
99 | 111 | EOF |
112 | } | |
113 | ||
114 | setup_script() { | |
115 | # | |
116 | # This is an alternative to having some kind of "archive distrepos with what archiver?" | |
117 | # option that Funicular should arguably support instead. | |
118 | # | |
119 | cd distrepos | |
120 | for repo in *; do | |
121 | echo zip -r ../staging_area/$repo.zip $repo | |
122 | zip -r ../staging_area/$repo.zip $repo | |
123 | rm -f ../staging_area/$repo.tar.gz | |
124 | done | |
125 | cd .. | |
126 | if [ -d skel ]; then | |
127 | cp -Rp skel/* staging_area/ | |
128 | fi | |
100 | 129 | } |
101 | 130 | |
102 | 131 | dist_instructions() { |
103 | 132 | cat <<EOF |
104 | * To initialize the distribution floppy, run `INITFLOP`. | |
105 | * Enter `360`, `720`, or `1440` as appropriate. | |
133 | * To initialize the distribution floppy, run "INITFLOP". | |
134 | * Enter "360", "720", or "1440" as appropriate. | |
106 | 135 | * As explained in the script, it may take more than one attempt to format |
107 | 136 | the image correctly, if it has never been used before. |
108 | 137 | * The result will be a generic, bootable FreeDOS floppy. You may |
109 | wish to make a backup copy of `a.img` to not need this step in future. | |
110 | * To populate the floppy with a few basic things, run `POPUFLOP`. | |
138 | wish to make a backup copy of "a.img" to not need this step in future. | |
139 | * To populate the floppy with a few basic things, run "POPUFLOP". | |
111 | 140 | |
112 | 141 | You now have a bootable floppy image with a few basic tools on it. |
113 | 142 | |
114 | * To populate the floppy with a project distribution, run the `MAKEDIST.BAT` | |
115 | batchfile in the appropriate `SKEL` subdirectory. For example, to make a | |
116 | Shelta distribution, run `SKEL\SHELTA\MAKEDIST`. | |
143 | * To populate the floppy with a project distribution, run the "MAKEDIST.BAT" | |
144 | batchfile in the appropriate "SKEL" subdirectory. For example, to make a | |
145 | Shelta distribution, run "SKEL\\SHELTA\\MAKEDIST". | |
117 | 146 | EOF |
118 | 147 | } |
3 | 3 | CD DJGPP |
4 | 4 | UNZIP D:\djdev205.zip |
5 | 5 | UNZIP D:\faq230b.zip |
6 | UNZIP D:\bnu226br3.zip | |
7 | UNZIP D:\gcc610b.zip | |
6 | UNZIP D:\bnu230b.zip | |
7 | UNZIP D:\gcc810b.zip | |
8 | UNZIP D:\gpp810b.zip | |
8 | 9 | UNZIP D:\mak421b.zip |
9 | 10 | UNZIP D:\csdpmi7b.zip |
10 | 11 | UNZIP D:\perl588b.zip |
12 | 12 | |
13 | 13 | MKDIR C:\TOOLS\DOS2UNIX |
14 | 14 | CD C:\TOOLS\DOS2UNIX |
15 | UNZIP D:\d2u71b.zip | |
15 | UNZIP D:\d2u740pm.zip | |
16 | 16 | COPY C:\TOOLS\DOS2UNIX\BIN\*.EXE C:\TOOLS\ |
17 | 17 | |
18 | 18 | C:\TOOLS\UNIX2DOS C:\TOOLS\YASMLCNS.TXT |
70 | 70 | C:\TOOLS\UNIX2DOS COPING |
71 | 71 | |
72 | 72 | :AlreadyILLGOL |
73 | ||
74 | ECHO ------ BEFUNGE ------ | |
75 | ||
76 | CD C:\PROJECTS | |
77 | UNZIP D:\BEFUNG93.ZIP | |
78 | ||
79 | ECHO ------ MAENTWROG ------ | |
80 | ||
81 | CD C:\PROJECTS | |
82 | UNZIP D:\MAENTWRG.ZIP | |
83 | ||
73 | 84 | CD C:\ |
74 | 85 | IF EXIST C:\AUTOEXEC.OLD GOTO AlreadyAutoexec |
75 | 86 | COPY AUTOEXEC.BAT AUTOEXEC.OLD |
20 | 20 | } |
21 | 21 | |
22 | 22 | platform_setup() { |
23 | uae ${OPTS} -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" -s "floppy0=${SETUP_IMAGE}" | |
23 | uae ${OPTS} -s "floppy0=${INSTALL_IMAGE}" -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" | |
24 | 24 | } |
25 | 25 | |
26 | 26 | platform_dist() { |
32 | 32 | } |
33 | 33 | |
34 | 34 | platform_install() { |
35 | uae ${OPTS} -s "floppy0=${INSTALL_IMAGE}" -s "filesystem2=rw,DH0:HDD:Funicular:${SYSTEM_IMAGE},1" | |
35 | echo "No install step. Installation will happen during setup." | |
36 | 36 | } |
0 | 0 | # Apple ][+ w/ Linapple w/ certain options |
1 | 1 | |
2 | DISTFILE_URL='https://github.com/timob/linapple/archive/master.zip' | |
2 | DISTFILE_URL='https://github.com/catseye/linapple/archive/master.zip' | |
3 | 3 | |
4 | 4 | # floppies only, for now |
5 | 5 | platform_initsys() { |
15 | 15 | } |
16 | 16 | |
17 | 17 | platform_start() { |
18 | linapple | |
18 | linapple -d1 "${SYSTEM_IMAGE}" -autoboot | |
19 | 19 | } |
20 | 20 | |
21 | 21 | platform_setup() { |
22 | linapple | |
22 | echo "Not starting emulator. No setup image required." | |
23 | #linapple -d1 "${SYSTEM_IMAGE}" -autoboot | |
23 | 24 | } |
24 | 25 | |
25 | 26 | platform_dist() { |
26 | linapple | |
27 | echo "Not starting emulator. No in-architecture dist steps required." | |
27 | 28 | } |
28 | 29 | |
29 | 30 | platform_distboot() { |
30 | linapple | |
31 | linapple -d1 "${DIST_IMAGE}" -autoboot | |
31 | 32 | } |
32 | 33 | |
33 | 34 | platform_install() { |
34 | echo "No install step. Installation will happen during setup." | |
35 | cp "${INSTALL_IMAGE}" "${SYSTEM_IMAGE}" | |
35 | 36 | } |
83 | 83 | |
84 | 84 | url="$DISTREPO_ROOT$path" |
85 | 85 | dest=`basename $url` |
86 | if runnable name_map; then | |
87 | dest=`name_map $dest` | |
88 | fi | |
86 | 89 | |
87 | 90 | if [ ! -d distrepos/$dest ]; then |
88 | 91 | git clone $url distrepos/$dest |
101 | 104 | rm -rf staging_area |
102 | 105 | mkdir -p staging_area |
103 | 106 | |
104 | cp -p distfiles/* staging_area/ | |
107 | for file in distfiles/*; do | |
108 | destname=`basename $file` | |
109 | if runnable name_map; then | |
110 | destname=`name_map $destname` | |
111 | fi | |
112 | cp -p $file staging_area/$destname | |
113 | done | |
105 | 114 | |
106 | 115 | cd distrepos |
107 | 116 | for repo in *; do |