fadden / ciderpress2 Goto Github PK
View Code? Open in Web Editor NEWTool for working with Apple II and vintage Mac disk images and file archives.
Home Page: https://ciderpress2.com/
License: Apache License 2.0
Tool for working with Apple II and vintage Mac disk images and file archives.
Home Page: https://ciderpress2.com/
License: Apache License 2.0
Apparently ProLine used the aux type field on subdirectories to hold extended file permissions.
Right now, ProDOS_FileEntry
ignores attempts to update the aux type for directories. I don't remember there being a reason for this other than that it's a bit weird to do it. The CLI app will try to update it, the GUI disables the edit field.
We don't normally display the DIR aux type. The CLI displays the aux type in "wide" catalog listings and in set-attr output, and it's visible in the GUI edit-attributes dialog. I'm not sure we need more than that.
When a PDF file is encountered, usually in a ZIP archive that collects a disk image and documentation together, the file viewer currently dumps the raw file as converted text. It should instead offer the conversion option "Host Image", and put a "view with external program" button in the middle of the display tab. When clicked, the default system viewer is launched, with the PDF in a temp file.
The original CiderPress automatically launched an external viewer for GIF/JPEG with no prompting. I don't think automatically launching the viewer is a good idea, because it would be jarring if you were scrolling through things with the prev/next button, but it might make sense to pop it open if the PDF file were double-clicked (i.e. the viewer is opened with a single item selected).
Update: this would also be useful for files on CD-ROM, e.g. the Opus ][ documentation directory. These have HFS file types; on the Opus ][ disc I see:
PDF
/CARO
: PDF filesW8BN
/MSWD
: Word filesRTF
/MSWD
: RTF files; could be displayed directly in the Rich Text control, but probably better to launch a viewer since they might use fancy formatting or be very largeFirst noted in 3f97bd1 .
Steps to reproduce:
When the archive is reopened, the program appears to stall, but eventually opens the file. When it does, the file list is positioned at the end of the archive, and the scroll bar is inactive. The debugger memory view shows a constant series of GCs. Clicking on any GUI element clears things up.
The main thread appears to be in a state of constant activity. Pausing the program to look at the stack trace shows it deep in WPF code (dozens of method calls down). The traces are a bit different every time, but often have something to do with dependency object property change events and DataGridRow objects.
The problem doesn't happen if the file list doesn't have a lot of elements in it. A large archive viewed with single-directory mode won't exhibit the problem (unless it has a lot of stuff in one directory). The width of the main window also matters. If the window is narrow enough to cut off part of the rightmost column ("Access"), the problem doesn't happen.
My best guess is that this has something to do with DataGrid virtualization, which is fraught with peril on a good day. Changing fileListDataGrid's VirtualizingStackPanel.VirtualizationMode value from "Recycling" to "Standard" changes the behavior somewhat. When the reproduction steps are followed, the load process will still appear to stall for a few seconds, showing the list scrolled all the way to the end. However, it will recover on its own, and move the file list position to the top. Again, partially obscuring the Access column fixes the issue.
(I tried setting the width of the Access column to "*" as a work-around, but for some reason the column width didn't change.)
The file list contents, which come out of an ObservableCollection in proper WPF fashion, are cleared when the file is closed. I even threw in an UpdateLayout() call to try to get it to return to its base state.
There's a second issue that is probably related to this one. Steps to reproduce:
When scrolling down, the leftmost column (status icon) will sometimes have a gray rectangle on the left side that pushes the line contents to the right. Not just for that column, but for the entire row, so the vertical column markers are out of whack.
The extra rect appears and disappears on a given line as the file list is scrolled, again suggesting the involvement of the GUI element recycling system. (Update: issue happens whether or not there is an icon present in the row.)
In any event, I believe this is a problem in WPF rather than the application code, but it may be possible to find a workaround that reduces the impact.
Update: today it isn't stalling, but it is spitting out about 70 of these when the archive is re-opened:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
Those messages and the extra rect go away if the recycling mode is changed to "standard". Curiously, switching between ProDOS volumes within a2gem.iso doesn't cause the messages to reappear; it's only when the archive is closed and reopened. The GUI elements are hidden, not discarded, when an archive is closed.
Update: none of the problems happen with the "release" build of 0.4.0. Maybe it's a debug-mode-only problem? That would be nice.
Update: it's stalling with the 1.0.0-alpha1 "release" builds (tried win-x86 and win-x64). Maybe I didn't have the window wide enough in the previous round of tests? I'm not seeing the secondary graphical glitches though.
It would be great if there were a way to export the files in the CFFA1 disk image using the hex input format of the Apple-1's Woz monitor:
http://retro.hansotten.nl/uploads/apple1/ULTIMATE%20APPLE1%20CFFA%203.3.po
It seems that this disk image contains binary images of the programs, with the load address specified by the Auxtyp
field in the catalog listing in the case of file types $F1
and BIN
:
Type Auxtyp Modified Length Storage *Name
---- ------ --------------- -------- -------- ----------------------------------
DIR 30-Sep-12 19:48 512 512 ASOFT
BIN $6000 [No Date] 8037 8704 ASOFT:APPLESOFT
$F8 $0801 [No Date] 7160 7680 ASOFT:LEMO
DIR 30-Sep-12 19:48 2048 2048 BASIC
$F1 $0800 [No Date] 2560 3072 BASIC:ACEYDUCEY
$F1 $0300 [No Date] 16128 7168 BASIC:AMAZING
BIN $E000 06-Oct-06 15:45 4096 4608 BASIC:BASIC
$F1 $0800 [No Date] 2560 3072 BASIC:BATNUM
$F1 $0800 [No Date] 2560 3072 BASIC:BLACKJACK
$F1 $0300 [No Date] 3840 4608 BASIC:BOWLING
$F1 $0300 [No Date] 3840 4608 BASIC:BUZZWORD
$F1 $02BC [No Date] 16196 16896 BASIC:CHECKERS
$F1 $0800 [No Date] 2560 3072 BASIC:CHEMIST
$F1 $0300 [No Date] 16128 16896 BASIC:COLUMN
$F1 $0300 [No Date] 16128 16896 BASIC:CONCENTRATION
$F1 $0300 [No Date] 3840 4608 BASIC:CRAPS
$F1 $0300 [No Date] 16128 16896 BASIC:DEAL
$F1 $0300 [No Date] 16128 16896 BASIC:ELIZA
$F1 $0200 [No Date] 32767 33280 BASIC:FACTORIALS
$F1 $0800 [No Date] 10752 11264 BASIC:FOOTBALL
$F1 $0800 [No Date] 2560 2048 BASIC:GETKEY
$F1 $0300 [No Date] 3840 4608 BASIC:GOMOKO
$F1 $0300 [No Date] 3840 4608 BASIC:HAMMURABI
$F1 $0400 [No Date] 7680 8192 BASIC:HANGMAN
$F1 $0800 [No Date] 5464 6144 BASIC:HOROSCOPE.H7000
$F1 $0400 [No Date] 7680 8192 BASIC:HURKLE
$F1 $0800 [No Date] 2560 3072 BASIC:INTEGER.MATH
$F1 $0400 [No Date] 7680 4096 BASIC:LABYRINTH
$F1 $0300 [No Date] 3840 4608 BASIC:LUNARLANDER
$F1 $0800 [No Date] 2560 3072 BASIC:MATCHES
$F1 $0800 [No Date] 2560 2048 BASIC:MATRIX
$F1 $0800 [No Date] 2560 3072 BASIC:NICOMA
$F1 $0800 [No Date] 2560 3072 BASIC:NUMBER
$F1 $0800 [No Date] 2560 3072 BASIC:PRIME.FINDER
$F1 $0300 [No Date] 7936 8704 BASIC:QUEEN
$F1 $0800 [No Date] 2560 3072 BASIC:RESISTOR
$F1 $0800 [No Date] 2560 2048 BASIC:REVERSE
$F1 $0800 [No Date] 2560 2048 BASIC:ROCKPAPERSCIS
$F1 $0300 [No Date] 3840 4608 BASIC:SLOTS
$F1 $0800 [No Date] 2560 3072 BASIC:SQUARES
$F1 $0300 13-Oct-06 13:16 3840 4608 BASIC:STARTREK
$F1 $0300 [No Date] 16128 16896 BASIC:STARTREK2003
$F1 $0800 [No Date] 2560 2560 BASIC:STOPWATCH
$F1 $0300 13-Oct-06 13:16 3840 4608 BASIC:SUDOKU
$F1 $0800 [No Date] 2560 3072 BASIC:TICTACTOE
$F1 $0800 [No Date] 2560 3072 BASIC:WORD
$F1 $0300 [No Date] 16128 16384 BASIC:WORDSEARCH
$F1 $0400 13-Oct-06 13:16 7680 8192 BASIC:WUMPUS
$F1 $0800 [No Date] 4464 4608 BASIC:ZOOP.H6000
DIR 30-Sep-12 19:48 1536 1536 FORTH
TXT $0000 12-Oct-10 22:14 1024 1536 FORTH:BLOCK0001
TXT $0000 12-Oct-10 22:14 1024 1536 FORTH:BLOCK0004
TXT $0000 21-Sep-10 21:13 1024 1536 FORTH:BLOCK0005
TXT $0000 23-Sep-10 22:45 1024 1536 FORTH:BLOCK000F
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0050
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0051
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0052
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0053
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0054
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0055
TXT $0000 25-Sep-10 16:19 1024 1536 FORTH:BLOCK0056
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00C8
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00C9
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00CA
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00CB
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00CC
TXT $0000 12-Oct-10 22:14 1024 1536 FORTH:BLOCK00CD
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00CE
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00CF
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D0
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D1
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D2
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D3
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D4
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D5
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D6
TXT $0000 12-Oct-10 22:14 1024 1536 FORTH:BLOCK00D7
TXT $0000 12-Oct-10 22:14 1024 1536 FORTH:BLOCK00D8
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00D9
TXT $0000 25-Sep-10 13:56 1024 1536 FORTH:BLOCK00DA
NON $0000 31-Oct-10 14:39 6148 3072 FORTH:DSSTORE
BIN $0240 31-Oct-10 14:05 6535 7168 FORTH:F1
TXT $0000 31-Oct-10 14:04 57461 58368 FORTH:F1.S
TXT $0000 10-Sep-05 00:19 14435 15360 FORTH:FIGDOC.TXT
TXT $0000 21-Apr-07 07:46 53170 53760 FORTH:GLOSSARY.TXT
TXT $0000 12-Sep-10 07:57 59 512 FORTH:NAME
DIR 30-Sep-12 19:48 1024 1024 LANGS
BIN $7000 [No Date] 4045 4608 LANGS:A1ASM.V1.7000
BIN $E000 [No Date] 4045 4608 LANGS:A1ASM.V1.E000
BIN $6000 [No Date] 8037 8704 LANGS:APPLESOFT
BIN $E000 06-Oct-06 15:45 4096 4608 LANGS:BASIC
BIN $0800 05-Oct-06 17:08 512 512 LANGS:DISASSEMBLER
BIN $5800 [No Date] 10190 10752 LANGS:EBASIC110L.5800
BIN $5800 [No Date] 10190 10752 LANGS:EBASIC110U.5800
BIN $5000 [No Date] 10411 11264 LANGS:EBASIC222L.7825
BIN $5000 [No Date] 10411 11264 LANGS:EBASIC222U.7825
BIN $5000 [No Date] 10706 11264 LANGS:EBASIC222CFFAL
BIN $5000 [No Date] 10706 11264 LANGS:EBASIC222CFFAU
BIN $0300 06-Oct-06 16:39 6294 7168 LANGS:FIGFORTH110
BIN $0280 [No Date] 9772 10240 LANGS:JMON1.0
BIN $7100 [No Date] 3839 4608 LANGS:KRUSADER1.2
BIN $7100 [No Date] 3512 4096 LANGS:KRUSADER1.3
BIN $6000 [No Date] 8162 8704 LANGS:MSBASIC.7D0D
BIN $0300 [No Date] 14255 14848 LANGS:VOLKSFORTH38
BIN $02E2 [No Date] 2079 3072 LANGS:SA2K.06B8
BIN $7600 [No Date] 2489 3072 LANGS:TBASIC10L
BIN $7600 [No Date] 2489 3072 LANGS:TBASIC10U
BIN $1000 [No Date] 13449 14336 LANGS:ULTRAFORTH83
BIN $1000 [No Date] 13472 14336 LANGS:VOLKSFORTH
DIR 30-Sep-12 19:48 1024 1024 MCODE
BIN $0280 [No Date] 11656 12288 MCODE:ADVENTURE
BIN $0280 [No Date] 3456 4096 MCODE:APPLE30TH
BIN $0300 [No Date] 557 1536 MCODE:CELLULAR
BIN $E000 [No Date] 4021 4608 MCODE:CODEBREAKER.PT1
BIN $0280 [No Date] 2179 3072 MCODE:CODEBREAKER.PT2
BIN $0280 [No Date] 6199 7168 MCODE:CODEBREAKER.REP
BIN $0280 [No Date] 23 512 MCODE:HELLOWORLD
BIN $0300 13-Oct-06 13:16 431 512 MCODE:HUNDRED.0474
BIN $2000 06-Oct-06 16:42 440 512 MCODE:LIFE
BIN $0300 [No Date] 4541 5120 MCODE:LITTLETOWER
BIN $0300 02-Oct-06 17:07 5817 2560 MCODE:LUNARLANDER
BIN $0300 06-Oct-06 17:02 177 512 MCODE:MASTERMIND
BIN $0300 [No Date] 2248 3072 MCODE:MICROCHESS1
BIN $1000 [No Date] 2304 3072 MCODE:MICROCHESS2
BIN $0300 [No Date] 500 512 MCODE:NIM.04AF
BIN $0300 [No Date] 550 1536 MCODE:PASART
BIN $0280 [No Date] 4794 5632 MCODE:TYPINGTUTOR
BIN $0280 [No Date] 17072 17920 MCODE:YUM
BIN $1D00 [No Date] 3636 4608 MCODE:WOZFP.2394
DIR 30-Sep-12 19:48 512 512 UTILS
BIN $0280 [No Date] 290 512 UTILS:MEMORYTEST
BIN $07FD [No Date] 2051 3072 UTILS:MONITOR
BIN $0300 [No Date] 16 512 UTILS:TEST
As reported here: https://68kmla.org/bb/index.php?threads/have-you-seen-ciderpress-2-mac-and-more-disk-image-can-opener.46146/
CiderPress2's type checking is a bit restrictive when trying to create a new disk image with certain file extensions.
-.DSK: This one seems to make sense as it is indeed ambiguous, but some emulators (software and hardware) use this extension for disk images.
-.IMG: This appears to be a logic error looking at the code. Sector ordering should not be enforced for images that are not 140k 5.25" disk. As before, .IMG is a popular extension with many emulators. If an image is larger then 140k, assume it is sector ordered and don't check for ProDOS vs. DOS 3.3 ordering.
CiderPress 1 allows me to open up a disk image that is in use (for example in AppleWin) in a READ-ONLY mode. CiderPress2 fails to open the image at all with an error that the file is in use.
When displaying converted images, the file viewer uses a WPF Image
control with NearestNeighbor
scaling. If the control size is set to the exact size of the image, various artifacts appear. MacPaint images with fine detail look especially bad.
If the size of the output image is increased by one pixel in each dimension, most of the artifacts disappear, though you can now see an extra row and column on some images:
The latter is generally easier on the eyes, so the size change was submitted in 99c2291.
Additional notes:
The distortion only affects the on-screen appearance. Images exported as PNG or copied & pasted to other applications are fine:
(Primary test file is a Print Shop clip art file called BARNS, found in test-files.sdk
here.)
I'm using: CiderPress II v1.0.0
If I right-click the .DSK and make it read-only then I get this error:
---------------------------
File error
---------------------------
Error: Access to the path 'C:\Users\tomch\Downloads\mb-audit.dsk' is denied.
---------------------------
OK
---------------------------
Unchecking the read-only file property allows me to open the file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.