From f28dbdaa1ce3e464ee018994e26727641d7f3e7f Mon Sep 17 00:00:00 2001 From: Ivan Izaguirre Date: Fri, 28 Jan 2022 19:25:52 +0100 Subject: [PATCH] Replace vfsgen with go embed --- apple2Setup.go | 7 +- apple2main.go | 6 +- base64a.go | 3 +- cardBase.go | 4 +- cardDisk2Sequencer.go | 3 +- cardDisk2SequencerDrive.go | 2 +- cardVidex.go | 3 +- characterGenerator.go | 4 +- go.mod | 2 - go.sum | 5 - storage/resources.go => resources.go | 25 +- resources/80ColumnP109.BIN | Bin 0 -> 1024 bytes resources/80ColumnP110.BIN | Bin 0 -> 2048 bytes ...IIe Video Enhanced - 342-0265-A - 2732.bin | Bin 0 -> 4096 bytes ...e Video Unenhanced - 342-0133-A - 2732.bin | Bin 0 -> 4096 bytes resources/Apple2_Plus.rom | Bin 0 -> 12288 bytes resources/Apple2e.rom | Bin 0 -> 16384 bytes resources/Apple2e_Enhanced.rom | Bin 0 -> 16384 bytes resources/Apple2rev7CharGen.rom | Bin 0 -> 2048 bytes resources/BASE64A_D0.BIN | Bin 0 -> 4096 bytes resources/BASE64A_D8.BIN | Bin 0 -> 4096 bytes resources/BASE64A_E0.BIN | Bin 0 -> 4096 bytes resources/BASE64A_E8.BIN | Bin 0 -> 4096 bytes resources/BASE64A_F0.BIN | Bin 0 -> 4096 bytes resources/BASE64A_F8.BIN | Bin 0 -> 8192 bytes resources/BASE64A_ROM7_CharGen.BIN | Bin 0 -> 4096 bytes resources/DISK2.rom | Bin 0 -> 256 bytes resources/DISK2P6.rom | 65 ++++ resources/MemoryExpansionCard-341-0344a.bin | Bin 0 -> 4096 bytes .../ROMXce Production 1Mb Text ROM V5.bin | Bin 0 -> 131072 bytes resources/ThunderclockPlusROM.bin | Bin 0 -> 2048 bytes resources/Videx Videoterm ROM 2.4.bin | Bin 0 -> 1024 bytes resources/dos33.dsk | Bin 0 -> 143360 bytes romdumps/generate/.gitignore | 1 - romdumps/generate/generate.go | 24 -- romdumps/romdumps_vfsdata.go | 352 ------------------ storage/diskette.go | 16 +- 37 files changed, 100 insertions(+), 422 deletions(-) rename storage/resources.go => resources.go (77%) create mode 100644 resources/80ColumnP109.BIN create mode 100644 resources/80ColumnP110.BIN create mode 100644 resources/Apple IIe Video Enhanced - 342-0265-A - 2732.bin create mode 100644 resources/Apple IIe Video Unenhanced - 342-0133-A - 2732.bin create mode 100644 resources/Apple2_Plus.rom create mode 100644 resources/Apple2e.rom create mode 100644 resources/Apple2e_Enhanced.rom create mode 100644 resources/Apple2rev7CharGen.rom create mode 100644 resources/BASE64A_D0.BIN create mode 100644 resources/BASE64A_D8.BIN create mode 100644 resources/BASE64A_E0.BIN create mode 100644 resources/BASE64A_E8.BIN create mode 100644 resources/BASE64A_F0.BIN create mode 100644 resources/BASE64A_F8.BIN create mode 100644 resources/BASE64A_ROM7_CharGen.BIN create mode 100644 resources/DISK2.rom create mode 100644 resources/DISK2P6.rom create mode 100644 resources/MemoryExpansionCard-341-0344a.bin create mode 100644 resources/ROMXce Production 1Mb Text ROM V5.bin create mode 100644 resources/ThunderclockPlusROM.bin create mode 100644 resources/Videx Videoterm ROM 2.4.bin create mode 100644 resources/dos33.dsk delete mode 100644 romdumps/generate/.gitignore delete mode 100644 romdumps/generate/generate.go delete mode 100644 romdumps/romdumps_vfsdata.go diff --git a/apple2Setup.go b/apple2Setup.go index c785338..2689a02 100644 --- a/apple2Setup.go +++ b/apple2Setup.go @@ -4,7 +4,6 @@ import ( "errors" "github.com/ivanizag/iz6502" - "github.com/ivanizag/izapple2/storage" ) func newApple2() *Apple2 { @@ -77,7 +76,7 @@ const ( // LoadRom loads a standard Apple2+ or 2e ROM func (a *Apple2) LoadRom(filename string) error { - data, _, err := storage.LoadResource(filename) + data, _, err := LoadResource(filename) if err != nil { return err } @@ -98,7 +97,7 @@ func (a *Apple2) AddDisk2(slot int, diskImage, diskBImage string) error { a.insertCard(c, slot) if diskImage != "" { - diskette, err := storage.LoadDiskette(diskImage) + diskette, err := LoadDiskette(diskImage) if err != nil { return err } @@ -106,7 +105,7 @@ func (a *Apple2) AddDisk2(slot int, diskImage, diskBImage string) error { } if diskBImage != "" { - diskette, err := storage.LoadDiskette(diskBImage) + diskette, err := LoadDiskette(diskBImage) if err != nil { return err } diff --git a/apple2main.go b/apple2main.go index b8dc8a5..b508ba4 100644 --- a/apple2main.go +++ b/apple2main.go @@ -2,8 +2,6 @@ package izapple2 import ( "flag" - - "github.com/ivanizag/izapple2/storage" ) const defaultInternal = "" @@ -162,7 +160,9 @@ func MainApple() *Apple2 { diskImageFinal := *diskImage hardDiskImageFinal := *hardDiskImage if filename != "" { - if storage.IsDiskette(filename) { + // Try loading as diskette + _, err := LoadDiskette(filename) + if err == nil { diskImageFinal = filename } else { hardDiskImageFinal = filename diff --git a/base64a.go b/base64a.go index 467d90a..65b8185 100644 --- a/base64a.go +++ b/base64a.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/ivanizag/iz6502" - "github.com/ivanizag/izapple2/storage" ) /* @@ -36,7 +35,7 @@ func loadBase64aRom(a *Apple2) error { for i := 0; i < base64aRomChipCount; i++ { filename := fmt.Sprintf("/BASE64A_%X.BIN", 0xd0+i*0x08) - data, _, err := storage.LoadResource(filename) + data, _, err := LoadResource(filename) if err != nil { return err } diff --git a/cardBase.go b/cardBase.go index f33540c..072c6a0 100644 --- a/cardBase.go +++ b/cardBase.go @@ -2,8 +2,6 @@ package izapple2 import ( "fmt" - - "github.com/ivanizag/izapple2/storage" ) // Card represents an Apple II card to be inserted in a slot @@ -43,7 +41,7 @@ func (c *cardBase) reset() { } func (c *cardBase) loadRomFromResource(resource string) { - data, _, err := storage.LoadResource(resource) + data, _, err := LoadResource(resource) if err != nil { // The resource should be internal and never fail panic(err) diff --git a/cardDisk2Sequencer.go b/cardDisk2Sequencer.go index c2e8578..4d18641 100644 --- a/cardDisk2Sequencer.go +++ b/cardDisk2Sequencer.go @@ -2,7 +2,6 @@ package izapple2 import ( "github.com/ivanizag/izapple2/component" - "github.com/ivanizag/izapple2/storage" ) // TODO: fast mode @@ -54,7 +53,7 @@ func NewCardDisk2Sequencer() *CardDisk2Sequencer { c.name = "Disk II" c.loadRomFromResource("/DISK2.rom") - data, _, err := storage.LoadResource("/DISK2P6.rom") + data, _, err := LoadResource("/DISK2P6.rom") if err != nil { // The resource should be internal and never fail panic(err) diff --git a/cardDisk2SequencerDrive.go b/cardDisk2SequencerDrive.go index ef27e3a..0117c1f 100644 --- a/cardDisk2SequencerDrive.go +++ b/cardDisk2SequencerDrive.go @@ -21,7 +21,7 @@ type cardDisk2SequencerDrive struct { } func (d *cardDisk2SequencerDrive) insertDiskette(filename string) error { - data, writeable, err := storage.LoadResource(filename) + data, writeable, err := LoadResource(filename) if err != nil { return err } diff --git a/cardVidex.go b/cardVidex.go index b7fb6af..c9fcaca 100644 --- a/cardVidex.go +++ b/cardVidex.go @@ -8,7 +8,6 @@ import ( "time" "github.com/ivanizag/izapple2/component" - "github.com/ivanizag/izapple2/storage" ) /* @@ -47,7 +46,7 @@ func NewCardVidex() *CardVidex { } func (c *CardVidex) loadCharacterMap(filename string) error { - bytes, _, err := storage.LoadResource(filename) + bytes, _, err := LoadResource(filename) if err != nil { return err } diff --git a/characterGenerator.go b/characterGenerator.go index c728ee3..06612fe 100644 --- a/characterGenerator.go +++ b/characterGenerator.go @@ -2,8 +2,6 @@ package izapple2 import ( "errors" - - "github.com/ivanizag/izapple2/storage" ) /* @@ -52,7 +50,7 @@ func newCharacterGenerator(filename string, order charColumnMap, isApple2e bool) } func (cg *CharacterGenerator) load(filename string) error { - bytes, _, err := storage.LoadResource(filename) + bytes, _, err := LoadResource(filename) if err != nil { return err } diff --git a/go.mod b/go.mod index 4228284..34e193f 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ require ( github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec github.com/ivanizag/iz6502 v1.2.1 github.com/pkg/profile v1.6.0 - github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 github.com/veandco/go-sdl2 v0.4.12 ) @@ -19,7 +18,6 @@ require ( github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564 // indirect github.com/srwiley/rasterx v0.0.0-20200120212402-85cb7272f5e9 // indirect github.com/stretchr/testify v1.5.1 // indirect diff --git a/go.sum b/go.sum index 3c25e35..20a0f88 100644 --- a/go.sum +++ b/go.sum @@ -40,11 +40,7 @@ github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdL github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564 h1:HunZiaEKNGVdhTRQOVpMmj5MQnGnv+e8uZNu3xFLgyM= @@ -87,7 +83,6 @@ golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/storage/resources.go b/resources.go similarity index 77% rename from storage/resources.go rename to resources.go index 5cfb874..ef6934b 100644 --- a/storage/resources.go +++ b/resources.go @@ -1,24 +1,29 @@ -package storage +package izapple2 import ( "archive/zip" "bytes" "compress/gzip" + "embed" "io" "io/ioutil" "net/http" "os" "strings" - "github.com/ivanizag/izapple2/romdumps" + "github.com/ivanizag/izapple2/storage" ) const ( internalPrefix = "/" + embedPrefix = "resources/" httpPrefix = "http://" httpsPrefix = "https://" ) +//go:embed resources +var internalFiles embed.FS + func isInternalResource(filename string) bool { return strings.HasPrefix(filename, internalPrefix) } @@ -34,8 +39,8 @@ func LoadResource(filename string) ([]uint8, bool, error) { var file io.Reader if isInternalResource(filename) { // load from embedded resource - resource := strings.TrimPrefix(filename, internalPrefix) - resourceFile, err := romdumps.Assets.Open(resource) + resource := embedPrefix + strings.TrimPrefix(filename, internalPrefix) + resourceFile, err := internalFiles.Open(resource) if err != nil { return nil, false, err } @@ -96,7 +101,7 @@ func LoadResource(filename string) ([]uint8, bool, error) { if err != nil { return nil, false, err } - if isFileDsk(bytes) || isFileNib(bytes) || isFileWoz(bytes) { + if storage.IsDiskette(bytes) { data = bytes break } @@ -105,3 +110,13 @@ func LoadResource(filename string) ([]uint8, bool, error) { return data, writeable, nil } + +// LoadDiskette returns a Diskette by detecting the format +func LoadDiskette(filename string) (storage.Diskette, error) { + data, writeable, err := LoadResource(filename) + if err != nil { + return nil, err + } + + return storage.MakeDiskette(data, filename, writeable) +} diff --git a/resources/80ColumnP109.BIN b/resources/80ColumnP109.BIN new file mode 100644 index 0000000000000000000000000000000000000000..f568848ad40b71dccbdb18ab1ff60323ece6e4df GIT binary patch literal 1024 zcmZuwUuYaf7@xb_o!#3u>5=qgTa^x8Dp`pb#OU~75c=RI9`wL>S$vu+7W73HB<4zc zF~pv%Na3O^95jVY=#^Dp){=#NY1!FWy3{AphCXObe5lixviK+U+v}^}!_4=6^Ue4D zzTYy%R_0ll61)9vImJw#AW8ar3emMM#C4 zS(#6C8xFad+&>L>hbXQ+nyJO&GdTEJoXZS|TzC@_2fq|)4TE`D#9n!U*w(Tis?7Pg z_1>|g`ottU6dyt$h5fW{9z%Mp7d8Z4IeC|=65y$%kzSd)8!BGK4;82vg(|s_Ud=Hd zVGR{?DXaiqJ`T`1TA~UVP88y58Txa0Z1c{3Df?$Q8#CA+I@^$@ogRcr6e^X#rv$?WFvAqc5 zQ-v8IepqonceQ@Ode2oygfHq=#W2Qld|__$`%b(uH+{`j9iy23B0FP~Qz;8nAN>F$ zM7OTFnqvcS^7{_(W@(winv=p(vKQDsv6k)K5EuSRR%bUFK?Ry0=Bj9c7An93>*cC5 zdb$jT6=WI|sn)Wp_$Jdqwf=05C*s?z$`9V4nol)HduO5d(H0K`pVpO z2C~W6S6h91t!Q`iVvgCg-Kz0gm#)0dweG7cuMw1(p364o|KR1Pq)6Y`c`KSbRanzlHk#tW2vMuJYZK~Dut1gc3d8IzNobY9`pTc97c>gW$PWyz}o$_wO Xw-jGyN8n=?AM|f=URFS-&WZm3)v34W literal 0 HcmV?d00001 diff --git a/resources/80ColumnP110.BIN b/resources/80ColumnP110.BIN new file mode 100644 index 0000000000000000000000000000000000000000..e5d7cfa5ef5d3cc78d753aa33306b164c65e8686 GIT binary patch literal 2048 zcmZ`)F>BjU5I)2sXfVmcWY8djFd9th;3=3Q#N#1?=}=6_kRgNdlrd8=#Ry?KgwVl= zOoe9Xm>*Fx<#%N0n89PFxOcL3cQ*87?DyUGy}S3`-ID=!ZM|OaIskTD2zKyBEUwK+ zF!BflZ-C&J<;%mW6U1%O<#M(B6NX`ntEzffMb@_X_I8})ieFVv4@<@0RMos2A9q{* zO*OHv-EK$WlfT9sws`*+Lrd~4d89-{YfKdR{%6D=?U5Q2|3+V1BdNyZ))gUMW8&Y) zsZ8T$zT#-OR+xBg5gA16Iz8>C3~-R9B|hQ`^HJ8Fb9rETe{DaW|KKUfcs#wo{mM9s zLJ_04W0NGYTpk#N#+Y!xdRt!%FKRW#+IQ)OjchMw$&=dw?x?lEgf?+i3t?E?)xV1& z<8VlalQYhI5GPJTmL`k?pD}Mb$7yK{Fo&7UN0?v=i57Lc$$LsIhy^1#fP2daiF zA2wK>;XyQs4nz)6;-d`NXd)Q*)3G4unfafO_fGZ`rQVm`^8{QxeHh0*=Uk7kE6fV- zeIe^Dotrs*UJZ77{ukdnVT`jeo#cy~-jw)<*bYY3#}}jVbs>6O4VvtD@%&gX77K|# zJ^y^B;tvaCRXo}p24Fq$cf}{h#E(?I%)3n27n_lc^|%)_IZsSh^!vhN_C@_zuzpeW zZNHH964vqFn|^&~eLf(|8CNc`p$Qo02V}yB@dr9l=C=b57)5rEd^7X!-&pUceO3Jd zGVh$k4}u(d!NixUpWooTleSmDxwFg3V#|Du505->R>A#Z#P5K7_J3!T+ yu&zIVPw~!i_N_j7VozzJq-4~w;UHA+ORBA|FOeu={iK$6D>>6q-F&u!U;hABH_*la literal 0 HcmV?d00001 diff --git a/resources/Apple IIe Video Enhanced - 342-0265-A - 2732.bin b/resources/Apple IIe Video Enhanced - 342-0265-A - 2732.bin new file mode 100644 index 0000000000000000000000000000000000000000..55a170ce1e4699ddbc0fbd7e9458e941872ba99c GIT binary patch literal 4096 zcmd^=Yj4v^6M$Dyg(6g;y6T7OD5|Q}5qcHz0b%I~9aZ_{zu>>%zu=E2g#zYU?qKfs zi@8&10YlSJN-4M$C;>{@hG0s7P=^wVTSC}(#*_2@iFcCCdUj`L#k5~tb zw{V`~oV9U|UzXspSd1r72WexeSgb7;OV#HX>wxVQyo13e9OEnzM@g`D6gbD57cW}e z%o&)0q!|AznM6CzmnK)BJt&;~gWp)BC!3c=@$nqQPoSSvu>Kfn(9p-z4dpe(%QPbwRH(w_6L}vBwOIam@jfe)3revmW0R(Aqzs_SNft> zs|g=-_bEyotvv-o)`-S zg4MA9AxIwkGlbsvbFdeNka}bSk5zoY;B|qGC{GFRIhvb*_Y5nTfe(7V80DWY7xDee z#nMc+T!y+AqPh-OYj7n{7d#JKLLKpo^I*O_3;rR8C<@FF7pnmkfEB0-{9-j=4eZO1 zUI_F5_x)3CuwZ_E5c(O~99paZI(GP=%)=^_7WYLK^x|Z-fOSV5D(;iLfJ)*8!hOkN zxm=#906a6Z(8tlW!n%|IKn^=EB8tw#y+t|@0P)aYUdo{b;C-dI6r?%xv*dx3ky=t&s%(c9^2d$*ylff81|1JQqIlk z`rMq9-@j|h_wQ0xDymnhNcrs>x4wOoa&}hHW}!{Ler4?IS1F;jVFYdv(3qJK=FCjs ze);05U%muxspJNwQs936>^Pr42kxg&w(;px;C}pQ@sA$^w^%equ^6}?J{b0g4}m*9 zt?Sd%f&2cwro4Y2xW2D?z8|>n-f`>QyTC0J6s=GQ+_!HTd;2zUvEl%hIW-lyQ&Yl( zDo5kZ8&7@nMwpY6ZZJ71%-63S=k;r0PE6Rw#Dp+ky|VbLSHgVx(iAUW3iHJa!+!BX zn7N#;!#$hNpKHqV=fWHxSH1CZVLp4tt!K}K`ShuxJ$)+7Cr=oA@VpRsfAGLlhlfouJnX6W z?;H00`<^;9r0YXNo_g<|rrf*dse^;6H#q32ckgoR?p;sKW)&@)_0)j@#s&sFHItDN z{xt{v{ej!x?*@172=mSzH@JPz3o(y5$BpZ`#Jqn{II9hQ)8(aD%=+ zQ}p$@L2s{N_x8HM_3OHR{kj`myQV4EuDL-^kLvaGxWUz{+`4+z4X#{Kv@2KK;PPe0 zE?;(oOP8d)bjfipUJTre7aixq1z}#e;5g^cd+Pb~j&tsu8=O1m{7=rFwT-i99p}s$ zi=R2;IHymW;`C|9Id#ggPn~j{lP7ik5-n|yzyVo}M>@mfjJ+`rXw_)$zZ5z9G>H4l+wy|@krtI8l8#{KW-i{r% zv3)zYwr{tMZQB%W+cw+Sx|Ol5TWzDeTgvWki*MNyxLdYZeDh{uZr*J1O`AM*((-fK-8ze}U2E8D*IInd8eLzr#^POFn$p!} z@ztwUZ}n=6uUf^eRjVxC*{Nuqofc208B3=v4(NlJg7`ND@ox&^-xS2ZDTsel5dWqi z{*iqe#J?$se^U_urXc=JLHwJ7_%{XdZwlhyu!(=eCjJeZ_&03g->`{)!zTU>oA@_u z;vdpJnT>%_mV6aTtS{OdaLuj|CW zt`q;rJ`Lhu*NJ~!C;oMv_}6vfU)PC$O(Fg@h4|ML;$KsUe@!9&HHG-s6yje~h<{BX z{xya8NA_tD|C&PlYYOqNDa5~~5dW%2{Hq@EuX@D4>Jk5{NBpZE@vnNszv>bHsz>~* z9`Ubw#6Pl6gZNiH;$QWMf7K)YxkdbQi}>dj@y{*dpIh_?fLp{rw}^jk5&zsG{<%f` zbBp-r7V(el(;)u2Mf`J%_*XRIU(twvMI-(djrdnI;$P8-e?=qy6^-~;G~!>;h<`;R z{uPb*S2W@u*{4DLD;n|781c^-@y{6X&lvH~81c^-@y{6X&lvH~81c^-@y{6X&lvH~ N81c^-@sI4&_%HsNwjBTf literal 0 HcmV?d00001 diff --git a/resources/Apple IIe Video Unenhanced - 342-0133-A - 2732.bin b/resources/Apple IIe Video Unenhanced - 342-0133-A - 2732.bin new file mode 100644 index 0000000000000000000000000000000000000000..cfe7931a1008f006514d4ab7c92293b30ce104d3 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/resources/Apple2_Plus.rom b/resources/Apple2_Plus.rom new file mode 100644 index 0000000000000000000000000000000000000000..b0641c38987bbfb407afb1e5cda45b5efcf0e1d3 GIT binary patch literal 12288 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 F{|8ULi|GIW literal 0 HcmV?d00001 diff --git a/resources/Apple2e_Enhanced.rom b/resources/Apple2e_Enhanced.rom new file mode 100644 index 0000000000000000000000000000000000000000..65bb648567f66b37874b1a417f564b296280c5f7 GIT binary patch literal 16384 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 I|Nid(1v1KeNdN!< literal 0 HcmV?d00001 diff --git a/resources/Apple2rev7CharGen.rom b/resources/Apple2rev7CharGen.rom new file mode 100644 index 0000000000000000000000000000000000000000..094bebf9caf23e3b44bb5a54a44e7b1d0296ec26 GIT binary patch literal 2048 zcmeHH!HU~35FLzJL|KXtK9pjD5FrFpO2}d9A^6*bF^edn_~1h+CI}HiFr_SeSb7Nl zw!SxB*pKKw8;wSqnfEk~B9*JZez7YtrE`sQa&V5XRL)xKD*C`d8fy>MHm}yo3fmjE z5^N&PNo9yiG6H#Sz1?lsP7nq(;vVXnan9}Q4ddasr9SFf_3QO#j%~=DP1i>rO9$rQ0I3eLHy_c*8dL|XU}`905{-9~cURZCSbhQZe zbK8ZUI-iKy``CxB^?rUN;Pa#y7tmjzG(PxY7<6G6W;}xrr|bCr7W~sQ>Rujwf4%n9 zNiG6p5fmOIEvS8%#xPFU3jxwK1k;|AH!|>e)#-80%k+$MhM!b0!f%hNzwM4Ze|H?t zbJwBoH|^_>KH`(0FU;?I_Kh#?sqOw!5vwm2yzB-#03SWU$ZlW_@g3v^{0`plKduGu UGw;Lu{eQpzygc|H_%H7NKcifwj{pDw literal 0 HcmV?d00001 diff --git a/resources/BASE64A_D0.BIN b/resources/BASE64A_D0.BIN new file mode 100644 index 0000000000000000000000000000000000000000..196137f6aa501f3973dd82eceb93f88187af2a94 GIT binary patch literal 4096 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
WwzL@8n=db zozKG2_VZcdgYGqfv#Xsd&cLogYAgx4SKF;?(4$!G?1y#S8gCYbVzI@osmg*er}t|( z!{{34=e$c|F-;5OoqNtV5aeY!o?aaN{o*JJM!~*bM~@H+J1$>wMxkw(LC<0rA$V|d zM_dq85RC)lzIf-PXP-+klp4g*9S;R@l3g{GGx1wtgJ(xe$0I>j5A_SP>)G#fdhsFN z>$pSm>mjcEH3%@8Ays6Ter!El8sEnk|L?3qdFW3IWvMRnuBE{^1m&d1`~JJ{{m1E! z)9)R!JC4@WHM~=sZh7qKifHAt>sBMpZsMuGdGVzm|8;2@LqrkFiAtg{J3&s!zPI90 z?V2ZJNPS{l?54buhvSo$ZBVF^!8KtJ$6BD#hrbdI<20$u(-Pcr3GM>Gg+vfM&S!*n z&r?(r(HRrE59hMn8L|8iG~U7dsW$&V)D<(77QzoS5giYPS~@hLZ+Uo=cYtel)u#~8 zyb#2>FeI&wrBK}=>1`pq>MDG3@NMFo?RUK&ymRumr-&$JY*K25^rnJ$)cuFvH=lTV zgY@Vd=s!O^@@bvF>y4UUx3r!4c;hO``Fbp;cLar_K+4VwwLpr_3kz^)51fY;U9m&8 zAu-0Tngx6vjsFYPFOO6=Hk>&0*3hHV$vv?lH6%tS6ac%JDb$HckUet9o^dEdsh)NG zr!b3jn0p*(lkA8%)s41=gc?kGvmk^J`Dn)^DUJvZ-2SFWx}y2#SUumz8j!wE{H{yR z=YKtX2!_vpJw)^?eQ2X(oX+l}-jwzBeIwGW{)q)fGIOy>N@FY!#nEMUG zo50HBf5z~)txii;Z;|wsFxb2$*_2S>6nuuNoR&3z$fkp zcjFGKGmG?CMNk|7iq`y4waAL8Ha2oPpB(oYzn^;s(31Y z*g>q6_>DEZD`$da)A*VRf=vhhTQy7$mo}QhCUfbdsqj2V7UUi|y)T|q!CuC?6R{l5 zEj*`EkR_gHs#16#8_%GEcy9`1r<~4Ept~tlRT_m#;w_M-DI6)Pxcy>+iTe30;v~mX8MH|fNCSaH5K!8E3wW|C9bd0gm#495Ad=3d`%_(n1bxxc zVKK2PO%j{xN|giwV;YK5qDPb{LqWfj1Xvdh9v0)PQUZ8-EL~br^5nkM21$xw->}!% zjvlM~m+IPoJ#KY^E&|`)NuoVUbVGrbDIu5}R-hau)I!plAVm)~$64d742n^(D%7jw w;>7DxrA%xlu?lXUQt6(w#$V%QEXlww2oU8Sh42ZG5ryyvAnz)KZXmDyH+hBarT_o{ literal 0 HcmV?d00001 diff --git a/resources/BASE64A_D8.BIN b/resources/BASE64A_D8.BIN new file mode 100644 index 0000000000000000000000000000000000000000..5fc7306fd49d9b0f7b1cd3668b52215085f6340e GIT binary patch literal 4096 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 Cb2H@t literal 0 HcmV?d00001 diff --git a/resources/BASE64A_E0.BIN b/resources/BASE64A_E0.BIN new file mode 100644 index 0000000000000000000000000000000000000000..20b29a0d2f70549a7314337dba8c13b82387a1fa GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/resources/BASE64A_F8.BIN b/resources/BASE64A_F8.BIN new file mode 100644 index 0000000000000000000000000000000000000000..522037cd739a057aca32a974c77d7276c64d9a7d GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/resources/BASE64A_ROM7_CharGen.BIN b/resources/BASE64A_ROM7_CharGen.BIN new file mode 100644 index 0000000000000000000000000000000000000000..795da2cd5794d4ae068d09014ca6a9351830e3ac GIT binary patch literal 4096 zcmeHKtCrg^5WP@P&`>bY&`{7&pCGtUpuo^jFfg!Ca6ci?pRjOYprKGt@11OVN_tw_ z#FK0$Bh6c@xp54o)>;r!t-V$(wd##hopW5LKw8k9Tb%1(++pYTR(EidW)&rf3RV&A z>UD78^oAfCtu7Xj)vCP_C@yIt8aRX?`xbO-*SKF!K)iSL@v-LKlxpj)Q?tg4761I^rGiqjCfom9Otk5 zc-(*Bxc{7MoD2MCAU*H=k3sc)<76!BPEMG!dSM8+W92GGtM+SmJM!5tn!A!Yam!s_ z_@V*Md5s)noJTf~2vTiT>i_|;345%gcYF5NWFjEr$=?dx2H~ONmvwd@}t19LHfCKLz&o QH|2cIdD8Q+(F6Z~0%)PtRR910 literal 0 HcmV?d00001 diff --git a/resources/DISK2.rom b/resources/DISK2.rom new file mode 100644 index 0000000000000000000000000000000000000000..56698b0f8879c56af152fc0cbff4230ba53592b0 GIT binary patch literal 256 zcmZ3auz+C^bDK>Umx|2?0ahE&|C)6hIJ_?Wo-sF!`NRu>rwS4OckN|hn4!tc#R?Q}Jg_oMVa1;gf!D2St+uU>D>+)#B{+a;1%7*8 zz3?5(IJxS==T{Kcv=5vb6YhJi{h)f`<^twc2e7DCs|}b|wduIsTp%eH(9X@`vt`;9` zXgns>!D)Tn!RRsEa1bBfU;o2seJ%QbDmvDYPV1BM0A3Pm_PDh`3csA0)JRX;wtHI=mv~5^Dy<_Cam?`SOxy zHR|0mo#`p=SaZ=QjFZ`OdC}baL{X{(Nxv?ezP0A8d7+7Y&t$tzMyK2;qEW=5aWRu2 zH>FNJEp8jgb}FdQtv=KnY$j%x;_5AHEl15>(_cYG-h5Ke?YVUJ z?NfprP^ex(_Zqaw#1#e~7&IK(NyXD5L=fUAgsNZs@BE$0&F# zT}6JJ>fzt`qZitWi|_?JXik$-QNKlu>+)5_=y_(!w+5u1Nh zY#&{Qe@S!|`6F5W(TCtSm9Z7@k7fCf*!*K+``9x4OQNgDe^BR%^277O4jT}^k zC*`W1t!jX5k^^$3=8%Q%+<_x>_lAL@lWdh-btK0^_^z%7+RTI+Y`dFKtBQU)*+=(; z+GZ2QxdW~kGw_uvFCAkC6r>8Ucq2DHmuTTri#7TClz&tpp8>*Su;5@%&i$h!mBavn z?e_eL_LPPApsP48m^s<$k+g`?jN;XIc!(-Km^iw#dH#P zH%b_cE|P8ieM~@|EM>@-6uN(2Z>@m+!M`D%_;;yp$`#R21i28>#2AWee~wY{w;XY8 zIJTutJ0IKHCP^JgI~P$LuzjH5^4XSBm|h`xFlhbcDmC~@(XA9G$U)e82r{37%CD^J z6^zS8wDAWw*V%ziSDp?`pBBWtlnEO?XUMmw+!w0AUli!`(srRJnx^c+Kv}TM_f8fj z3-!VsufDotN1;{B!ly%B7k2F0ts%%8WKHvy&QK6W2)^)=*xke^jXHDI zp+!F$MFo*pfjqX4Wy3&sif7OFf z4np(k4>AtKpiG8FEYu7_nKYyYp)|q{2e%$N=F<4}w987#E{v%3M24d>oFl{08IH+t zY=+CpaLx?p%5d%sw2${%kG zUcaHdPn6N?*RCj6l2@)>pHzkiua8`a*~|D}RMzuC4np!<`xtn#6s?#2_~m)cg*O+d z{$NmWGtko9P)YE|XVMxg7g`6eWf8=GN~-~=@Y({6l99sp-zmTw3aqemH}59MI=69i zHbK~C?^FpbzLP(N;F^rj*%`L3#?5yVo6Q8=P}UGA@NectO}R`Pkjqs++_&q9L-Pg& z#UWs>Kx!!yRO@jt#Y;hQyQS=vX78ugBq=*CSAuwwC+nwpwK7O%Y@3g5*B~&3WZo74 zjm2La7J3^NL8kF1`Q&53Se$=t@sN6OT;&4`J`FVAfb=Hz(-ZK3>4pK9g z)F)O%?lXaLdtuvbMa%3jmf0l7k`GQj+%{5yZMZT<&9en<~G3 z__b5N_+{5lyoVp#wfnh=-8*+peC@f?iJhfA&t81KXXi5)_wakFL*K;qW3Gk|*Le7F zIj*V3{L6tFkJW)+3Wy@E@m28(4)f*JFII#-wsko0EgpYe@hqPCeF2fL@Hm}6yVp@& z74ub8g!ph6^Py1n^$K5&&u)bj{FLGe1A7JU6ZsJKSBF43^o>9{AKU8-hxstbE?n-~ T_YAVW+pUlGa_gf#du#m%m+9~> literal 0 HcmV?d00001 diff --git a/resources/ROMXce Production 1Mb Text ROM V5.bin b/resources/ROMXce Production 1Mb Text ROM V5.bin new file mode 100644 index 0000000000000000000000000000000000000000..b24875ba75d8bfc9c91bc9a01d0c901391e10e4b GIT binary patch literal 131072 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 Bcb5PF literal 0 HcmV?d00001 diff --git a/resources/ThunderclockPlusROM.bin b/resources/ThunderclockPlusROM.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c5c1cb8403fefe67bae17316dfe5baf3af76f05 GIT binary patch literal 2048 zcmeHF&ubJ{9N)~&>}01|l|;f;Ed5HX>`JJ6@W+5bx^*|c4U=Tp>{=BGd+6cSQx6_; zQFBm`g@qh?*ajAc(aJtabg2brgNq7<=FJ{_haN;wJa{lUl$Ta<5lZ@bE(lYo8N0@t1s#G&ygyrljY4PuxFLhm0C|XaMk8?N@h+8%}1ogXXQD*PfqZIvgiUIMNIK8rR8S$Avul$q~oa=kj20qH2t|@uJr|kvtopr zYuOC&;az)gcWPZr?V^Tth%x70==wWxJrYe*rKbG-g+gPi9eWA)0FmKUHK`xtKuz6I2zmyqryn>r?u!~QHIg18V14A zQPXw!SW9u;Dk?So_Kof;8t#a{-`51u;FnP0e@~ literal 0 HcmV?d00001 diff --git a/resources/Videx Videoterm ROM 2.4.bin b/resources/Videx Videoterm ROM 2.4.bin new file mode 100644 index 0000000000000000000000000000000000000000..9b9d12f1a9bded887668bfd52bdde096fb21c240 GIT binary patch literal 1024 zcmXw2U1%It6uz6Czg?PiO(I>;l55&h2cxFN=!!2s2u{M%u5SiKt`yoEA!yzf=OIzq zG_8(|ghE6Y)?hF7iVQxNUE)4`BJ+4}^mT0R|6yU8&vSPGeD|rL zOTlnI_;C*eh?H>OHOw8Uh~IP6GN&C|<0bZS<-HdNN%15xb`64o)ul7ri5hE8qEaPV zI=yYHZq~6?&(`R*NE}Dno~=T~@0+w0WG{NKBFJQt9@uCAhJSKdfVJ^>%VK-0wkjHQ zDhh*&+h*b=RDp@}vfT(4XCnEJHyq5#1BNJkuUgaxjyd8V+3HYLDd_)wil+!KL4Y1n z1sa4;5GcB_e~Mm#g}8;P+A0!Wj(eN7TBwVQDPf#qzL}_HCF-cpb2G3euL#3=JCN_d zx_nCDlN}lHSDbV|dp~v z*XZcC0TwGx^{rd%$NJ;G|KoB`Uy1bF#RXK~>d0>8&0{N@e!$203d^Ss7~>yUbUfm| zS|@khY@KW~OZ-I}fF|?Mk-AiP`BY>oakhLFc&-qV(VsBKFOizXHiYBovu0E zJxa)(w#v|fFfWgz{ZcO`@L8P2oGovh+oJm+eItaXZveOo+>v|b{cvw+>*%9%CAWC9 z@?7TAC;FcrERz&wPA?Khf55+h0f}?iEbnH~*?9iy+0sqtXveCJT(=girIFc@#oJ$2 z6{}JZ=WC_eSA|}CdG-}b!lL^j|9&JMnDeR{%*7{uBVBRtD8+|-4NG5>Ev+>ARH&cl=$#!nWscO^xxUNBaxTCnS87U)_?cOo&3vZ6^JzUkhZ7$~}TS!rtBCf4O&f4OyZd+%R4)z1z9 literal 0 HcmV?d00001 diff --git a/resources/dos33.dsk b/resources/dos33.dsk new file mode 100644 index 0000000000000000000000000000000000000000..ef257aac1808715f10c1532566aa8e837361e0f4 GIT binary patch literal 143360 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�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 f.seekPos { - // Rewind to beginning. - err = f.gr.Reset(bytes.NewReader(f.compressedContent)) - if err != nil { - return 0, err - } - f.grPos = 0 - } - if f.grPos < f.seekPos { - // Fast-forward. - _, err = io.CopyN(ioutil.Discard, f.gr, f.seekPos-f.grPos) - if err != nil { - return 0, err - } - f.grPos = f.seekPos - } - n, err = f.gr.Read(p) - f.grPos += int64(n) - f.seekPos = f.grPos - return n, err -} -func (f *vfsgenÛ°CompressedFile) Seek(offset int64, whence int) (int64, error) { - switch whence { - case io.SeekStart: - f.seekPos = 0 + offset - case io.SeekCurrent: - f.seekPos += offset - case io.SeekEnd: - f.seekPos = f.uncompressedSize + offset - default: - panic(fmt.Errorf("invalid whence value: %v", whence)) - } - return f.seekPos, nil -} -func (f *vfsgenÛ°CompressedFile) Close() error { - return f.gr.Close() -} - -// vfsgenÛ°DirInfo is a static definition of a directory. -type vfsgenÛ°DirInfo struct { - name string - modTime time.Time - entries []os.FileInfo -} - -func (d *vfsgenÛ°DirInfo) Read([]byte) (int, error) { - return 0, fmt.Errorf("cannot Read from directory %s", d.name) -} -func (d *vfsgenÛ°DirInfo) Close() error { return nil } -func (d *vfsgenÛ°DirInfo) Stat() (os.FileInfo, error) { return d, nil } - -func (d *vfsgenÛ°DirInfo) Name() string { return d.name } -func (d *vfsgenÛ°DirInfo) Size() int64 { return 0 } -func (d *vfsgenÛ°DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir } -func (d *vfsgenÛ°DirInfo) ModTime() time.Time { return d.modTime } -func (d *vfsgenÛ°DirInfo) IsDir() bool { return true } -func (d *vfsgenÛ°DirInfo) Sys() interface{} { return nil } - -// vfsgenÛ°Dir is an opened dir instance. -type vfsgenÛ°Dir struct { - *vfsgenÛ°DirInfo - pos int // Position within entries for Seek and Readdir. -} - -func (d *vfsgenÛ°Dir) Seek(offset int64, whence int) (int64, error) { - if offset == 0 && whence == io.SeekStart { - d.pos = 0 - return 0, nil - } - return 0, fmt.Errorf("unsupported Seek in directory %s", d.name) -} - -func (d *vfsgenÛ°Dir) Readdir(count int) ([]os.FileInfo, error) { - if d.pos >= len(d.entries) && count > 0 { - return nil, io.EOF - } - if count <= 0 || count > len(d.entries)-d.pos { - count = len(d.entries) - d.pos - } - e := d.entries[d.pos : d.pos+count] - d.pos += count - return e, nil -} diff --git a/storage/diskette.go b/storage/diskette.go index 3f5cb77..497531b 100644 --- a/storage/diskette.go +++ b/storage/diskette.go @@ -13,22 +13,12 @@ type Diskette interface { } // IsDiskette returns true if the files looks like a 5 1/4 diskette -func IsDiskette(filename string) bool { - data, _, err := LoadResource(filename) - if err != nil { - return false - } - +func IsDiskette(data []byte) bool { return isFileNib(data) || isFileDsk(data) || isFileWoz(data) } -// LoadDiskette returns a Diskette by detecting the format -func LoadDiskette(filename string) (Diskette, error) { - data, writeable, err := LoadResource(filename) - if err != nil { - return nil, err - } - +// MakeDiskette returns a Diskette by detecting the format +func MakeDiskette(data []byte, filename string, writeable bool) (Diskette, error) { if isFileNib(data) { var d diskette16sector d.nib = newFileNib(data)

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%0AMNr{O2|R_;?3E=KPnJzlr}% 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