git @ Cat's Eye Technologies Funicular / 9afc498
Merge pull request #2 from catseye/rewrite-in-bourne-shell Rewrite in bourne shell Chris Pressey authored 8 years ago GitHub committed 8 years ago
30 changed file(s) with 812 addition(s) and 624 deletion(s). Raw diff Collapse all Expand all
00 Funicular
11 =========
2
3 *Version 0.4-PRE*
24
35 **Funicular** is a system that semi-automates the creation of development
46 environments on eclectic architectures.
2527
2628 * i386 running NetBSD under QEMU
2729 * i386 running FreeDOS under QEMU
28 * Amiga 500 (etc) running AmigaDOS under E-UAE
2930 * Commodore 64 with a 1541 floppy drive under VICE
3031 * VIC-20 with a 1541 floppy drive under VICE
3132
143144 Notes
144145 -----
145146
146 The reference implementation of the `funicular` tool is written in Lua 5.1.
147 A `Funicularfile` is written in the configuration subset of Lua.
148
149 `funicular` will use `toolshelf` if it is available on the host system,
150 i.e. if the `TOOLSHELF` env var is set, but does not strictly require it.
147 The reference implementation of the `funicular` tool is written in Bourne
148 shell. A `Funicularfile` is also written in Bourne shell, but it mostly
149 contains configuration, not functionality.
151150
152151 The contents of this repository are in the public domain. This, of course,
153152 applies only to the contents of this repository, and not to the contents of
+0
-163
eg/Amiga/Funicularfile less more
0 return {
1 platform = AmigaDOS_1_3,
2 install_image = 'Workbench_1.3.adf',
3 setup_image = 'Workbench_1.3.adf',
4 system_image = 'dh0',
5 dist_image = 'df0.adf',
6 distfiles = [[
7 http://aminet.net/dev/asm/A68kGibbs.lha
8 http://aminet.net/dev/asm/FixFd.lha
9 http://aminet.net/dev/c/dice-3.15.lha
10 http://aminet.net/dev/c/vbcc_target_m68k-amiga.lha
11 http://aminet.net/dev/lang/Draco.lha
12 http://aminet.net/dev/lang/pcq12b.lzh
13 http://aminet.net/dev/misc/blink67.lzh
14 http://aminet.net/dev/src/ArpRequest.lha
15 http://aminet.net/text/font/FastFonts.lha
16 http://aminet.net/util/batch/Xicon.lha
17 http://aminet.net/util/boot/CLImax.lha
18 http://aminet.net/util/shell/Conman.lha
19 http://www.nic.funet.fi/pub/amiga/fish/001-100/ff048/du.lha
20 http://www.nic.funet.fi/pub/amiga/fish/001-100/ff069/IconType.lha
21 http://www.nic.funet.fi/pub/amiga/fish/001-100/ff092/SmallLib.lha
22 http://www.nic.funet.fi/pub/amiga/fish/101-200/ff113/NoIconPos.lha
23 http://www.nic.funet.fi/pub/amiga/fish/201-300/ff224/Who.lha
24 http://www.nic.funet.fi/pub/amiga/fish/901-1000/ff935/MuchMore.lha
25 ]],
26
27 distrepos_specs = [[
28 gh:catseye/Befunge-93
29 gh:catseye/Maentwrog
30 gh:catseye/RUBE
31 gh:catseye/minischeme
32 ]],
33
34 setup_script = [[
35 if [ ! -e kick.rom ]; then
36 echo "Need kick.rom"
37 exit 1
38 fi
39
40 if [ ! -e Workbench_1.3.adf ]; then
41 echo "Need Workbench_1.3.adf"
42 exit 1
43 fi
44
45 cp -Rp skel/* dh0/
46
47 ### extract the simple and cromulent archives ###
48 ARCHIVES="
49 FastFonts
50 Conman CLImax
51 MuchMore Who du
52 Xicon NoIconPos IconType
53 SmallLib FixFd
54 ArpRequest
55 "
56 for ARCHIVE in $ARCHIVES; do
57 lha xfw=dh0/Distributions distfiles/${ARCHIVE}.lha
58 done
59
60 ### Now the stronger stuff ###
61
62 ### DICE 3.15 ###
63 lha xfw=dh0/Distributions distfiles/dice-3.15.lha
64 chmod 755 dh0/Distributions/dice-rel-3.15/abin/*
65 # for lack of a better place to put this
66 cp dh0/Distributions/SmallLib/small.lib dh0/Distributions/dice-rel-3.15/dlib/
67
68 ### vbcc_target_m68k-amiga.lha (...just for amigas.lib...) ###
69 lha xfw=dh0/Distributions distfiles/vbcc_target_m68k-amiga.lha
70 cp dh0/Distributions/vbcc_target_m68k-amigaos/targets/m68k-amigaos/lib/amigas.lib dh0/Distributions/dice-rel-3.15/dlib/
71 # can't stand the ugly...
72 rm dh0/Distributions/vbcc_target_m68k-amigaos.info
73 rm -rf dh0/Distributions/m68k-amigaos/vbcc_target_m68k-amigaos
74 mv dh0/Distributions/vbcc_target_m68k-amigaos dh0/Distributions/m68k-amigaos
75
76 ### A68k ###
77 lha xfw=dh0/Distributions/A68k distfiles/A68kGibbs.lha
78
79 ### Blink ###
80 lha xfw=dh0/Distributions/Blink distfiles/blink67.lzh
81
82 ### PCQ 1.2b ###
83 lha xfw=dh0/Distributions/PCQ-1.2b distfiles/pcq12b.lzh
84
85 ### Draco ###
86 lha xfw=dh0/Distributions distfiles/Draco.lha
87 chmod 755 dh0/Distributions/Draco/c/*
88
89 ### Drawer icons in Distributions ###
90 for DIR in dh0/Distributions/*; do
91 if [ -d $DIR ]; then
92 cp -p skel/icons/Drawer.info ${DIR}.info
93 fi
94 done
95
96 ### C: ###
97
98 cp dh0/Distributions/Xicon/Xicon dh0/c/
99 cp dh0/Distributions/MuchMore/MuchMore dh0/c/ # version 3.6
100 cp dh0/Distributions/MuchMore/MuchMore dh0/c/Less
101 cp dh0/Distributions/MuchMore/MuchMore dh0/c/More # TODO: use Replex?
102 cp dh0/Distributions/NoIconPos/noIconPos dh0/c/
103 cp dh0/Distributions/A68k/A68k dh0/c/
104 cp dh0/Distributions/Blink/Blink dh0/c/
105 cp dh0/Distributions/PCQ-1.2b/Pascal dh0/c/
106 cp dh0/Distributions/PCQ-1.2b/Peep dh0/c/
107 cp dh0/Distributions/Conman/ConMan dh0/c/
108 cp dh0/Distributions/Conman/SetCMan dh0/c/
109 cp dh0/Distributions/Conman/History dh0/c/
110 cp dh0/Distributions/CLImax/CLImax dh0/c/
111 cp dh0/Distributions/FixFd/FixFD dh0/c/
112 cp dh0/Distributions/FastFonts/FastFonts dh0/c/
113 cp dh0/Distributions/Who/Who dh0/c/
114 cp dh0/Distributions/Du/du dh0/c/
115
116 chmod 755 dh0/c/*
117
118 ### L: ###
119 cp dh0/Distributions/Conman/ConHandler dh0/l/
120
121 ### S: ###
122 # just some tweaks to PCQ-1.2b's Make scripts
123 cat >dh0/s/PCQMake <<EOF
124 .key source
125 pascal <source>.p t:<source>.asm
126 a68k t:<source>.asm t:<source>.o
127 delete t:<source>.asm
128 blink t:<source>.o to <source> library PCQ:PCQ.lib
129 delete t:<source>.o
130 EOF
131
132 cat >dh0/s/PCQOMake <<EOF
133 .key source
134 Pascal <source>.p t:<source>.asm
135 Peep t:<source>.asm t:<source>.s
136 delete t:<source>.asm
137 a68k t:<source>.s t:<source>.o
138 delete t:<source>.s
139 blink t:<source>.o to <source> library PCQ:PCQ.lib
140 delete t:<source>.o
141 EOF
142
143 ### LIBS: ###
144 cp dh0/Distributions/Conman/conhandler.library dh0/libs/
145 cp dh0/Distributions/ArpRequest/arp.library dh0/libs/ # ver 39.1
146 ]],
147
148 setup_instructions = [[
149 * Wait for the Workbench to appear.
150 * Double-click the "Funicular" disk icon.
151 * Double-click the "Workbenchize" icon that appears.
152 ]],
153
154 dist_instructions = [[
155 * Format DF0: by typing:
156 format drive df0 name Burgundy
157 (or pick whatever name you want instead of Burgundy.)
158 * Copy whatever you like onto DF0:
159 * If you want to make the disk bootable, type:
160 install df0:
161 ]],
162 }
eg/Amiga/skel/Distributions.info less more
Binary diff not shown
+0
-0
eg/Amiga/skel/Empty/.info less more
(Empty file)
eg/Amiga/skel/Empty.info less more
Binary diff not shown
+0
-60
eg/Amiga/skel/Workbenchize less more
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"
eg/Amiga/skel/Workbenchize.info less more
Binary diff not shown
+0
-0
eg/Amiga/skel/c/.info less more
(Empty file)
+0
-0
eg/Amiga/skel/devs/.info less more
(Empty file)
+0
-0
eg/Amiga/skel/fonts/.info less more
(Empty file)
eg/Amiga/skel/icons/Drawer.info less more
Binary diff not shown
+0
-0
eg/Amiga/skel/l/.info less more
(Empty file)
+0
-0
eg/Amiga/skel/libs/.info less more
(Empty file)
+0
-61
eg/Amiga/skel/s/Startup-Sequence.Funicular less more
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
-10
eg/Amiga/skel/s/StartupII.Funicular less more
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 # NOTE: this requires toolshelf and assumes gh:catseye/a2tools has been docked
11
2 return {
3 platform = Apple_II_Platform,
4 install_image = 'blank.dsk',
5 setup_image = 'setup.dsk',
6 system_image = 'system.dsk',
7 dist_image = 'dist.dsk',
8 distrepos_specs = [[
9 bb:catseye/apple-befunge
10 ]],
11 setup_script = [[
12 export CWD=`pwd`
2 PLATFORM=apple2plus-linapple
3 INSTALL_IMAGE='blank.dsk'
4 SETUP_IMAGE='setup.dsk'
5 SYSTEM_IMAGE='system.dsk'
6 DIST_IMAGE='dist.dsk'
7
8 if [ "x$DISTREPO_ROOT" = "x" ]; then
9 DISTREPO_ROOT="https://github.com/"
10 fi
11 DISTREPOS="
12 catseye/apple-befunge
13 "
14
15 setup_script() {
16 export CWD=`pwd`
17
1318 cat >linapple.conf <<EOF
1419 Computer Emulation = 1
1520 Slot 6 Directory = $CWD
1722 Slot 6 Autoload = 1
1823 EOF
1924
20 # this is less than fantastic, but not sure how else to make sure this works
21 LINAPPLE_DIR=`toolshelf.py pwd linapple`
22 cp $LINAPPLE_DIR/splash.bmp .
23 cp $LINAPPLE_DIR/charset40.bmp .
24 # this is even less fantastic because no just no
25 # instead, we should be using a2tools to put our things on a bootable disk image
26 cp $LINAPPLE_DIR/Master.dsk system.dsk
27 ]],
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
2832 }
0 return {
1 platform = Commodore_64_Platform,
2 install_image = 'blank.d64',
3 setup_image = 'setup.d64',
4 system_image = 'device8',
5 dist_image = 'dist.d64',
6 distrepos_catalogue = 'C64.catalogue',
7 setup_script = [[
8 cat >vicerc <<EOF
0 PLATFORM=c64-vice
1 INSTALL_IMAGE='blank.d64'
2 SETUP_IMAGE='setup.d64'
3 SYSTEM_IMAGE='device8'
4 DIST_IMAGE='dist.d64'
5
6 if [ "x$DISTREPO_ROOT" = "x" ]; then
7 DISTREPO_ROOT="https://github.com/"
8 fi
9 DISTREPOS="
10 catseye/Bubble-Escape
11 catseye/C64-Demo-Depot
12 catseye/Disksumo
13 catseye/SITU-SOL
14 "
15
16 setup_script() {
17 cat >vicerc <<EOF
918 [C64]
1019 VICIIDoubleScan=1
1120 VICIIDoubleSize=1
1423 JoyDevice3=0
1524 JoyDevice4=0
1625 EOF
17 cp distrepos/Bubble-Escape/bin/* device8/
18 cp distrepos/C64-Demo-Depot/petulant/petulant.prg device8/petulant
19 cp distrepos/C64-Demo-Depot/ribos/ribos.prg device8/ribos
20 cp distrepos/Disksumo/bin/disksumo.prg device8/disksumo
21 cp distrepos/SITU-SOL/bin/* device8/
22 ]],
23 dist_script = [[
24 cd device8
25 petcat -w2 -o menu -- ../menu.bas
26 c1541 -attach ../dist.d64 -write menu
27 rm -f menu
28 for FILENAME in *; do
29 c1541 -attach ../dist.d64 -write "$FILENAME"
30 done
31 cd ..
32 c1541 -attach dist.d64 -dir
33 ]],
26 cp distrepos/Bubble-Escape/bin/* device8/
27 cp distrepos/C64-Demo-Depot/petulant/petulant.prg device8/petulant
28 cp distrepos/C64-Demo-Depot/ribos/ribos.prg device8/ribos
29 cp distrepos/Disksumo/bin/disksumo.prg device8/disksumo
30 cp distrepos/SITU-SOL/bin/* device8/
31 ls -la device8/
3432 }
33
34 dist_script() {
35 cd device8
36 petcat -w2 -o menu -- ../menu.bas
37 c1541 -attach ../dist.d64 -write menu
38 rm -f menu
39 for FILENAME in *; do
40 c1541 -attach ../dist.d64 -write "$FILENAME"
41 done
42 cd ..
43 c1541 -attach dist.d64 -dir
44 }
0 return {
1 platform = FreeDOS_1_1,
2 system_image = 'hda.img',
3 work_image = 'fda.img',
4 setup_image = 'freedos-init-cd.iso',
5 dist_image = 'a.img',
6 distfiles = [[
7 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/copying.dj
8 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/djdev205.zip
9 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/faq230b.zip
10 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/readme.1st
11 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/bnu226br3.zip
12 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gcc610b.zip
13 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/mak421b.zip
14 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi7b.zip
15 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip
16 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/tar112ab.zip
17 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gzip18b.zip
18 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br2.zip
19 http://ftp.mpoli.fi/software/DOS/EDITORS/TED3.ZIP
0 PLATFORM="i386-qemu"
1 INSTALL_IMAGE='fd11src.iso'
2 INSTALL_IMAGE_URL='http://www.freedos.org/download/download/fd11src.iso'
3 SETUP_IMAGE='freedos-init-cd.iso'
4 SYSTEM_IMAGE='hda.img'
5 DIST_IMAGE='a.img'
206
21 http://www.tortall.net/projects/yasm/releases/yasm-1.2.0-dos.exe
22 https://raw.githubusercontent.com/yasm/yasm/v1.2.0/BSD.txt
7 DISTFILES="
8 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/copying.dj
9 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/djdev205.zip
10 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/faq230b.zip
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
14 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/mak421b.zip
15 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi7b.zip
16 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip
17 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/tar112ab.zip
18 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gzip18b.zip
19 http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br2.zip
20 http://ftp.mpoli.fi/software/DOS/EDITORS/TED3.ZIP
2321
24 http://www.lua.org/ftp/lua-5.2.2.tar.gz
25 http://waterlan.home.xs4all.nl/dos2unix/d2u71b.zip
22 http://www.tortall.net/projects/yasm/releases/yasm-1.2.0-dos.exe
23 https://raw.githubusercontent.com/yasm/yasm/v1.2.0/BSD.txt
2624
27 http://catseye.tc/distfiles/shelta-1.2-2014.0422.zip
28 https://github.com/catseye/Illgol-Grand-Mal/archive/rel_16_tons_and_what_do_you_get.zip
25 http://www.lua.org/ftp/lua-5.2.2.tar.gz
26 http://waterlan.home.xs4all.nl/dos2unix/d2u71b.zip
2927
30 http://www.gnu.org/licenses/gpl-2.0.txt
31 ]],
28 http://catseye.tc/distfiles/shelta-1.2-2014.0422.zip
29 https://github.com/catseye/Illgol-Grand-Mal/archive/rel_16_tons_and_what_do_you_get.zip
3230
33 name_map = {
34 ["yasm-1.2.0-dos.exe"] = 'yasm120.exe',
35 ["BSD.txt"] = 'yasmlcns.txt',
36 ["lua-5.2.2.tar.gz"] = 'lua522.tgz',
37 ["shelta-1.2-2014.0422.zip"] = 'shelta12.zip',
38 ["rel_16_tons_and_what_do_you_get.zip"] = 'illgolgm.zip',
39 ["gpl-2.0.txt"] = 'gpl20.txt',
40 ["befunge-93"] = 'befung93',
41 ["maentwrog"] = 'maentwrg',
42 },
31 http://www.gnu.org/licenses/gpl-2.0.txt
32 "
4333
44 distrepos_specs = [[
45 gh:catseye/Befunge-93
46 gh:catseye/Maentwrog
47 gh:catseye/RUBE
48 ]],
49 zip_unversioned = true,
34 if [ "x$DISTREPO_ROOT" = "x" ]; then
35 DISTREPO_ROOT="https://github.com/"
36 fi
37 DISTREPOS="
38 catseye/Befunge-93
39 catseye/Maentwrog
40 catseye/RUBE
41 "
42 ZIP_UNVERSIONED=True
5043
51 install_instructions = [[
44
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 #},
55
56
57 install_instructions() {
58 cat <<EOF
5259 * select "Install to Hard Disk"
5360 * select "f" to start FDISK
5461 * FAT32 -- no
7784 * select "Boot from system harddisk"
7885 * Hit Enter for the JEMMEX option, should be fine
7986 * viola, `C:\>`. You can now just stop the emulator.
80 ]],
87 EOF
88 }
8189
82 setup_instructions = [[
90 setup_instructions() {
91 cat <<EOF
8392 * Hit Enter for the JEMMEX option, should be fine
8493 * When booted, run `D:\INSTDJGP`
8594 * When it asks `replace lib/Perl5/Pod/perlmaco.pod?`, type `A`, Enter.
8796 * When finished, you may want to exit the emulator, run
8897 `funicular backup hda-djgpp`, and start it again.
8998 * run `D:\INSTPLAT`. This will install some tools into `C:\TOOLS`.
90 ]],
99 EOF
100 }
91101
92 dist_instructions = [[
102 dist_instructions() {
103 cat <<EOF
93104 * To initialize the distribution floppy, run `INITFLOP`.
94105 * Enter `360`, `720`, or `1440` as appropriate.
95106 * As explained in the script, it may take more than one attempt to format
103114 * To populate the floppy with a project distribution, run the `MAKEDIST.BAT`
104115 batchfile in the appropriate `SKEL` subdirectory. For example, to make a
105116 Shelta distribution, run `SKEL\SHELTA\MAKEDIST`.
106 ]]
117 EOF
107118 }
108
109 --[[
110 # to build lua: set LFN=n, cd src, make generic
111 # but I'm sure there are just binaries somewhere we could download?
112
113 # D:\INSTPLAT -- is not idempotent w.r.t. autoexec.bat and fdconfig.sys.
114 # it writes DEVICEHIGH=NANSI multiple times (which can actually kill the boot.)
115 # also, DJGPP.ENV contains CRs, not CRLFs. We should convert it,
116 # somehow, probably while it's in the staging area? (like name_map, have
117 # and entry that does eol mapping of some files)
118
119 # https://raw.githubusercontent.com/kikito/ansicolors.lua/master/ansicolors.lua
120
121 # http://www.nasm.us/pub/nasm/releasebuilds/2.11.04/dos/nasm-2.11.04-dos-upx.zip
122
123 # http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
124 #FREEDOS_BOOT_FLOPPY=$IMGDIR/fdboot.img
125
126 Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
127
128 160 * 1024
129 180
130 320
131 360
132 720
133 1200
134 1440
135 1680
136 1720
137 2880
138
139 KERNEL SYS 45341 2006-09-03 0:10 kernel.sys
140 COMMAND COM 66945 2006-09-03 0:11 command.com
141 DRIVER <DIR> 2006-09-03 0:11 driver
142 FDCONFIG SYS 1768 2006-09-03 0:11 fdconfig.sys
143 FREEDOS <DIR> 2006-09-03 0:11 freedos
144
145 ### Shelta ###
146
147 * Create a 720K floppy, as described above. Elect to install `yasm` on it.
148
149 * Back on the host, run `toolshelf dock bb:catseye/shelta` if you haven't
150 got it.
151
152 * Run `./outfit-floppy-shelta.sh`
153
154 * Run `./start-freedos.sh floppy` to confirm that the floppy image boots.
155 And test `shelta` on it. Then just quit QEMU.
156
157 TODO
158 ----
159
160 * LF2CRLF.COM ?
161 * BIN\SHELTAS.COM ...
162 * BIN\SHELTAS2.COM ...
163 * BIN\SHELTA86.COM ...
164 * SHELTA86.ASM ...
165 * ANSI colours in welcome.txt?
166 * welcome.txt in shelta repo?
167 * make ted3, debug, and more, optional, like yasm and perl are optional
168
169 ]]--
0 # to build lua: set LFN=n, cd src, make generic
1 # but I'm sure there are just binaries somewhere we could download?
2
3 # D:\INSTPLAT -- is not idempotent w.r.t. autoexec.bat and fdconfig.sys.
4 # it writes DEVICEHIGH=NANSI multiple times (which can actually kill the boot.)
5 # also, DJGPP.ENV contains CRs, not CRLFs. We should convert it,
6 # somehow, probably while it's in the staging area? (like name_map, have
7 # and entry that does eol mapping of some files)
8
9 # https://raw.githubusercontent.com/kikito/ansicolors.lua/master/ansicolors.lua
10
11 # http://www.nasm.us/pub/nasm/releasebuilds/2.11.04/dos/nasm-2.11.04-dos-upx.zip
12
13 # http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
14 #FREEDOS_BOOT_FLOPPY=$IMGDIR/fdboot.img
15
16 Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
17
18 160 * 1024
19 180
20 320
21 360
22 720
23 1200
24 1440
25 1680
26 1720
27 2880
28
29 KERNEL SYS 45341 2006-09-03 0:10 kernel.sys
30 COMMAND COM 66945 2006-09-03 0:11 command.com
31 DRIVER <DIR> 2006-09-03 0:11 driver
32 FDCONFIG SYS 1768 2006-09-03 0:11 fdconfig.sys
33 FREEDOS <DIR> 2006-09-03 0:11 freedos
34
35 ### Shelta ###
36
37 * Create a 720K floppy, as described above. Elect to install `yasm` on it.
38
39 * Back on the host, run `toolshelf dock bb:catseye/shelta` if you haven't
40 got it.
41
42 * Run `./outfit-floppy-shelta.sh`
43
44 * Run `./start-freedos.sh floppy` to confirm that the floppy image boots.
45 And test `shelta` on it. Then just quit QEMU.
46
47 TODO
48 ----
49
50 * LF2CRLF.COM ?
51 * BIN\SHELTAS.COM ...
52 * BIN\SHELTAS2.COM ...
53 * BIN\SHELTA86.COM ...
54 * SHELTA86.ASM ...
55 * ANSI colours in welcome.txt?
56 * welcome.txt in shelta repo?
57 * make ted3, debug, and more, optional, like yasm and perl are optional
0 return {
1 platform = NetBSD_6,
2 system_image = 'wd0.img',
3 setup_image = 'setup-netbsd.iso',
0 PLATFORM="i386-qemu"
1 INSTALL_IMAGE='NetBSD-6.1.5-i386.iso'
2 INSTALL_IMAGE_URL='ftp://iso.fr.netbsd.org/pub/NetBSD/NetBSD-6.1.5/iso/NetBSD-6.1.5-i386.iso'
3 SETUP_IMAGE='setup-netbsd.iso'
4 SYSTEM_IMAGE='wd0.img'
5 DIST_IMAGE='floppy.img'
46
5 distfiles = [[
6 http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
7 https://github.com/catseye/toolshelf/archive/0.1-2014.0818.zip
8 http://ftp.gnu.org/gnu/make/make-3.81.tar.gz
9 http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz
10 http://mercurial.selenic.com/release/mercurial-1.9.3.tar.gz
11 http://www.cpan.org/src/5.0/perl-5.18.2.tar.gz
12 http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-plus-Sep2006.tar.gz
13 http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
14 http://code.call-cc.org/releases/4.8.0/chicken-4.8.0.5.tar.gz
15 http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
16 ]],
7 DISTFILES="
8 http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
9 https://github.com/catseye/toolshelf/archive/0.1-2014.0818.zip
10 http://ftp.gnu.org/gnu/make/make-3.81.tar.gz
11 http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz
12 http://mercurial.selenic.com/release/mercurial-1.9.3.tar.gz
13 http://www.cpan.org/src/5.0/perl-5.18.2.tar.gz
14 http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-plus-Sep2006.tar.gz
15 http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
16 http://code.call-cc.org/releases/4.8.0/chicken-4.8.0.5.tar.gz
17 http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
18 "
1719
18 -- https://github.com/git/git/archive/v1.9.4.zip
19 -- make NO_CURL=1
20 -- temporarily link /usr/bin/perl to `which perl` (sighhhh)
21 -- no porcelain, but e.g. git-log is available
22 -- github.com/git/git
23 -- build_command NO_PERL=1 LIBRARY_PATH=$TOOLSHELF/.lib CPATH=`toolshelf pwd curl-7.35.0`/install/include make
24 --
25 -- */*/qemu-1.*
26 -- build_command PKG_CONFIG_PATH=`toolshelf pwd glib-2.39.4`/install/lib/pkgconfig ./configure --with-system-pixman --disable-sdl --prefix=`pwd`/install && make && make install
27 --
28 -- */*/glib-2.*
29 -- build_command LIBFFI_CFLAGS=-I`toolshelf pwd libffi-3.0.13`/install/lib/libffi-3.0.13/include LIBFFI_LIBS="-L/home/user/toolshelf/.lib -lffi" ./configure --prefix=`pwd`/install && make && make install
20 if [ "x$DISTREPO_ROOT" = "x" ]; then
21 DISTREPO_ROOT="https://github.com/"
22 fi
23 DISTREPOS="
24 catseye/alpaca
25 catseye/animals
26 catseye/apple-befunge
27 catseye/arboretuum
28 catseye/befos
29 catseye/befunge-93
30 catseye/beta-juliet
31 catseye/beturing
32 catseye/bhuna
33 catseye/braktif
34 catseye/bubble-escape
35 catseye/burro
36 catseye/c64-demo-depot
37 catseye/cabra
38 catseye/castile
39 catseye/cfluviurrh
40 catseye/chrysoberyl
41 catseye/circute
42 catseye/console-virtual
43 catseye/corona-realm-of-magic
44 catseye/crone
45 catseye/deturgenchry
46 catseye/dieter
47 catseye/dipple
48 catseye/disksumo
49 catseye/dungeons-of-ekileugor
50 catseye/eightebed
51 catseye/electronics-projects
52 catseye/emmental
53 catseye/etcha
54 catseye/exanoke
55 catseye/falderal
56 catseye/fbbi
57 catseye/flip
58 catseye/flobnar
59 catseye/funge-98
60 catseye/funicular
61 catseye/gemooy
62 catseye/granola-m
63 catseye/hev
64 catseye/html5-gewgaws
65 catseye/hunter
66 catseye/illgol-grand-mal
67 catseye/iphigeneia
68 catseye/jaccia
69 catseye/jolverine
70 catseye/kangaroo-iceberg
71 catseye/kelxquoia
72 catseye/kosheri
73 catseye/larabee
74 catseye/maentwrog
75 catseye/mascarpone
76 catseye/muriel
77 catseye/mzstorkipiwanbotbotbot
78 catseye/n-dcnc
79 catseye/netusb
80 catseye/nhohnhehr
81 catseye/noit-o-mnain-worb
82 catseye/pail
83 catseye/pibfi
84 catseye/pixley
85 catseye/pl-goto.net
86 catseye/pophery
87 catseye/quylthulg
88 catseye/redgreen
89 catseye/realpath
90 catseye/robin
91 catseye/rube
92 catseye/rube-ii
93 catseye/sally
94 catseye/sbeezg
95 catseye/shelta
96 catseye/sickbay
97 catseye/sixtypical
98 catseye/smetana
99 catseye/smith
100 catseye/specs-on-spec
101 catseye/squishy2k
102 catseye/strelnokoff
103 catseye/super-wumpus-land
104 catseye/tamsin
105 catseye/the-swallows
106 catseye/thue
107 catseye/toolshelf
108 catseye/tpis
109 catseye/treacle
110 catseye/troupe
111 catseye/unlikely
112 catseye/velo
113 catseye/version
114 catseye/whothm
115 catseye/wierd
116 catseye/wunnel
117 catseye/xigxag
118 catseye/xoomonk
119 catseye/yolk
120 catseye/yoob
121 catseye/yoob.js
122 catseye/ypsilax
123 catseye/yucca
124 catseye/zowie
125 catseye/zzrk
126 catseye/ophis
127 catseye/openzz
128 catseye/minischeme
129 "
30130
31 toolshelf_inside = true,
32 distrepos_specs = [[
33 bb:catseye/alpaca
34 bb:catseye/animals
35 bb:catseye/apple-befunge
36 bb:catseye/arboretuum
37 bb:catseye/befos
38 bb:catseye/befunge-93
39 bb:catseye/beta-juliet
40 bb:catseye/beturing
41 bb:catseye/bhuna
42 bb:catseye/braktif
43 bb:catseye/bubble-escape
44 bb:catseye/burro
45 bb:catseye/c64-demo-depot
46 bb:catseye/cabra
47 bb:catseye/castile
48 bb:catseye/cfluviurrh
49 bb:catseye/chrysoberyl
50 bb:catseye/circute
51 bb:catseye/console-virtual
52 bb:catseye/corona-realm-of-magic
53 bb:catseye/crone
54 bb:catseye/deturgenchry
55 bb:catseye/dieter
56 bb:catseye/dipple
57 bb:catseye/disksumo
58 bb:catseye/dungeons-of-ekileugor
59 bb:catseye/eightebed
60 bb:catseye/electronics-projects
61 bb:catseye/emmental
62 bb:catseye/etcha
63 bb:catseye/exanoke
64 bb:catseye/falderal
65 bb:catseye/fbbi
66 bb:catseye/flip
67 bb:catseye/flobnar
68 bb:catseye/funge-98
69 bb:catseye/funicular
70 bb:catseye/gemooy
71 bb:catseye/granola-m
72 bb:catseye/hev
73 bb:catseye/html5-gewgaws
74 bb:catseye/hunter
75 bb:catseye/illgol-grand-mal
76 bb:catseye/iphigeneia
77 bb:catseye/jaccia
78 bb:catseye/jolverine
79 bb:catseye/kangaroo-iceberg
80 bb:catseye/kelxquoia
81 bb:catseye/kosheri
82 bb:catseye/larabee
83 bb:catseye/maentwrog
84 bb:catseye/mascarpone
85 bb:catseye/muriel
86 bb:catseye/mzstorkipiwanbotbotbot
87 bb:catseye/n-dcnc
88 bb:catseye/netusb
89 bb:catseye/nhohnhehr
90 bb:catseye/noit-o-mnain-worb
91 bb:catseye/pail
92 bb:catseye/pibfi
93 bb:catseye/pixley
94 bb:catseye/pl-goto-.net
95 bb:catseye/pophery
96 bb:catseye/quylthulg
97 bb:catseye/redgreen
98 bb:catseye/realpath
99 bb:catseye/robin
100 bb:catseye/rube
101 bb:catseye/rube-ii
102 bb:catseye/sally
103 bb:catseye/sbeezg
104 bb:catseye/shelta
105 bb:catseye/sickbay
106 bb:catseye/sixtypical
107 bb:catseye/smetana
108 bb:catseye/smith
109 bb:catseye/specs-on-spec
110 bb:catseye/squishy2k
111 bb:catseye/strelnokoff
112 bb:catseye/super-wumpus-land
113 bb:catseye/tamsin
114 bb:catseye/the-swallows
115 bb:catseye/thue
116 bb:catseye/toolshelf
117 bb:catseye/tpis
118 bb:catseye/treacle
119 bb:catseye/troupe
120 bb:catseye/unlikely
121 bb:catseye/velo
122 bb:catseye/version
123 bb:catseye/whothm
124 bb:catseye/wierd
125 bb:catseye/wunnel
126 bb:catseye/xigxag
127 bb:catseye/xoomonk
128 bb:catseye/yolk
129 bb:catseye/yoob
130 bb:catseye/yoob.js
131 bb:catseye/ypsilax
132 bb:catseye/yucca
133 bb:catseye/zowie
134 bb:catseye/zzrk
135
136 bb:catseye/ophis
137 bb:catseye/openzz
138 bb:catseye/minischeme
139 ]],
140
141 install_instructions = [[
131 install_instructions() {
132 cat <<EOF
142133 * At the boot prompt, select "1. Install NetBSD"
143134 * After it boots, select a language for installation messages, and a keyboard type.
144135 * At the next menu, select "Install NetBSD to hard disk". Then "yes".
152143 * At "Bootblocks selection": Use BIOS console.
153144 * Install from CD-ROM.
154145 * When that's done - don't bother configuring anything.
155 * When back at the main menu, select "Exit Install System" and type `shutdown -p now`
156 ]],
146 * When back at the main menu, select "Exit Install System" and type 'shutdown -p now'
147 EOF
148 }
157149
158 setup_instructions = [[
150 setup_instructions() {
151 cat <<EOF
159152 * Login as root (which will not have a password. You may or may not wish to give it one,
160153 depending on your security needs.)
161154 * As root, run:
163156 cp /cdrom/setup-netbsd.sh .
164157 . ./setup-netbsd.sh
165158 * Follow the instructions in the script.
166 * Once it is finished, log out and log in again as `user`. (You may or may not wish to
159 * Once it is finished, log out and log in again as 'user'. (You may or may not wish to
167160 run passwd to give user a password at this point, depending on your security needs.)
168161 * Then run:
169162 th dock @/cdrom/infrastructure.catalog @/cdrom/catseye.catalog
170 ]],
163 EOF
171164 }
0 https://github.com/git/git/archive/v1.9.4.zip
1 make NO_CURL=1
2 temporarily link /usr/bin/perl to `which perl` (sighhhh)
3 no porcelain, but e.g. git-log is available
4 github.com/git/git
5 build_command NO_PERL=1 LIBRARY_PATH=$TOOLSHELF/.lib CPATH=`toolshelf pwd curl-7.35.0`/install/include make
6
7 */*/qemu-1.*
8 build_command PKG_CONFIG_PATH=`toolshelf pwd glib-2.39.4`/install/lib/pkgconfig ./configure --with-system-pixman --disable-sdl --prefix=`pwd`/install && make && make install
9
10 */*/glib-2.*
11 build_command LIBFFI_CFLAGS=-I`toolshelf pwd libffi-3.0.13`/install/lib/libffi-3.0.13/include LIBFFI_LIBS="-L/home/user/toolshelf/.lib -lffi" ./configure --prefix=`pwd`/install && make && make install
0 #!/bin/sh
1
2 cd /home/user
3 mkdir -p .local
4
5 if [ ! -d shelf ]; then
6 unzip /cdrom/shelf.zip || exit 1
7 #cp -Rp /cdrom/shelf_cookies shelf_cookies
8 fi
9
10 cat >>.profile <<EOF
11 . $HOME/shelf/shelf.sh
12 export SHELF_FARMBASE=$HOME/.local
13 export SHELF_PATH=$HOME/catseye
14 #export SHELF_COOKIES=$HOME/shelf_cookies
15 shelf_init
16 EOF
1717 echo >>fstab '/dev/cd0a /cdrom cd9660 ro'
1818 mv fstab /etc/fstab
1919
20 su user -c "/bin/sh /cdrom/init-toolshelf.sh"
20 su user -c "/bin/sh /cdrom/init-shelf.sh"
0 return {
1 platform = VIC_20_Platform,
2 install_image = 'blank.d64',
3 setup_image = 'setup.d64',
4 system_image = 'device8',
5 dist_image = 'dist.d64',
6 distrepos_specs = [[
7 gh:catseye/Dungeons-of-Ekileugor
8 ]],
9 setup_script = [[
10 cat >vicerc <<EOF
0 PLATFORM=vic20-vice
1 INSTALL_IMAGE='blank.d64'
2 SETUP_IMAGE='setup.d64'
3 SYSTEM_IMAGE='device8'
4 DIST_IMAGE='dist.d64'
5
6 if [ "x$DISTREPO_ROOT" = "x" ]; then
7 DISTREPO_ROOT="https://github.com/"
8 fi
9 DISTREPOS="
10 catseye/Dungeons-of-Ekileugor
11 "
12
13 setup_script() {
14 cat >vicerc <<EOF
1115 [VIC20]
1216 VICDoubleScan=1
1317 VICDoubleSize=1
1418 DriveTrueEmulation=0
1519 EOF
16 cp distrepos/Dungeons-of-Ekileugor/bin/* device8/
17 ]],
18 dist_script = [[
19 cd device8
20 for FILENAME in *; do
21 c1541 -attach ../dist.d64 -write "$FILENAME"
22 done
23 cd ..
24 c1541 -attach dist.d64 -dir
25 ]],
20 cp distrepos/Dungeons-of-Ekileugor/bin/* device8/
21 ls -la device8/
2622 }
23
24 dist_script() {
25 cd device8
26 for FILENAME in *; do
27 c1541 -attach ../dist.d64 -write "$FILENAME"
28 done
29 cd ..
30 c1541 -attach dist.d64 -dir
31 }
0 # Amiga 500 w/ E-UAE w/ certain options
1
2 DISTFILE_URL='http://www.rcdrummond.net/uae/e-uae-0.8.29-WIP4/e-uae-0.8.29-WIP4.tar.bz2'
3
4 OPTS="-s bogomem_size=4 -s cpu_speed=max -s floppy_speed=800"
5
6 platform_initsys() {
7 mkdir -p "$SYSTEM_IMAGE"
8 }
9
10 platform_initsetup() {
11 echo "No further initialization of setup image required."
12 }
13
14 platform_initdist() {
15 dd if=/dev/zero of="$1" bs=1K count=880
16 }
17
18 platform_start() {
19 uae ${OPTS} -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1"
20 }
21
22 platform_setup() {
23 uae ${OPTS} -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" -s "floppy0=${SETUP_IMAGE}"
24 }
25
26 platform_dist() {
27 uae ${OPTS} -s "floppy0=${DIST_IMAGE}" -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1"
28 }
29
30 platform_distboot() {
31 uae ${OPTS} -s "floppy0=${DIST_IMAGE}"
32 }
33
34 platform_install() {
35 uae ${OPTS} -s "floppy0=${INSTALL_IMAGE}" -s "filesystem2=rw,DH0:HDD:Funicular:${SYSTEM_IMAGE},1"
36 }
0 # Apple ][+ w/ Linapple w/ certain options
1
2 DISTFILE_URL='https://github.com/timob/linapple/archive/master.zip'
3
4 # floppies only, for now
5 platform_initsys() {
6 dd if=/dev/zero of="$1" bs=256 count=683
7 }
8
9 platform_initsetup() {
10 echo "No setup image required."
11 }
12
13 platform_initdist() {
14 dd if=/dev/zero of="$1" bs=256 count=683
15 }
16
17 platform_start() {
18 linapple
19 }
20
21 platform_setup() {
22 linapple
23 }
24
25 platform_dist() {
26 linapple
27 }
28
29 platform_distboot() {
30 linapple
31 }
32
33 platform_install() {
34 echo "No install step. Installation will happen during setup."
35 }
0 # Commodore 64 w/ VICE w/ certain options
1
2 DISTFILE_URL='http://downloads.sourceforge.net/project/vice-emu/releases/vice-2.4.tar.gz'
3
4 platform_initsys() {
5 mkdir -p "$SYSTEM_IMAGE"
6 }
7
8 platform_initsetup() {
9 echo "Not creating setup image. No setup image required."
10 }
11
12 platform_initdist() {
13 dd if=/dev/zero of="$1" bs=256 count=683
14 c1541 -attach "$1" -format "DIST,2A" -dir
15 }
16
17 platform_start() {
18 x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}"
19 }
20
21 platform_setup() {
22 echo "Not starting emulator. No setup image required."
23 #x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}"
24 }
25
26 platform_dist() {
27 echo "Not starting emulator. No in-architecture dist steps required."
28 #x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}" -iecdevice9 -9 "${DIST_IMAGE}"
29 }
30
31 platform_distboot() {
32 x64 -config vicerc -iecdevice8 -device8 1 "${DIST_IMAGE}"
33 }
34
35 platform_install() {
36 echo "No install step. Installation will happen during setup."
37 }
0 # i386 w/ QEMU 1.6.2 w/ certain options
1
2 DISTFILE_URL='http://wiki.qemu-project.org/download/qemu-1.6.2.tar.bz2'
3
4 platform_initsys() {
5 if [ "x$IMAGE_SIZE" = x ]; then
6 IMAGE_SIZE=1024
7 echo "IMAGE_SIZE not set, defaulting to $IMAGE_SIZE megabytes"
8 fi
9 dd if=/dev/zero of="$1" bs=1M count=${IMAGE_SIZE}
10 }
11
12 platform_initsetup() {
13 echo "Creating ISO image '$1'..."
14 echo genisoimage -R -J -D -joliet-long -o "$1" staging_area
15 genisoimage -R -J -D -joliet-long -o "$1" staging_area
16 }
17
18 platform_initdist() {
19 if [ "x$IMAGE_SIZE" = x ]; then
20 IMAGE_SIZE=1440
21 echo "IMAGE_SIZE not set, defaulting to $IMAGE_SIZE kilobytes"
22 fi
23
24 #-- TODO: this is a little restrictive
25 case $IMAGE_SIZE in
26 360|720|1440)
27 dd if=/dev/zero of="$1" bs=1K count=${IMAGE_SIZE}
28 ;;
29 *)
30 echo "Only supported sizes: 360, 720 and 1440"
31 exit 1
32 esac
33 }
34
35 platform_start() {
36 qemu-system-i386 -hda "${SYSTEM_IMAGE}"
37 }
38
39 platform_setup() {
40 qemu-system-i386 -hda "${SYSTEM_IMAGE}" -cdrom "${SETUP_IMAGE}"
41 }
42
43 platform_dist() {
44 qemu-system-i386 -hda "${SYSTEM_IMAGE}" -fda "${DIST_IMAGE}"
45 }
46
47 platform_distboot() {
48 qemu-system-i386 -fda "${DIST_IMAGE}" -boot order=a
49 }
50
51 platform_install() {
52 qemu-system-i386 -hda "${SYSTEM_IMAGE}" -cdrom "${INSTALL_IMAGE}" -boot order=d
53 }
0 # Vic 20 w/ VICE w/ certain options
1
2 DISTFILE_URL='http://downloads.sourceforge.net/project/vice-emu/releases/vice-2.4.tar.gz'
3
4 platform_initsys() {
5 mkdir -p "$SYSTEM_IMAGE"
6 }
7
8 platform_initsetup() {
9 echo "Not creating setup image. No setup image required."
10 }
11
12 platform_initdist() {
13 dd if=/dev/zero of="$1" bs=256 count=683
14 c1541 -attach "$1" -format "DIST,2A" -dir
15 }
16
17 platform_start() {
18 xvic -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}"
19 }
20
21 platform_setup() {
22 echo "Not starting emulator. No setup image required."
23 #xvic -config vicerc -iecdevice8 -device8 1 -fs8 ${SYSTEM_IMAGE}
24 }
25
26 platform_dist() {
27 echo "Not starting emulator. No in-architecture dist steps required."
28 #xvic -config vicerc -iecdevice8 -device8 1 -fs8 ${SYSTEM_IMAGE} -iecdevice9 -9 ${DIST_IMAGE}
29 }
30
31 platform_distboot() {
32 xvic -config vicerc -iecdevice8 -device8 1 "${DIST_IMAGE}"
33 }
34
35 platform_install() {
36 echo "No install step. Installation will happen during setup."
37 }
0 #!/bin/sh
1
2 . ./Funicularfile
3
4 DRIVER_DIR=`dirname $0`
5 . ${DRIVER_DIR}/fu-platform-${PLATFORM}.sh
6
7 runnable() {
8 command -V $1 >/dev/null
9 }
10
11 funicular_init() {
12 imgtype=$1
13 shift
14 case $imgtype in
15 system)
16 if [ -e $SYSTEM_IMAGE ]; then
17 echo "$SYSTEM_IMAGE already exists! Delete it first."
18 exit 1
19 fi
20 platform_initsys "$SYSTEM_IMAGE"
21 ;;
22 setup)
23 funicular_initsetup "$SETUP_IMAGE"
24 ;;
25 dist)
26 if [ -e $DIST_IMAGE ]; then
27 echo "$DIST_IMAGE already exists! Delete it first."
28 exit
29 fi
30 platform_initdist "$DIST_IMAGE"
31 ;;
32 *)
33 echo "Usage: funicular init (system|setup|dist)"
34 exit 1
35 esac
36 }
37
38 funicular_install() {
39 if [ ! -e $INSTALL_IMAGE ]; then
40 echo "$INSTALL_IMAGE does not exist. Obtain it first."
41 echo $INSTALL_IMAGE_URL
42 exit 1
43 fi
44 if runnable install_instructions; then
45 cat <<EOF
46 =========================
47 INSTALLATION INSTRUCTIONS
48 =========================
49 EOF
50 install_instructions
51 fi
52
53 platform_install $*
54 }
55
56 funicular_initsetup() {
57 echo "Creating setup image '$1'..."
58
59 rm -rf "$1"
60
61 mkdir -p distfiles
62 for url in $DISTFILES; do
63 dest=`basename $url`
64 if [ -e distfiles/$dest ]; then
65 echo "distfiles/$dest already fetched"
66 else
67 wget $url -O distfiles/$dest
68 fi
69 done
70
71 mkdir -p distrepos
72 cd distrepos
73 for url in $DISTREPOS; do
74 git clone $DISTREPO_ROOT$url
75 done
76 cd ..
77
78 rm -rf staging_area
79 mkdir -p staging_area
80
81 for url in $DISTFILES; do
82 dest=`basename $url`
83 # TODO apply name map here
84 dest_name=$dest
85 cp -p distfiles/$dest staging_area/$dest_name
86 done
87
88 cd distrepos
89 for repo in *; do
90 tar zcfv ../staging_area/$repo.tar.gz $repo
91 done
92 cd ..
93
94 # for spec in string.gmatch(distrepos_specs, "[^%s]+") do
95 # local url = get_url_for_spec(funicular, spec)
96 # local source_name = basename(url)
97 # local dest_name = source_name
98 # local domain = 'bitbucket.org' -- FIXME
99 # local username = 'catseye' -- FIXME
100 # if funicular.name_map and funicular.name_map[source_name] then
101 # dest_name = funicular.name_map[source_name]
102 # end
103 # if funicular.toolshelf_inside then
104 # local tarball_name = domain .. ',' .. username .. ',' .. dest_name .. '-master.tar.gz'
105 # execute(funicular, 'cd distrepos && ' ..
106 # 'tar zcf ../staging_area/' .. tarball_name .. ' ' .. source_name)
107 # elseif funicular.zip_unversioned then
108 # if exists('distrepos/' .. source_name .. '/.hg') then
109 # execute(funicular, 'cd distrepos/' .. source_name ..
110 # ' && hg archive -r tip -t zip ' ..
111 # '-X .hgignore -X .gitignore -X .hgtags -X .hg_archival.txt ' ..
112 # '../../staging_area/' .. dest_name .. '.zip')
113 # else
114 # execute(funicular, 'cd distrepos/' .. source_name ..
115 # ' && git archive --format=zip HEAD ' ..
116 # '--output=../../staging_area/' .. dest_name .. '.zip')
117 # end
118 # else
119 # execute(funicular, 'cd distrepos && tar zcf ../staging_area/' ..
120 # dest_name .. '.tgz ' .. source_name)
121 # end
122 # end
123
124 if [ -d skel ]; then
125 cp -Rp skel/* staging_area/
126 fi
127
128 if runnable setup_script; then
129 setup_script
130 fi
131
132 platform_initsetup "$1"
133
134 #rm -rf staging_area
135 }
136
137 funicular_setup() {
138 if runnable setup_instructions; then
139 cat <<EOF
140 ==================
141 SETUP INSTRUCTIONS
142 ==================
143 EOF
144 setup_instructions
145 fi
146
147 platform_setup $*
148 }
149
150 funicular_start() {
151 platform_start $*
152 }
153
154 funicular_builddist() {
155 if [ ! -e $DIST_IMAGE ]; then
156 echo "$DIST_IMAGE does not exist. (Initialize it first.)"
157 exit 1
158 fi
159
160 if runnable dist_script; then
161 dist_script $*
162 fi
163
164 if runnable dist_instructions; then
165 cat <<EOF
166 =========================
167 DISTRIBUTION INSTRUCTIONS
168 =========================
169 EOF
170 dist_instructions
171 fi
172
173 platform_dist $*
174 }
175
176 funicular_distboot() {
177 if [ ! -e $DIST_IMAGE ]; then
178 echo "$DIST_IMAGE does not exist. (Initialize and build it first.)"
179 exit 1
180 fi
181
182 platform_distboot $*
183 }
184
185 funicular_backup() {
186 bu=`basename $SYSTEM_IMAGE`
187 bu="$bu-backup.tar.gz"
188 if [ -e $bu ]; then
189 echo "$bu already exists! Delete it or rename it first."
190 exit 1
191 fi
192 tar zcvf $bu $SYSTEM_IMAGE
193 }
194
195 funicular_restore() {
196 if [ -e $SYSTEM_IMAGE ]; then
197 echo "$SYSTEM_IMAGE already exists! Delete it first."
198 exit 1
199 fi
200
201 bu=`basename $SYSTEM_IMAGE`
202 bu="$bu-backup.tar.gz"
203 tar zxvf $bu
204 }
205
206 ########
207 # MAIN #
208 ########
209
210 CMD=$1
211 shift
212
213 case $CMD in
214 init|install|setup|start|builddist|distboot|backup|restore)
215 funicular_$CMD $*
216 ;;
217 *)
218 cat <<EOF
219 Usage: funicular <command>
220 where <command> is one of:
221 init
222 install
223 setup
224 start
225 builddist
226 distboot
227 backup
228 restore
229 EOF
230 exit 1
231 esac