CONTENTS for Disk Manager Help

Apple II Disk (image) Manager is a file manager supporting several file systems: MS-DOS, Apple DOS 3.3, and ProDOS. It is developed to help you easy to organize your Apple II disk images and convert files between different file systems.

User Interface

Hot Keys

Toolbar

Associate Command

Command Line Options

What's new in this version

File Menu Commands

Edit Menu Commands

View Menu Commands

Options Menu Commands

File Converters

Developing Converter Library

Internet URL

Apple II Disk Manager recognizes .DSK/.DO, .HDV, and .A4W disk image files. They are displayed with special icons and can be opened like subdirectories if the internal format is ProDOS or Apple DOS 3.3.

Apple II Oasis for Windows

Copyright © BG Universal Software, Inc. 1996-1998


Filter File Name Dialog Box
Display File By Type

In this dialog box you can enter the filename template used to display the directory contents. Wildcards (*) and (?) are allowed. The specified filter will be used for the current directory and for its subdirectories. You can enter more than one point because this template is used not only for MS-DOS files and the point is a legal character for ProDOS and DOS 3.3 filenames. The Show Hidden Files checkbox can be used only for MS-DOS directories.

It is also possible to enter 2 or more file templates separated with ";".

Example: ?D*.OBJ;AD*.RES;*.TXT

Apple DOS 3.3

All characters after the last point are being ignored.

Examples: (*.*) = (*); (A???.OBJ.M10) = (A???.OBJ)

ProDOS

The file extension (after the last point) is used as ProDOS type filter.

(*.*) displays all files. (N*.ADB) displays only ADB files strarting with N.


User Interface
INTERFACE

The user interface of Apple II Disk Manager is similar to Windows File Manager and Win95 Explorer but there are some differences:

1. There isn't a separate directory tree - the files and directories are listed together

2. There is a Path combobox containing the pathname of each open drive, directory, disk image. The visible pathname is used as target prefix for the copy and move commands

3. The rectangle in the lower-right corner displays additional information about the file whose name has the focus border. This information is specific for the different file types

4. Some menus/options are disabled if they are not supported for the current OS

5. Every open directory has its own filename template, sort order, and lowercase option and they are inherited from its parent directory

6. If you have started Apple II Emulator or/and Apple II Disk Server then their names will be displayed after the Local Disk Drives and Network Drives groups. Their disk images (currently used) can be listed as subdirectories

7. There is a limited Drag-Drop feature. Apple II Disk Manager can accept dragged files from Windows File Manager but not from itself

8. If you need to change a file name you have to use the Properties menu command

9. There are 5 buttons (see Toolbar) for quick jumps to most used directories

User Commands

When you highlight a file, click the right mouse button, and choose Open With menu. It contains a list of your user commands. To define a new user command, highlight the corresponding EXE, COM, PIF, or BAT file, click the right mouse button, and select Define... menu.

Mixed OS Pathnames

The DOS 3.3 and ProDOS volumes are stored in disk image files. Apple II Disk Manager works with full pathnames for all files. Following are some examples of the internal Mixed OS Pathname Syntax:

DOS 3.3

C:\WINDOWS\APPLE2\DOS_DSK\WORK.DSK::254,HELLO

D:\D_IMAGES\GAMES\LETTER_S.A4W::254,Snake Byte

The number after :: is the DOS 3.3 Disk Volume#.

ProDOS

C:\WINDOWS\APPLE2\PRODOS\MASTER.A4W::/ROOT/BASIC/MY.PROG.1

D:\D_IMAGES\PRODOS\DI_204.DSK::/MERLIN/MERLIN.SYSTEM

The first name after :: (Root, Merlin) is the ProDOS volume name.

See Also

Toolbar

Hot Keys


File Menu Commands

New | Directory

Creates a directory.

New | Disk Image

Open

Starts an application, opens a document that is associated with an application, or expands a drive/directory/disk image.

Send To Emulator

Sends the selected file(s) to Apple II Emulator as command line parameters. This action is identical to drag-drop feature supported by Windows File Manager. Read about Drag-Drop Support of Apple II Emulator. If the selected file is on DOS 3.3 or ProDOS volume (disk image) it will be processed according to the association of its type.

Properties

Displays and changes the file Name; ProDOS Type or MS-DOS extension; Subtype (ProDOS and DOS 3.3 only); the date and time of file creation (ProDOS) or last modification (ProDOS and MS-DOS). The file attributes are separated in 3 groups: MS-DOS, DOS 3.3, and ProDOS.

The file Subtype is a 16-bit hexadecimal value, specific for each file type. For DOS 3.3 binary files (B) this is the starting memory address. Most filetypes do not support subtype.

Run

Starts an application or opens a document that is associated with an application.

Print

Prints a file on the default printer.

Search

Searches for files in the current directory and (optionally) in all subdirectories and/or disk images. The file mask may include multiple wildcards (e.g.: *.doc;*.h;com*.dll).

Associate


Edit Menu Commands

Cut

Creates a list of MOVE commands into the Clipboard. Stores the full pathnames of each selected file. MOVE commands will be executed when you choose Paste menu.

Copy

Similar to Cut. Instead of MOVE generates COPY commands.

Copy Filename

Copies the full filename ("d:\dir1\dir2\file.ext" or "/VOL/DIR/PRODOS.FILE") into the Clipboard.

Paste

Executes all COPY or MOVE commands which are stored in the Clipboard. The destination directory is the currently selected Path.

Delete

Deletes all selected files/directories.

Select All

Marks all items in the current directory.

If you want to copy or move (move=copy+delete source) file(s) from one place to another you have to select the file(s), select Cut or Copy command, open the destination directory. Then you choose Edit | Paste menu and confirm the COPY or MOVE action(s). The source and destination directories can be in different file systems (MS-DOS, ProDOS, DOS 3.3).

See Also

Interface


View Menu Commands

Name

Displays only the names of files and directories.

All File Details

Displays all available information about files and directories. This information includes the name, size, last modification date and time, creation date and time, and file attributes for each file.

Partial Details

Displays specific file and directory information.

Refresh

Reads again the file/directory list for the current Path.

Sort by Name

Sorts items alphabetically by name.

Sort by Type

Sorts items alphabetically by type. For MS-DOS subtrees sorts the files by extension.

Sort by Size

Sorts files by size, from largest to smallest.

Sort by Date (Created / Modified)

Sorts items by date, with the most recently created/modified items listed first.

By File Type


Options Menu Commands

Converters

Font

Changes the font used for the file/directory tree.

System Font

Changes the font used outside the file/directory tree.

Lowercase

(1) For ProDOS directories this option enables the lowercase in ProDOS filenames (this is a special feature which is supported by some newer ProDOS programs). The lowercase point (".") is displayed as space. (2) For MS-DOS directories the Lowercase option forces Disk Manager to display a lowercase equivalent of the filename. It uses a smart algorithm but not all filenames are translated correctly. (3) For Apple DOS 3.3 directories (disk images) the Lowercase option is ignored.

Toolbar, Directory Info, and Sort Buttons menus can be used to show/hide the corresponding elements on the Disk Manager's window.

Minimize on Use

When this option is checked the Disk Manager's window will be minimized whenever you start an application.

Save Settings on Exit

Saves the state (window position, open directory list, etc.) whenever you quit Disk Manager. A check mark beside the command means it is in effect. You could choose a permanent initial state, save it (check this option and quit Disk Manager), then start Disk Manager and remove the check mark.


Preliminary Release

WARNING: PRELIMINARY RELEASE

This program is not fully completed and tested yet and you could find out many bugs (for example: incorrect data conversion when copying files from x-DOS to y-DOS). You should be very careful when working with files on disk images - the data integrity may be corrupted. Make a backup copy of the disk image before using COPY, MOVE, DELETE commands.

Some features of Apple II Disk Manager are not completed in this release.

If you have any suggestions or bug reports, write to:

Teodor Angeloff

5100 Gorna Orjahoviza

P.O.Box 176

BULGARIA

e-mail: APL24WIN@usa.net

CONTENTS for Disk Manager Help


Hot Keys

Apple II Disk Manager provides hot keys for its file/directory tree. The following table shows the key combinations you can use to move the caret on the tree.

Shortcut	Function

Home	Jump at the first subitem in current directory

End	Jump at the last subitem in current directory

LEFT/RIGHT Arrow	Go to prev/next item in current directory

Control-LEFT	Jump at the parent item

Control-RIGHT	Jump at the first found child subitem

[A-Z][0-9]	Find next filename starting with [A-Z][0-9] character

Control-[A-Z][0-9]	Find next file extension

The above shortcuts are defined in addition to the standard listbox hot keys.


File "ADM_CONV.C"

/*

   Sample Converter Library for Apple II Oasis :: Disk (image) Manager

   -------------------------------------------------------------------

                   Copyright (c) BG Universal Software, Inc. 1997-1998

                                           [ Teodor Angeloff         ]

                                           [ 5100 Gorna Orjahoviza   ]

                                           [ P.O.Box 176             ]

                                           [ Bulgaria                ]

                                           [ APL24WIN@usa.net        ]

                                           [ APL24WIN@GeoCities.com  ]

*/

#ifdef __cplusplus

#error Disable _C++_ compiler option!

#endif

#define    STRICT

#define    WIN31

#include   <windows.h>

#include   <stdio.h>

#include   <share.h>

#include   <mem.h>

#include   "adm_conv.h"

#include   "conv_lib.h"

HINSTANCE  hInst;

char       szSecADM_Conv[] = "ADM_Conv.DLL";  // Section in ADMANAGR.INI

char       szEntDiskName[] = "DiskName";

char       szEntAlways[]   = "Always";

char       szSecApple[]    = "Apple II";  // See .A4W file format

char       szSecOptions[]  = "Options";

char       szEntType[]     = "Type";

char       szEntFormat[]   = "Format";

char       szTypeDisk2[]   = "Disk II";

char       szTypeHDisk[]   = "Fixed Disk";

LPSTR String( UINT uID )

{

  static char sz[256];

  LoadString( hInst, uID, sz, sizeof sz );

  return sz;

}

BOOL IsXXX( LPSTR filename, char ** szXXX )

{

  int i, j;

  for ( j = 0; filename[j] && filename[j] != '.'; ++ j );

  for ( i = 0; *szXXX[i] != '*'; i++ )

    if ( !lstrcmpi( filename + j, szXXX[i] ) )

      return TRUE;

  return FALSE;

}

BOOL IsTXT( LPSTR filename )

{

  static char * szTXT[] = { ".TXT", ".ASC", "*" };

  return IsXXX( filename, szTXT );

}

BOOL IsA4W( LPSTR filename )

{

  static char * szA4W[] = { ".A4W", "*" };

  return IsXXX( filename, szA4W );

}

BOOL IsDSK( LPSTR filename )

{

  static char * szDSK[] = { ".DSK", ".DO", "*" };

  return IsXXX( filename, szDSK );

}

BOOL IsPO( LPSTR filename )

{

  static char * szPO[] = { ".PO", "*" };

  return IsXXX( filename, szPO );

}

BOOL IsHDV( LPSTR filename )

{

  static char * szHDV[] = { ".HDV", "*" };

  return IsXXX( filename, szHDV );

}

// Similar function to GetPrivateProfileString

// Differences:

//   (1) all features are not supported;

//   (2) does not work automatically in WINDOWS directory;

//   (3) uses file sharing flags (_fsopen);

int _GetPrivateProfileString( LPSTR szSection, LPSTR szEntry, LPSTR szDefault, LPSTR szRetBuf, UINT cbRetBuf, LPSTR szFile )

{

  FILE FAR * fp;

  BOOL       fSectionIn;

  int        c, i, n;

  char       sz[144];

  cbRetBuf --;

  AnsiToOem( szFile, sz );

  fp         = _fsopen( sz, "rt", SH_DENYNO );

  n          = -2;

  fSectionIn = FALSE;

  if ( fp )

  do

  {

    LPSTR p1, p2;

    for ( i = 0; i < sizeof sz - 1 && ( c = getc( fp ) ) != EOF && c != 10; sz[i++] = (char)c );

    sz[i] = 0;

    p1 = sz;

    while ( *p1 == 32 || *p1 == 9 ) ++ p1;

    p2 = p1;

    if ( *p1 == '[' )

    {

      while ( *p2 && *p2 != ']' ) ++ p2;

      *p2 = 0;

      fSectionIn = !lstrcmpi( p1 + 1, szSection );

    }

    else

      if ( fSectionIn )

      {

        while ( *p2 && *p2 != '=' ) ++ p2;

        *p2 = 0;

        if ( !lstrcmpi( p1, szEntry ) )

        {

          for ( i = 0; i < cbRetBuf && ( szRetBuf[i] = *++p2 ) != 0; ++ i );

          szRetBuf[n = i] = 0;

        }

      }

  }

  while ( n == -2 && c != EOF );

  if ( n == -2 )

  {

    LPSTR p = szDefault;

    for ( i = 0; i < cbRetBuf && ( szRetBuf[i] = *p++ ) != 0; ++ i );

    szRetBuf[n = i] = 0;

  }

  fclose( fp );

  return n;

}

void SetCtlFont( HWND hwnd, HFONT hf )

{

  HWND h;

  for ( h = GetWindow( hwnd, GW_CHILD ); h; h = GetNextWindow( h, GW_HWNDNEXT ) )

  {

    int id = GetWindowWord( h, GWW_ID );

    SendMessage( h, WM_SETFONT, (WPARAM)hf, 0 );

  }

}

WINAPI LibMain( HINSTANCE hInstance, WORD wDataSeg, WORD cbHeapSize, LPSTR lpCmdLine )

{

  hInst = hInstance;

  if ( cbHeapSize != 0 ) UnlockData( 0 );

  return 1;

}

// About Dialog

BOOL CALLBACK _export InfoDlg( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam )

{

  switch ( msg )

  {

    case WM_INITDIALOG:

    SetCtlFont( hwndDlg, (HFONT)SendDlgItemMessage( GetParent( hwndDlg ), IDCANCEL, WM_GETFONT, 0, 0 ) ); // change font of all dialog controls

    break;

    case WM_COMMAND:

    if ( wParam == IDOK || wParam == IDCANCEL )

      EndDialog( hwndDlg, 0 );

    break;

    default: return FALSE;

  }

  return TRUE;

}

// Setup Dialog Box for Disk Image converter

BOOL CALLBACK _export SetupDlg( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam )

{

  char sz[64];

  switch ( msg )

  {

    case WM_INITDIALOG:

    // All optional settings are stored in ADMANAGR.INI file / ADM_Conv.DLL section

    GetPrivateProfileString( szSecADM_Conv, szEntDiskName, "", sz, sizeof sz, String( IDS_PROFILE ) );

    SetDlgItemText( hwndDlg, IDD_DISKNAME, sz );

    CheckDlgButton( hwndDlg, IDD_CBALWAYS, GetPrivateProfileInt( szSecADM_Conv, szEntAlways, 0, String( IDS_PROFILE ) ) );

    SetCtlFont( hwndDlg, (HFONT)SendDlgItemMessage( GetParent( hwndDlg ), IDCANCEL, WM_GETFONT, 0, 0 ) );

    break;

    case WM_COMMAND:

    switch ( wParam )

    {

      case IDOK:

      {

        int a = IsDlgButtonChecked( hwndDlg, IDD_CBALWAYS );

        GetDlgItemText( hwndDlg, IDD_DISKNAME, sz, sizeof sz );

        WritePrivateProfileString( szSecADM_Conv, szEntDiskName, sz, String( IDS_PROFILE ) );

        WritePrivateProfileString( szSecADM_Conv, szEntAlways, a ? "1" : "0", String( IDS_PROFILE ) );

        EndDialog( hwndDlg, a );

      }

      break;

      case IDCANCEL:

      EndDialog( hwndDlg, -1 );

      break;

      case IDD_PBHELP:

      {

        char sz[256];

        int  i;

        GetModuleFileName( hInst, sz, sizeof sz ); // get ADM_CONV.DLL's directory

        for ( i = lstrlen( sz ); i; i-- )             // ADMANAGR.HLP/EXE & ADM_CONV.DLL

          if ( sz[i] == '\\' )                        // must be in the same directory

          {

            sz[i + 1] = 0;

            break;

          }

        lstrcat( sz, String( IDS_HELPFILE ) );

        WinHelp( hwndDlg, sz, HELP_CONTEXT, HCS_DICONV_SETUP );

      }

      break;

    }

    break;

    default: return FALSE;

  }

  return TRUE;

}

// Info Button calls About Dialog Box

void CALLBACK _export InfoButton( HWND hwndParent, WORD iConv, LP_DATA pvData )

{

  DialogBox( hInst, MAKEINTRESOURCE( ID_INFO_DIALOG ), hwndParent, InfoDlg );

}

void CALLBACK _export SetupButton( HWND hwndParent, WORD iConv, LP_DATA pvData )

{

  if ( iConv == CV_DI || iConv == CV_DI2 )

  {

    int r = DialogBox( hInst, MAKEINTRESOURCE( ID_SETUP_DIALOG ), hwndParent, SetupDlg );

    if ( r != -1 ) pvData->fAlways = r;

  }

}

WORD CALLBACK _export Init( LPWORD pwVer, LPWORD pwBufSize )

{

  *pwVer     = 1; // API Version

  *pwBufSize = sizeof (CL_DATA) + min( *pwBufSize, 16000 ) * 2;

  return NCONV;

}

void CALLBACK _export Info( WORD iConv, LPCL_INFO pCL_Info, LP_DATA pvData )

{

  pCL_Info->wFlags = 0;

  switch ( iConv )

  {

    case CV_DI:

    case CV_DI2:

    pCL_Info->wFlags = CLF_SETUP;

    case CV_DI3:

    pCL_Info->wFlags |= CLF_CONFIRM;

    case CV_TF:

    pCL_Info->wFlags |= CLF_ENABLE;

    pCL_Info->wFlags ^= CLF_CONFIRM;

    case CV_FC:

    pCL_Info->wFlags |= CLF_INFO;

    lstrcpyn( pCL_Info->szName, String( IDS_CONVNAME + iConv ), sizeof pCL_Info->szName );

    lstrcpyn( pCL_Info->szDescr, String( IDS_CONVDESCR + iConv ), sizeof pCL_Info->szDescr );

    break;

    default:

    lstrcpyn( pCL_Info->szName, String( IDS_LIBNAME ), sizeof pCL_Info->szName );

    lstrcpyn( pCL_Info->szDescr, String( IDS_LIBDESCR ), sizeof pCL_Info->szDescr );

  }

}

void CALLBACK _export Open( WORD wBufSize, LP_DATA pvData )

{

  // Initializing "pvData" block

  pvData->b_size  = wBufSize - sizeof (CL_DATA);

  pvData->fAlways = GetPrivateProfileInt( szSecADM_Conv, szEntAlways, 0, String( IDS_PROFILE ) );

}

void CALLBACK _export Close( LP_DATA pvData )

{

  // Destroying all objects in "pvData" block

}

BOOL CALLBACK _export QueryName( WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

{

  if (

       fi->dest.os == IOS_DOS33

       && (

            ( fi->src.os == IOS_MSDOS && IsTXT( fi->src.name ) )

            ||

            ( fi->src.os == IOS_PRODOS && fi->src.type == IT_PRODOS_TXT )

          )

     )

     fi->dest.type = IT_DOS33_T;

  return FALSE; // TRUE will discard all QueryName calls for all following converters

}

BOOL CALLBACK _export QueryConv( HWND hwndParent, WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

{

  // don't change fi->dest.* fields! changes to fi->dest.type, fi->dest.subtype, fi->dest.name only in QueryName()

  pvData->nConv = -1;

  pvData->f     = 0;

  switch ( iConv )

  {

    case CV_DI: // checking whether this file can be DSK/DO->A4W or A4W->DSK/DO converted

    if (

         fi->src.os == IOS_MSDOS && fi->dest.os == IOS_MSDOS && fi->src.size == DSK_SIZE

         && IsDSK( fi->src.name ) && IsA4W( fi->dest.name )

       ) pvData->nConv = DCV_DI_DSK_A4W;

    if (

         fi->src.os == IOS_MSDOS && fi->dest.os == IOS_MSDOS

         && IsA4W( fi->src.name ) && IsDSK( fi->dest.name )

       )

       {

         char szFile[256], szType[32];

         lstrcpy( szFile, fi->src.prefix );

         lstrcat( szFile, fi->src.name );

         _GetPrivateProfileString( szSecApple, szEntType, "", szType, sizeof szType, szFile );

         if ( !lstrcmpi( szType, szTypeDisk2 ) )

         {

           static char szDefFormat[] = "DOS3.3";

           char        szFormat[10];

           _GetPrivateProfileString( szSecOptions, szEntFormat, szDefFormat, szFormat, sizeof szFormat, szFile );

           if ( !lstrcmpi( szFormat, szDefFormat ) )

           {

             pvData->len   = 0;

             pvData->nConv = DCV_DI_A4W_DSK;

             _fmemset( pvData->b, 0, pvData->b_size );

           }

         }

       }

    break;

    case CV_DI2: // checking whether this file can be HDV<->A4W converted

    if (

         fi->src.os == IOS_MSDOS && fi->dest.os == IOS_MSDOS && !( fi->src.size & 511 )

         && IsHDV( fi->src.name ) && IsA4W( fi->dest.name )

       ) pvData->nConv = DCV_DI_HDV_A4W;

    if (

         fi->src.os == IOS_MSDOS && fi->dest.os == IOS_MSDOS

         && IsA4W( fi->src.name ) && IsHDV( fi->dest.name )

       )

       {

         char szFile[256], szType[32];

         lstrcpy( szFile, fi->src.prefix );

         lstrcat( szFile, fi->src.name );

         _GetPrivateProfileString( szSecApple, szEntType, "", szType, sizeof szType, szFile );

         if ( !lstrcmpi( szType, szTypeHDisk ) )

         {

           pvData->len   = 0;

           pvData->nConv = DCV_DI_A4W_HDV;

           _fmemset( pvData->b, 0, pvData->b_size );

         }

       }

    break;

    case CV_DI3: // checking whether this file can be PO<->DSK/DO converted

    if ( fi->src.os == IOS_MSDOS && fi->dest.os == IOS_MSDOS && fi->src.size == DSK_SIZE )

    {

      if ( IsPO( fi->src.name ) && IsDSK( fi->dest.name ) )

        pvData->nConv = DCV_DI_PO_DSK;

      if ( IsDSK( fi->src.name ) && IsPO( fi->dest.name ) )

        pvData->nConv = DCV_DI_DSK_PO;

    }

    break;

    case CV_TF: // text file transfer MS-DOS <-> ProDOS/DOS3.3

    if (

         fi->src.os == IOS_MSDOS

         &&

         (

           fi->dest.os == IOS_PRODOS || fi->dest.os == IOS_DOS33

         )

         &&

         (

           fi->dest.type == IT_PRODOS_TXT || IsTXT( fi->src.name )

         )

       ) pvData->nConv = DCV_TF_M_P3;

    if (

         fi->dest.os == IOS_MSDOS

         &&

         (

           fi->src.os == IOS_PRODOS || fi->src.os == IOS_DOS33

         )

         &&

         (

           fi->src.type == IT_PRODOS_TXT || fi->src.type == IT_DOS33_T || IsTXT( fi->dest.name )

         )

       ) pvData->nConv = DCV_TF_P3_M;

    break;

    case CV_FC:

    pvData->nConv = DCV_FC;

    break;

  }

  return ( pvData->nConv != (BYTE)-1 );

}

BOOL CALLBACK _export OpenConv( HWND hwndParent, WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

{

  if ( ( pvData->nConv == DCV_DI_DSK_A4W || pvData->nConv == DCV_DI_HDV_A4W ) && pvData->fAlways )

  {

    SetupButton( hwndParent, iConv, pvData );

  }

  return TRUE;

}

WORD CALLBACK _export RBlockSize( WORD nDefault, LP_DATA pvData )

{

  // PO<->DSK converters read 1 track (16*256 bytes) each time

  if ( pvData->nConv == DCV_DI_PO_DSK || pvData->nConv == DCV_DI_DSK_PO ) return 4096;

  if ( pvData->nConv == DCV_FC ) return 16384;

  return nDefault;

}

WORD CALLBACK _export Convert( LPBYTE pbSrc, WORD size, LPBYTE FAR * ppbDest, LP_DATA pvData )

{

  WORD NewSize = 0;

  switch ( pvData->nConv )

  {

    case DCV_FC: // Fast copy - no conversion

    *ppbDest = pbSrc;

    NewSize  = size;

    break;

    case DCV_TF_M_P3: // MS-DOS text file to ProDOS/DOS3.3

    {

      LPBYTE pb;

      for ( pb = *ppbDest = pbSrc; size--; pbSrc++ )

      {

        if ( *pbSrc == 10 && pvData->f )

        {

          pvData->f = FALSE;

          continue; // skip LF after CR

        }

        pvData->f = ( *pbSrc == 13 );

        *pb++     = ( *pbSrc == 10 ) ? 0x8D : *pbSrc | 128;

        NewSize++;

      }

    }

    break;

    case DCV_TF_P3_M: // ProDOS/DOS3.3 text file to MS-DOS

    {

      LPBYTE pb;

      for ( pb = *ppbDest = pvData->b; size--; pbSrc++ )

      {

        if ( !*pbSrc ) continue;

        *pb++ = *pbSrc & 127;

        NewSize++;

        if ( ( *pbSrc & 127 ) == 13 )

        {

          *pb++ = 10; // expand CR to CRLF

          NewSize++;

        }

      }

    }

    break;

    case DCV_DI_A4W_DSK:

    if ( size )

    {

      while ( pvData->f < 2 && size -- ) // Looking for sequence of 2 x 26(1Ah) bytes which is the end of A4W file header

      {

        if ( *pbSrc++ == 26 )

          pvData->f++;

        else

          pvData->f = 0;

      }

      if ( pvData->f == 2 ) // the file header has been skipped and now the A4W data "section" is being transferred

      {

        *ppbDest     = pbSrc;

        pvData->len += ( NewSize = size );

      }

    }

    else // size=0 -> flush request. A4W disk image length can be less than 143,360 bytes. DSK must be exactly 143,360

      if ( pvData->len < DSK_SIZE )

      {

        *ppbDest     = pvData->b;

        NewSize      = DSK_SIZE >= pvData->len + pvData->b_size ? pvData->b_size : (WORD)( DSK_SIZE - pvData->len );

        pvData->len += NewSize;

      }

    break;

    case DCV_DI_DSK_A4W:

    if ( pvData->f )

    {

      *ppbDest = pbSrc;

      NewSize  = size;

    }

    else

    {

      char szDiskName[70];

      int  l;

      lstrcpy( szDiskName, "\r\nName=" );

      lstrlen( szDiskName );

      if ( !GetPrivateProfileString( szSecADM_Conv, szEntDiskName, "", szDiskName + lstrlen( szDiskName ), sizeof szDiskName - lstrlen( szDiskName ), String( IDS_PROFILE ) ) )

        *szDiskName = 0;

      wsprintf( (LPSTR)pvData->b, "[%s]\r\n%s=%s%s\r\n\032\032", (LPSTR)szSecApple, (LPSTR)szEntType, (LPSTR)szTypeDisk2, (LPSTR)szDiskName );

      l = lstrlen( (LPSTR)pvData->b );

      _fmemcpy( pvData->b + l, pbSrc, size );

      NewSize   = size + l;

      *ppbDest  = pvData->b;

      pvData->f = 1;

    }

    break;

    case DCV_DI_A4W_HDV:

    if ( size )

    {

      while ( pvData->f < 2 && size -- ) // see "case DCV_DI_A4W_DSK" above

      {

        if ( *pbSrc++ == 26 )

          pvData->f++;

        else

          pvData->f = 0;

      }

      if ( pvData->f == 2 )

      {

        *ppbDest     = pbSrc;

        pvData->len += ( NewSize = size );

      }

    }

    break;

    case DCV_DI_HDV_A4W:

    if ( pvData->f )

    {

      *ppbDest = pbSrc;

      NewSize  = size;

    }

    else

    {

      char szDiskName[70];

      int  l;

      lstrcpy( szDiskName, "\r\nName=" );

      lstrlen( szDiskName );

      if ( !GetPrivateProfileString( szSecADM_Conv, szEntDiskName, "", szDiskName + lstrlen( szDiskName ), sizeof szDiskName - lstrlen( szDiskName ), String( IDS_PROFILE ) ) )

        *szDiskName = 0;

      wsprintf( (LPSTR)pvData->b, "[%s]\r\n%s=%s%s\r\n\r\n[Options]\r\nSize=32768\r\n\032\032", (LPSTR)szSecApple, (LPSTR)szEntType, (LPSTR)szTypeHDisk, (LPSTR)szDiskName );

      l = lstrlen( (LPSTR)pvData->b );

      _fmemcpy( pvData->b + l, pbSrc, size );

      NewSize   = size + l;

      *ppbDest  = pvData->b;

      pvData->f = 1;

    }

    break;

    case DCV_DI_PO_DSK:

    case DCV_DI_DSK_PO:

    *ppbDest = pbSrc;

    if ( size == 4096 )

    {

      BYTE tmp[256];

      int  i, po[8] = { 0, 14, 13, 12, 11, 10, 9, 8 };

      for ( i = 1; i < 8; i++ )

      {

        _fmemcpy( tmp, pbSrc + i * 256, sizeof tmp );

        _fmemcpy( pbSrc + i * 256, pbSrc + po[i] * 256, sizeof tmp );

        _fmemcpy( pbSrc + po[i] * 256, tmp, sizeof tmp );

      }

      NewSize = size;

    }

    break;

  }

  return NewSize;

}

void CALLBACK _export CloseConv( LP_DATA pvData )

{

}


File "ADM_CONV.H"

#define   CV_DI              0   // DiskImage converter's ID

#define   CV_DI2             1   // HardDiskImage

#define   CV_DI3             2   // PO<->DSK/DO

#define   CV_TF              3   // TextFile

#define   CV_FC              4

#define   NCONV              5   // number of converters in this library

#define   DCV_TF_M_P3        0   // TextFile conv's subID (MS-DOS -> ProDOS/DOS3.3)

#define   DCV_TF_P3_M        1

#define   DCV_DI_A4W_DSK     2

#define   DCV_DI_DSK_A4W     3

#define   DCV_DI_A4W_HDV     4

#define   DCV_DI_HDV_A4W     5

#define   DCV_DI_PO_DSK      6

#define   DCV_DI_DSK_PO      7

#define   DCV_FC             8

#define   DSK_SIZE           143360L // size of DSK disk image

#define   HCS_DICONV_SETUP   8000

// Resource IDs

#define   IDS_PROFILE        256

#define   IDS_LIBNAME        512

#define   IDS_LIBDESCR       513

#define   IDS_CONVNAME       1024

#define   IDS_CONVDESCR      (IDS_CONVNAME+NCONV)

#define   ID_INFO_DIALOG     2048

#define   ID_SETUP_DIALOG    2049

#define   IDS_HELPFILE       4206

#define   IDD_PBHELP         500

#define   IDD_DISKNAME       501

#define   IDD_CBALWAYS       502

typedef struct tagCL_DATA

{

  long  len;         // number of bytes which are already copied (used in DCV_DI_A4W_DSK/HDV conversion)

  int   f;           // flag - used differently by each converter

  WORD  b_size;      // actual size of b[1] array

  BOOL  fAlways;     // current state of the Setup Disk Image Converter's checkbox

  BYTE  nConv;       // subID for the last QueryConv-OpenConv-Convert-CloseConv session

  BYTE  b[1];        // buffer

} CL_DATA;

typedef   CL_DATA FAR *      LPCL_DATA;

#define   LP_DATA            LPCL_DATA


File "ADM_CONV.RC"

/* The following macros are defined in "common.h" file which is not included here

#define VERN                2

#define SUBVERN             0

#define VERCOUNT            570

#define IDS_HELPFILE        4206

#define VI_PRODUCTNAME      "Apple II Oasis for Windows\0"

#define VI_COMPANYNAME      "BG Universal Software, Inc.\0"

#define VI_PRODUCTVER       "2.1\0"

*/

#include "..\..\common\common.h"

#include "adm_conv.h"

STRINGTABLE

BEGIN

  IDS_PROFILE,            "ADMANAGR.INI"

  IDS_HELPFILE,           "ADMANAGR.HLP"

  IDS_LIBNAME,            "ADM_Conv.DLL (v2.1)"

  IDS_LIBDESCR,           "Apple II Oasis :: Converter Library\nCopyright \251 BG Universal Software, Inc."

  IDS_CONVNAME  + CV_DI,  "Disk Image (A4W <-> DSK/DO)"

  IDS_CONVNAME  + CV_DI2, "Hard Disk Image (A4W <-> HDV)"

  IDS_CONVNAME  + CV_DI3, "Disk Image (ProDOS Order)"

  IDS_CONVNAME  + CV_TF,  "Text File"

  IDS_CONVNAME  + CV_FC,  "Fast Copy (No Conversion)"

  IDS_CONVDESCR + CV_DI,  "DiskImage.DSK/DO <-- from/to --> DiskImage.A4W (M)"

  IDS_CONVDESCR + CV_DI2, "DiskImage.HDV <-- from/to --> DiskImage.A4W (M)"

  IDS_CONVDESCR + CV_DI3, "DiskImage.PO <-- from/to --> DiskImage.DSK/DO (M)"

  IDS_CONVDESCR + CV_TF,  "Correct bit 7 and CR/LF sequence (MP3)"

  IDS_CONVDESCR + CV_FC,  "Copy accelerator; Uses 16KB buffer (MP3)"

END

ID_INFO_DIALOG DIALOG -10, 70, 211, 78

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "About"

FONT 8, "Helv"

BEGIN

ICON          1, -1, 8, 9, 18, 20

        LTEXT         "Apple II Oasis - Disk Manager - Converter Library\nVersion 2.1\n\nCopyright \251 BG Universal Software, Inc. 1997-1998", -1, 30, 10, 178, 40, WS_CHILD | WS_VISIBLE | WS_GROUP

DEFPUSHBUTTON "OK", IDOK, 84, 55, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP

CONTROL       "", -1, "STATIC", SS_GRAYFRAME | WS_CHILD | WS_VISIBLE, 0, 2, 211, 76

END

ID_SETUP_DIALOG DIALOG -10, 70, 231, 66

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "Setup Disk Image Converter"

FONT 8, "Helv"

BEGIN

LTEXT         "Disk &Name (DSK/DO/HDV --> A4W only)", -1, 8, 10, 150, 8

EDITTEXT      IDD_DISKNAME, 8, 22, 130, 12

CONTROL       "&Display this dialog before every conversion", IDD_CBALWAYS, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 8, 44, 155, 12

DEFPUSHBUTTON "OK",     IDOK, 170, 10, 50, 14, WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP

PUSHBUTTON    "Cancel", IDCANCEL, 170, 26, 50, 14, WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP

PUSHBUTTON    "&Help",  IDD_PBHELP, 170, 43, 50, 14, WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP

END

1 VERSIONINFO

FILEVERSION    VERN, SUBVERN, 3, 22

PRODUCTVERSION VERN, SUBVERN, 3, VERCOUNT

FILEFLAGSMASK  VS_FF_DEBUG | VS_FF_PRERELEASE | VS_FF_PATCHED | VS_FF_PRIVATEBUILD | VS_FF_INFOINFERRED | VS_FF_SPECIALBUILD

FILEOS         VOS__WINDOWS16

FILETYPE       VFT_DLL

BEGIN

  BLOCK "StringFileInfo"

  BEGIN

    BLOCK "040904E4"

    BEGIN

      VALUE "CompanyName",      VI_COMPANYNAME

      VALUE "FileDescription",  "Sample Converter Library for Apple II Disk Manager\0"

      VALUE "FileVersion",      VI_PRODUCTVER

      VALUE "InternalName",     "ADM_CONV\0"

      VALUE "LegalCopyright",   "Copyright \251 1997-1998 BG Universal Software, Inc.\0"

      VALUE "OriginalFilename", "ADM_CONV.DLL\0"

      VALUE "ProductName",      VI_PRODUCTNAME

      VALUE "ProductVersion",   VI_PRODUCTVER

    END

  END

END

1 ICON

BEGIN

'00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02'

'00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'

'00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00'

'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'

'00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'

'00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'

'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'

'00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'

'00 00 00 00 00 00 77 77 77 77 77 77 00 00 00 00'

'00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00'

'00 00 00 00 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 00 77 77 70 88 88 88 88 88 07 00 00 00 00'

'00 00 0C CC CC C0 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 77 77 88 88 88 00 00 00 00 00'

'00 00 0C 70 00 00 88 88 00 00 00 00 00 00 00 00'

'00 00 0C 70 00 00 00 00 00 00 00 00 00 00 00 00'

'00 00 0C 70 00 00 00 00 00 00 00 00 00 00 00 00'

'00 00 0C 70 00 00 07 77 77 77 77 77 00 00 00 00'

'00 00 0C 70 00 00 00 00 00 00 00 07 00 00 00 00'

'00 00 0C 70 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 77 77 70 88 88 88 88 88 07 00 00 00 00'

'00 00 0C CC CC C0 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 88 88 88 88 88 07 00 00 00 00'

'00 00 0C 70 00 00 77 77 88 88 88 00 00 00 00 00'

'00 00 0C 70 00 00 88 88 00 00 00 00 00 00 00 00'

'00 00 0C 70 00 00 00 00 00 00 00 00 00 00 00 00'

'00 00 0C 70 00 00 00 00 00 90 00 00 00 00 00 00'

'77 77 7C 77 77 77 00 00 09 99 00 00 00 00 00 00'

'00 00 00 00 00 07 00 00 99 99 90 00 00 00 00 00'

'88 88 88 88 88 07 00 09 99 99 99 00 00 00 00 00'

'88 88 88 88 88 07 00 00 09 99 00 00 00 00 00 00'

'88 88 88 88 88 07 00 00 09 99 00 00 00 00 00 00'

'88 88 88 88 8F 87 00 00 99 90 00 00 00 00 00 00'

'88 88 88 88 F9 97 00 99 99 90 00 00 00 00 00 00'

'77 77 88 88 8F 89 99 99 90 00 00 00 00 00 00 00'

'88 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00'

'00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'

'00 0F FF FE 00 0F FF FE 00 0F FF C0 00 0F FF 80'

'00 0F FF 9E 00 0F FF 9E 00 0F FF 9E 00 1F FF 9E'

'00 3F FF 9F 0F FF FF 9F FF FF FF 9F 80 0F FF 9E'

'00 0F FF 9E 00 0F FF 80 00 0F FF 80 00 0F FF 9E'

'00 0F FF 9E 00 0F FF 9E 00 1F FF 9E 00 3F FF 9F'

'0F FF FF 9F FD FF F0 00 F8 FF E0 00 F0 7F E0 00'

'E0 3F E0 00 F8 FF E0 00 F8 FF E0 00 F1 FF E0 00'

'C1 FF E0 00 07 FF E0 01 FF FF F0 FF FF FF'

END


File "ADM_CONV.DEF"

LIBRARY      ADM_CONV

DESCRIPTION  'Sample Converter Library for Apple II Disk Manager'

EXETYPE      WINDOWS

CODE         PRELOAD DISCARDABLE

DATA         PRELOAD SINGLE

HEAPSIZE     4096


File "CONV_LIB.H"

/*

CONV_LIB.H

Converter Libraries for Apple II Oasis :: Disk Manager

------------------------------------------------------

        Copyright (c) BG Universal Software, Inc. 1997

[ http://www.geocities.com/SiliconValley/Lakes/4414/ ]

                           [ Tech support:           ]

                           [ Teodor Angeloff         ]

                           [ 5100 Gorna Orjahoviza   ]

                           [ P.O.Box 176             ]

                           [ Bulgaria                ]

                           [ APL24WIN@usa.net        ]

                           [ APL24WIN@GeoCities.com  ]

*/

#ifndef _A2O_CONV_LIB_H

#define _A2O_CONV_LIB_H

// OS codes

#define   IOS_NONE           0

#define   IOS_MSDOS          1

#define   IOS_PRODOS         2

#define   IOS_DOS33          3

#define   IOS_USDOS          4

#define   IOS_UCSD           5

#define   IOS_CPM            6

// attribs

#define   ATR_MSDOS_R        1

#define   ATR_MSDOS_A        2

#define   ATR_MSDOS_S        4

#define   ATR_MSDOS_H        8

#define   ATR_DOS33_W        16

#define   ATR_PRODOS_R       32

#define   ATR_PRODOS_W       64

#define   ATR_PRODOS_D       128

#define   ATR_PRODOS_N       256

#define   ATR_PRODOS_B       512

// file types

// MS-DOS

#define  IT_FOLDER          9   // directory

#define  IT_FDIMAGE         10  // disk image (DSK/DO/A4W-Disk II)

#define  IT_HDIMAGE         11  // disk image (A4W-Fixed Disk)

#define  IT_EXEFILE         12  // EXE/COM/BAT/PIF

#define  IT_FILE            13  // other

// DOS 3.3

#define  IT_DOS33           14

#define  IT_DOS33_A         IT_DOS33

#define  IT_DOS33_B         (IT_DOS33+1)

#define  IT_DOS33_T         (IT_DOS33+2)

#define  IT_DOS33_I         (IT_DOS33+3)

#define  IT_DOS33_R         (IT_DOS33+4)

#define  IT_DOS33_S         (IT_DOS33+5)

#define  IT_DOS33_A2        (IT_DOS33+6)

#define  IT_DOS33_B2        (IT_DOS33+7)

#define  IT_DOS33_X         22

// ProDOS base + $00..$FF

#define  IT_PRODOS          256

#define  IT_PRODOS_TXT      (IT_PRODOS+4)

#define  IT_PRODOS_BIN      (IT_PRODOS+6)

#define  IT_PRODOS_FOLDER   (IT_PRODOS+15)

#define  IT_PRODOS_ADB      (IT_PRODOS+25)

#define  IT_PRODOS_AWP      (IT_PRODOS+26)

#define  IT_PRODOS_ASP      (IT_PRODOS+27)

#define  IT_PRODOS_SHK      (IT_PRODOS+224)

#define  IT_PRODOS_INT      (IT_PRODOS+250)

#define  IT_PRODOS_BAS      (IT_PRODOS+252)

#define  IT_PRODOS_SYS      (IT_PRODOS+255)

#ifndef  LP_DATA

#define  LP_DATA            LPVOID

#endif

// Converter Information

typedef struct tagCL_INFO

{

  WORD wFlags;                   // CLF_*

  char szName[30];               // converter/library name

  char szDescr[96];              // short description

} CL_INFO;

// File Information

typedef struct tagCL_FILE_INFO

{

  struct

  {

    DWORD size;             // file size in bytes

    WORD  type;             // file type IT_*

    WORD  subtype;

    WORD  created[6];       // file creation date&time - Y(1900-9999),M(1-12),D(1-31),H(0-23),M(0-59),S(0-59)

    WORD  modified[6];      // last mod. date/time

    WORD  attrib;           // file attributes ATR_*

    BYTE  os;               // OS - see the above IOS_* codes

    char  prefix[256];

    char  name[32];

  } src;

  struct                    // "type", "subtype", and "name" can be changed in QueryName()

  {

    WORD  type;

    WORD  subtype;

    BYTE  os;

    char  prefix[256];

    char  name[32];

  } dest;

} CL_FILE_INFO;

typedef   CL_INFO      FAR * LPCL_INFO;

typedef   CL_FILE_INFO FAR * LPCL_FILE_INFO;

#define   CLF_ENABLE         1   // default state for "Enable" checkbox; usually "ON"

#define   CLF_CONFIRM        2   // default state for "Confirm" checkbox; usually "OFF"

#define   CLF_INFO           16  // "Info" button supported

#define   CLF_SETUP          32  // "Setup" button supported

BOOL CALLBACK _export QueryName( WORD, LPCL_FILE_INFO, LP_DATA );

BOOL CALLBACK _export QueryConv( HWND, WORD, LPCL_FILE_INFO, LP_DATA );

BOOL CALLBACK _export OpenConv( HWND, WORD, LPCL_FILE_INFO, LP_DATA );

WORD CALLBACK _export RBlockSize( WORD, LP_DATA );

WORD CALLBACK _export Convert( LPBYTE, WORD, LPBYTE FAR *, LP_DATA );

void CALLBACK _export CloseConv( LP_DATA );

#endif


Developing Converter Library

Overview

Functions

Example

See Also

Converters Dialog Box


CL Example

Following are the source code files of ADM_CONV.DLL - A2 Oasis Converter Library:

ADM_CONV.C

ADM_CONV.H

CONV_LIB.H

ADM_CONV.RC

ADM_CONV.DEF


File Converters
Converters

This dialog box is used to add new libraries and set up the installed converters. The Converter Libraries listbox displays the currently installed libraries. Every library contains one or more converters. All Available Converters are sorted alphabetically in the second listbox.

Dialog Control	Purpose

Insert New	Inserts a new library. The first library in the listbox has highest priority.

Remove	Removes the selected library from the listbox (it doesn't destroy the .DLL file).

Info	Displays specific information about the selected converter. There is also an information line (below the Available Converters listbox) which contains a short description about the selected converter. The bracketed letters at the end of this line show the supported operating systems (MS-DOS, ProDOS, DOS 3.3).

Setup	Displays a Setup dialog for the selected converter. Some converters don't support this button.

Enable	If this checkbox is turned off then the corresponding converter is disabled.

Confirm	Displays a confirmation dialog box before every file conversion using this converter. If this checkbox is turned off and the processed file is recognized by the converter then the conversion will be done automatically.

See Also

Developing Converter Library


Create Disk Image
New Disk Image

Creates a new empty disk image file. You can use it under ProDOS, DOS 3.3, or another Apple II OS. You have to format the new image for the corresponding operating system. To do this, you may use several utilities like Copy ][ Plus, ProDOS Filer, ShrinkIt, DOS 3.3 INIT command, etc. Also you can duplicate an existing disk image and delete all files on the copy. This is an alternative way to create new, empty, formatted disk image.

This dialog box is accessible only for MS-DOS directories.

Filename

This is the name of the new disk image. It will be created in the current directory.

Disk Name

This is optional title for .A4W images. For more information see Name entry in Private File Formats header.

Size

Specify the disk image size of .A4W Hard Disk.

Type

Floppy Disk and Hard Disk are subtypes of .A4W files. The remaining file types (.DSK, .NIB, .HDV) are standard Apple II disk image types supported by other existing Apple II emulators.

See Also

File Menu Commands


Toolbar

Same as Send To Emulator menu

Same as Cut menu

Same as Copy menu

Same as Paste menu

Same as Delete menu

Go to parent directory

Directory "bookmark" (go to frequently used directory). To assign current directory use "Set Bookmark" button, shown below, then choose some of 1..5 "bookmark" buttons.

Set Bookmark


Command Line Options

Syntax:

ADMANAGR.EXE [/new] [file.ini]

/new	This option must be used if you want to run 2 or more Disk Manager instances. Also you can use New DM Window menu (look in the System menu)

file.ini	Initialization file. The default INI file is ADMANAGR.INI in WINDOWS directory


Setup Disk Image Converter

Disk Name	When converting .DSK to .A4W disk image you can enter a disk name. For more information read Private File Formats.

Display this dialog...	If this checkbox is turned on then this dialog will be displayed before every .DSK/.DO to .A4W conversion. Otherwise the previous Disk Name will be used automatically.

To activate the Disk Image converter you have to COPY (or MOVE) some A4W/DSK/DO disk image and change the destination file extension from A4W to DSK (or DO) or from DSK/DO to A4W.

See Also

Converter Libraries


Confirm File Conversion

If you do NOT want to use the Converter from Converter Library - choose Cancel button. This dialog box is being displayed when the Confirm checkbox in Converter Libraries dialog is turned on.


Converter Library is a Windows Dynamic Link Library (DLL) containing one or more file converters for Apple II Disk Manager


Overview
Developing Converter Library

Introduction:

Apple II Disk Manager (ADM) is able to copy MS-DOS, ProDOS, and Apple DOS 3.3 files. Because the binary representation of the same file type in these OS may be different, it is a good idea to exist a way for automatic data conversion. For example, if you have an old text file stored on a DOS 3.3 disk image and you want to transfer and edit it in Notepad, without binary conversion the file will be unreadable (bit 7 in DOS 3.3 text files is 1 - in MS-DOS is 0; DOS 3.3 uses only CR code for new line - MS-DOS requires CR+LF). If you have installed a file converter for text file exchange (try ADM_CONV.DLL), you can copy every DOS 3.3 or ProDOS text file to MS-DOS directory and this file will be automatically converted.

It is also possible to exist more complex converters translating AppleWorks spreadsheet files to MS-Excel, ProDOS .ADB to .DBF, Apple II hires screen image files to .BMP, etc. ADM comes with a small Converter Library (ADM_CONV.DLL) which includes 5 converters: TextFile (MS-DOS <-> ProDOS/DOS 3.3), DiskImage (A4W <-> DSK/DO, A4W <-> HDV, PO <-> DSK/DO), and Fast Copy.

Installation:

ADM can use multiple CLs. There is a Converters dialog box where you can select all necessary CLs and Enable/Setup each existing converter. When the CL(s) are installed and you COPY(MOVE) some file then if this file is recognized by some converter its copy will be translated.

ADM <-> CL communication:

The CL API supported by ADM has 2 function groups. The first group includes functions for the CL installation. The second group supports the conversion process.

When ADM installs a CL it allocates a memory block containing the necessary dynamic data for all converters in this CL. This block is similar to a data segment for the library. It is valid until ADM closes the CL. If the CL is written in an object oriented language, it may construct its objects in this memory block and destroy them when Close function is called. Each CL function receives a far pointer to the memory block in pvData parameter.

All CL's settings can be stored in ADMANAGR.INI file. It is recommended to use the library's filename for profile section name ([SOME_CNV.DLL]).

The following lines describe what ADM does when it installs a CL:

- LoadLibrary(...)

- int API_Ver = 1;

- int BlockSize = DEF_RBlockSize; // DEF_RBlockSize = 2000

- int NumberOfConvs = Init( &API_Ver, &BlockSize );

- if ( NumberOfConvs = 0 or API_Ver <> 1 ) then STOP - this CL can't be used

- BYTE FAR * pData = MemAlloc( BlockSize );

- Open( BlockSize, pData );

When the user chooses Paste menu, ADM executes the following operations:

1.	Call NameConvert function (defined in ADM). It changes the file name if the source and destination OS are different.

2.	Call QueryName function for every installed converter.

3.	Display Confirm Copy | Move Command dialog box. The user may change the destination filename or/and subtype.

4.	Call QueryConv function for every (enabled) converter. When some converter returns TRUE (nonzero value) this means that it will convert this file. QueryConv calls for the remaining converters are ignored. Converters are called starting from index 0. The CL order is the same as in Converters dialog box.

5.	Open source and create destination file.

6.	If OpenConv returns zero then this conversion is ignored (RBlockSize and Convert functions will not be called below)

7.	Create timer (T=40ms). The next steps (8..14) are being called 25 times per second until the whole file is copied.

8.	int size = RBlockSize( DEF_RBlockSize, pData );

9.	LPBYTE pbSrc = MemAlloc( size );

10.	int nBytesRead = read( pbSrc, size ); // read function is defined in ADM

11.	LPBYTE pbDest = pbSrc;

12.	int nDestBytes = Convert( pbSrc, nBytesRead, &pbDest, pData );

13.	write( pbDest, nDestBytes ); // write is defined in ADM

14.	The timer is destroyed when ( nBytesRead = 0 and nDestBytes = 0 ). This means that the converter can read the whole source file, convert it, and then write the destination file (Convert may store pbSrc data in temporary file when nBytesRead is nonzero). Note that pbSrc parameter can be NULL. This happens when ADM has read the source file and it is calling Convert function with nBytesRead = 0.

15.	CloseConv( pData );

See Also

Converters Dialog Box


Converter Library API

The following functions must be exported from every CL:

CL Service

Init	CL initialization

Open	CL dynamic buffer initialization

Info	Name/Description/Flags for the CL and for each converter

InfoButton	Display Information Dialog Box

SetupButton	Display Setup Dialog Box

Close	Free CL dynamic buffer

Converter Service

QueryName	Correct filename (type, subtype) translation

QueryConv	Looking for suitable converter

OpenConv	Prepare conversion

RBlockSize	Change the default block size for the next read-write step

Convert	Convert the information stream

CloseConv	End of conversion


InfoButton

void InfoButton( HWND hwndParent, WORD iConv, LP_DATA pvData )

This function is called when Info button is chosen. Usually it displays an Information (About) dialog box.

Parameter	Description

hwndParent	Identifies the Coverters dialog box. This dialog will be the parent window of the converter's information dialog box

iConv	Zero based converter index.

pvData	Data buffer stored by the calling Apple II Disk Manager. See also Converter Library Overview, ADM_CONV.H, and ADM_CONV.C

Returns

This function does not return a value.


SetupButton

void SetupButton( HWND hwndParent, WORD iConv, LP_DATA pvData )

This function is called when Setup button is chosen. Usually it displays a Converter Setup dialog box.

Parameter	Description

hwndParent	Identifies the Coverters dialog box. This dialog will be the parent window of the converter's Setup dialog box.

iConv	Zero based converter index.

pvData	Data buffer stored by the calling Apple II Disk Manager. See also Converter Library Overview, ADM_CONV.H, and ADM_CONV.C

Returns

This function does not return a value.


Init

WORD Init( LPWORD pwVer, LPWORD pwBufSize )

This is the first CL function called by Apple II Disk Manager.

Parameter	Description

pwVer	CL API version. This value must be set to 1: *pwVer = 1;

pwBufSize	Points to a buffer that is filled on input and output.

On input it is the default size in bytes of the buffer for one read/write operation. The same value will be sent as nDefault parameter to RBlockSize function.

On output: size of the data buffer used by other functions via LP_DATA pvData parameter. The input *pwBufSize value can be used to calculate the output value.

Returns

The return value specifies the number of converters contained by this library.

See also

Converter Library Overview.


Info

void Info( WORD iConv, LPCL_INFO pCL_Info, LP_DATA pvData )

Apple II Disk Manager (ADM) calls this function to get the name, description, and flags for some converter or for the CL.

Parameter	Description

iConv	Zero based converter index. When ADM requires the name/description of the library this parameter will be (-1) = (0xFFFF).

pCL_Info	Points to a CL_INFO structure.

pvData	Data buffer.

Returns

This function does not return a value.

Comments

wFlags member of CL_INFO structure can be a combination of the following values:

CLF_ENABLE	Default state for "Enable" checkbox

CLF_CONFIRM	Default state for "Confirm" checkbox

CLF_INFO	"Info" button supported

CLF_SETUP	"Setup" button supported

The tipical converter flags are pCL_Info->wFlags = CLF_ENABLE | CLF_INFO. This converter is enabled by default (CLF_ENABLE=1), it does not require confirmation before its conversions (CLF_CONFIRM=0), Info button is supported (CLF_INFO=1), and there isn't a Setup dialog - Setup button will be disabled (CLF_SETUP=0).


Open

void Open( WORD wBufSize, LP_DATA pvData )

Apple II Disk Manager calls this function to allow the CL to initialize its data buffer pointed by pvData parameter. For more information read Converter Library Overview.

Parameter	Description

wBufSize	Size in bytes of the buffer pointed by pvData parameter.

pvData	Data buffer.

Returns

This function does not return a value.

See Also

Init

Close


Close

void Close( LP_DATA pvData )

Apple II Disk Manager stops using this library after it calls Close function. The library has to free the data buffer pointed by pvData parameter.

Parameter	Description

pvData	Data buffer.

Returns

This function does not return a value.

See Also

Init

Open


QueryName

BOOL QueryName( WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

This function is called by Apple II Disk Manager (ADM) before displaying Confirm Copy | Move Command dialog box. The converters may change the destination filename if it is not properly translated by ADM when the source and destination OS are different.

Parameter	Description

iConv	Zero based converter index.

fi	Pointer to a CL_FILE_INFO structure. This structure contains information about the source and destination files. Only the values of dest.name, dest.type, and dest.subtype members can be changed.

pvData	Data buffer.

Returns

If the return value is nonzero then QueryName function will not be called for the remaining converters. This will protect all changes made on dest.name, dest.type, or dest.subtype.


QueryConv

BOOL QueryConv( HWND hwndParent, WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

This function is called by Apple II Disk Manager (ADM) after the user has chosen Yes or Yes to All button in Confirm Copy | Move Command dialog box. All converters in all libraries are being called with this function. The first converter that recognizes this file and returns nonzero value will be called for this file conversion.

Parameter	Description

hwndParent	Identifies the Confirm Copy | Move Command dialog box. This parameter can be used if it is necessary to be displayed some dialog or message box.

iConv	Zero based converter index.

fi	Pointer to a CL_FILE_INFO structure. This structure contains information about the source and destination files.

pvData	Data buffer.

Returns

The return value is nonzero if this converter will convert the file. Otherwise it is zero.


OpenConv

BOOL OpenConv( HWND hwndParent, WORD iConv, LPCL_FILE_INFO fi, LP_DATA pvData )

This function is called by Apple II Disk Manager (ADM) after it has received a nonzero value from QueryConv function. The converter may prepare its data structures.

Parameter	Description

hwndParent	Identifies the Confirm Copy | Move Command dialog box. This parameter can be used if it is necessary to be displayed some dialog or message box.

iConv	Zero based converter index.

fi	Pointer to a CL_FILE_INFO structure. This structure contains information about the source and destination files.

pvData	Data buffer.

Returns

The return value is zero if some error has occured and the conversion cannot be continued. In this case the file will be copied without conversion.


RBlockSize

WORD RBlockSize( WORD nDefault, LP_DATA pvData )

This function is called by Apple II Disk Manager before it reads the ordinal portion of the source file. The converter may change the default block size if this will make the file conversion easier.

Parameter	Description

nDefault	Default block size in bytes.

pvData	Data buffer.

Returns

The return value specifies the final block size. It is recommended to return nDefault value, if possible.


Convert

WORD Convert( LPBYTE pbSrc, WORD size, LPBYTE FAR * ppbDest, LP_DATA pvData )

This function makes the real conversion.

Parameter	Description

pbSrc	Points to a buffer containing the ordinal portion of the source file.

size	Size in bytes of pbSrc buffer.

ppbDest	Double pointer to the converter's output buffer. By default this is the source buffer (*ppbDest = pbSrc).

pvData	Data buffer.

Returns

The return value specifies the size of the *ppbDest buffer.

Comments

If the converter needs the whole source file before starting the conversion, it may store the received data (pbSrc) in a temporary file or in a large memory block and return zero for the *ppbDest size until size > 0. The size parameter is zero when there is no more source data. In this moment the converter has to complete the file conversion and return the first portion of the destination file. Convert function will be called until it returns nonzero value.


CloseConv

void CloseConv( LP_DATA pvData )

This function is called by Apple II Disk Manager when it has finished using this converter. The converter may free any memory blocks allocated for this conversion or remove its temporary file(s).

Parameter	Description

pvData	Data buffer.

Returns

This function does not return a value.


Associate

Associates a ProDOS or DOS3.3 file type with a text file containing one or more commands. Whenever you double click on a file with the same type Apple II Disk Manager will "send" the associated command(s) to Apple II Emulator.

Under Filename you see the pathname of the currently associated text file. Browse button may be used to select another existing file. You can edit the file with any text editor such as Notepad if you don't like the internal micro editor (Edit button). New button is identical to Edit but it creates a new file.

Option	Description

Send Disk Image	Apple II Emulator receives the filename of the disk image containing the file that will be processed. If this option is turned off you may try to start a file whose disk image is not currently used by the emulator. For that reason you may always turn it on

Reset	Apple II Emulator will process CTRL-F12 (Reset) "keypress" before it starts executing the associated command(s)

Reboot	Apple II Emulator will process CTRL-F1-F12 "keypress" before it starts executing the associated command(s)

DOS 3.3 Examples:

A type - the associated command may be: RUN <File>

B type: BRUN <File>

ProDOS Examples:

SYS, BAS, or BIN type:

PREFIX <Prefix>

-<File>

DIR type:

PREFIX <Prefix>/<File>

With this association you may use Apple II Disk Manager to change current ProDOS directory (use F2 key or Send File To Apple II Emulator toolbar button because a double click will display the directory contents)

TXT type (optimized for Merlin source files):

Reset and Send Disk Image options are turned on (Reset will call Merlin main menu)

L<Prefix>/<File><CTRL>H<CTRL>H

L(oad source) <File> command. <CTRL>H<CTRL>H will add 2 backspaces to remove the .S file suffix


Edit Associated Commands

This dialog box is a small text editor. It is used to edit the ProDOS/DOS3.3 file associated commands.

There are some special codes which Apple II Disk Manager replaces with their actual values before the commands are sent to Apple II Emulator.

Button	Code	Description

Prefix	<Prefix>	File prefix (only for ProDOS). Does not include the last "/" character

File	<File>	Filename. To include the full ProDOS path, use <Prefix>/<File>

oA Down	<OA-DOWN>	Open Apple button [image] down. If you want to send [image] -? command, use <OA-DOWN>?<OA-UP>

oA Up	<OA-UP>	Open Apple button [image] up

cA Down	<CA-DOWN>	Closed/Solid Apple button [image] down

cA Up	<CA-UP>	Closed/Solid Apple button [image] up

CTRL	<CTRL>x	Control code. <CTRL>A will be translated to ^A


Define User Application
Define User Command

Using the right mouse button you can run previously defined commands. The User Command can be any DOS/Windows command line including program name, options, plus a %1 parameter which will be replaced with the selected filename. The User Commands are alternatives of the default file association. For example, you may define TextFile command running simple text editor such as Notepad. If you wish to edit a .HTM file as HTML code you have to select the .HTM file, click the right mouse button, and choose Open With | TextFile. If you simply double click on this file you will probably open it with the default HTML editor.

You can create groups of user commands. To do this you have to use backslash ("\") character(s) in the command names. For example, you can define ARJ group (directory) which contains two ARJ subcommands - "List" and "Test":

ARJ\List

c:\command.com /c G:\UTIL\ARJ.EXE L %1 | MORE

ARJ\Test

G:\UTIL\ARJ.EXE T %1

%0 option will ask you to enter some parameter, e.g. destination directory, password, etc.

G:\UTIL\ARJ.EXE T %1 /g%0"Enter password"

To undefine an User Command assign empty command line.

If you add "*" at the end of the User Command name then the corresponding application will run with maximized window.


Open With
Open (File) With...

You have to define one or more commands that you will use later to process a file. To define an User Command, highlight the corresponding .EXE, .COM, .BAT, or .PIF file, click the right mouse button, and choose Define... menu item. It will open the Define User Command dialog box.


Mount Disk Image
Mount Disk To (Slot# / Drive#)

Select a disk image, click the right mouse button, and choose Mount Disk To menu. If there is a running Apple II Emulator you will see a list of all installed disk drives which can accept this image (i.e. if the image is .DSK you will see only the Disk II card slot/drives).

See Also

Send To Emulator


Postal Address:

Teodor Angeloff

5100 Gorna Orjahoviza

P.O.Box 176

Bulgaria

E-mail:

apl24win@usa.net

APL24WIN@GeoCities.com

PGP Public Keys


REGISTRATION

Apple II Oasis is a SHAREWARE product and you are requested if you find it useful and continue to use it to register. The registration fee is $25 ( $6 is the upgrade fee for the registered users of Apple II Oasis Ver. 1.xx or 2.0 ) plus $4 shipping in the US/Canada, $6 shipping overseas.

You can order by credit card from Public (software) Library by calling 800-2424-PsL or 713-524-6394 from 7:00 a.m. to 6:00 p.m. CST Monday-Thursday, 7:00 a.m. to 12:30 p.m. Friday or FAX 713-524-6398 or e-mail to 71355.470@compuserve.com. You can also mail credit card orders to PsL at P.O.Box 35705, Houston, TX 77235-5705.

PLEASE NOTE THAT THE ABOVE NUMBERS ARE FOR ORDERS ONLY.

Any questions about this program must be directed to:

Teodor Angeloff

5100 Gorna Orjahoviza

ul."Struma" No. 4V

BULGARIA

(e-mail: apl24win@usa.net)

To order by credit card use the Credit Card Registration Order Form.

You can also pay by Check or Money Order. To register complete the Order Form and mail to:

Public (software) Library

P.O.Box 35705

Houston, TX 77235-5705

USA

Feel free to share Apple II Oasis with your friends, but please do not distribute the program in an incomplete or modified form, or as part of another system, or for a fee.


Definition of SHAREWARE

Shareware is an existing marketing method which allows you to try top-quality software before you pay the author. With Shareware, you cannot be disappointed spending money for a program that's not right for you.

If you continue to use the program, you must send the author a registration payment which may entitle you to technical support, printed manual, bonus programs, and more. Your payment supports authors, allowing them to continue writing newer and better Shareware software.

Copyright laws apply to both Shareware and commercial software and the copyright holder retains all rights, with the exception that copying and distributing the program for evaluation purposes is encouraged, subject to certain conditions.


Credit Card Order Form
Apple II Oasis for Windows (v2.1)

Item Number #11972

Credit Card Order Form

                                        Date _________________________

    Name:  ___________________________________________________________

[Company:] ___________________________________________________________

 Address:  ___________________________________________________________

        :  ___________________________________________________________

        :  ___________________________________________________________

Registration fee* = $25 x ___ (Quantity) .................... $_______

[* The registr. fee is $6 for the registered users of earlier versions]

Shipping = $4 US/Canada; $6 overseas ........................ $_______

TOTAL ....................................................... $_______

Payment by:   ( ) MasterCard            ( ) Visa

              ( ) American Express      ( ) Discover Card

Card #:  ________________________________  Exp. Date:  _____________

Signature of cardholder: ___________________________________________

Disk size (check one):  ( ) 3.5"    ( ) 5.25"


Order Form
Apple II Oasis for Windows (v2.1)

Item Number #11972

Order Form

                                        Date _________________________

    Name:  ___________________________________________________________

[Company:] ___________________________________________________________

 Address:  ___________________________________________________________

        :  ___________________________________________________________

        :  ___________________________________________________________

Registration fee* = $25 x ___ (Quantity) .................... $_______

[* The registr. fee is $6 for the registered users of earlier versions]

Shipping = $4 US/Canada; $6 overseas ........................ $_______

TOTAL ....................................................... $_______

Please pay by Check or Money Order. Note that the check must be in 'US Dollars' ($ USD). A check will have to clear before goods are dispatched.

Disk size (check one):  ( ) 3.5"    ( ) 5.25"


Apple II Oasis
Apple II Oasis is a program group including three Windows applications:

Apple II Emulator, Apple II Disk Manager, and Apple II Disk Server.

You cannot use directly Apple II software on PCs because Apple II and IBM PC have incompatible microprocessors, operating systems, disk drives, etc.

Apple II Oasis is binding together the different worlds of Apple II and PC software. However, the goal is to insert the existing old Apple II software among the PC/Windows applications (not the opposite)

Because of the incompatible disk drives it is necessary to use disk image files.

The following illustration shows how Apple II Oasis applications make the link between the different PC platforms.

See Also

Product History

Recommendations


The disk image is a file containing the information which can be stored on Apple II disk. There are two different kinds of disk images supported by Apple II Oasis: Disk II Diskettes and Hard Disk images.


Apple II Emulator interprets Apple II machine code; converts the keyboard/mouse input and the audio/video output; displays an Apple II screen in a window, translates all user's commands and by this way makes it possible for your PC to use the existing Apple II software in Windows environment.

Read Using Apple II Emulator for details.


Apple II Disk Server allows you to transfer information between Apple II and PC. Requires a simple cable connecting the joystick port of Apple II and one PC parallel port. For data transfers via Null Modem cable use S-LINK.

Read Using Apple II Disk Server for details.


Apple II Disk Manager supports COPY, MOVE, DELETE, etc. commands for MS-DOS volumes and disk image files formatted for ProDOS or Apple DOS 3.3.

Read Using Apple II Disk Manager for details.


Product History
Apple II Oasis: Product History

Jan.1995 - version 1.0

First release of Apple II Emulator for Windows. Everything is in one executable file. There is no documentation. The menus are in a standard (visible) menu bar.

Mar.1995 - version 1.1

All menus are inserted in the system menu.

Jul.1995 - version 1.12

Fixed bug in joystick emulation (Y-axis). Other tiny changes.

Apr.1996 - version 1.2

3D dialog controls. "Smooth (graphics) pixel" feature. Documentation. Better speaker emulation. Standard (COMMDLG) Select Diskette dialog box. SETUP program.

Sep.1996 - version 1.3

"Mid-level" speaker emulation; 22.05 kHz 44.1 kHz. Sound Setup dialog box + sound export. New BIOS config file option. First release of Apple II Disk Server tool.

Feb.1997 - version 1.4

Support for .DSK disk images. ReadOnly checkbox in Select Disk dialogs. New CharsBMP config file option. Drag-drop for Apple II Disk Server. First release of Apple II Disk Manager. The project's name is changed to Apple II Oasis.

Jul.1997 - version 1.45

Apple II Emulator: Graphic acceleration, /new command-line option, Colors config file section.

Apple II Disk Manager: Toolbar, File Converters.

Dec.1997 - version 1.5

Apple II Emulator: Removable Hard Disk images (Disk Image menu), The Hard disk card now supports two "drives" (one in the previous versions), Keyboard buffer, TrueType font with MouseText characters (codes 128-159), Reset and Reboot command line options.

Apple II Disk Manager: Associate dialog box, Up One Level toolbar button, Supports .HDV disk image file format of ApplePC emulator, Display File/By Type (F4) edit field accepts multiple file templates separated by semicolon (e.g.: *.doc;*.txt;*.rtf).

Apr.1998 - version 2.0

Apple II Emulator: SaveState feature, Communication (Serial) Card (replaces the old Parallel Interface), Generally reorganized Configuration dialog box, Background execution option, PC BackSpace key emulated as CTRL-H, Hard disk firmware automatically calls $C600 if there is no valid hard disk image, Support for the .HDV hard disk image format of ApplePC.

Apple II Disk Manager: Right mouse button in use, User Defined Command menu.

Apple II Disk Server: S-Link.

Version 2.1


REGISTRATION

Apple II Oasis is a SHAREWARE product and you are requested if you find it useful and continue to use it to register. The registration fee is $25 ( $6 is the upgrade fee for the registered users of Apple II Oasis v1.xx or v2.0 ) plus $4 shipping in the US/Canada, $6 shipping overseas. When register you will receive a disk with the latest fully licensed version of Apple II Oasis.

Ways To Pay:	Credit Card

Check or Money Order

Tech Support:	Postal Address:

Teodor Angeloff

5100 Gorna Orjahoviza

P.O. Box 176

BULGARIA

E-mail:

apl24win@usa.net

APL24WIN@GeoCities.com

Feel free to share Apple II Oasis with your friends, but please do not distribute the program in an incomplete or modified form, or as part of another system, or for a fee.


Credit Card Orders

You can order with MC, Visa, AmEx, or Discover from Public Software Library, Inc. in the following ways:

Online

Secure ordering: https://www.pslweb.com/cgi-win/psl_ords.exe/ITEM11972

(If your browser supports secure transactions, try this link first.)

Non-encrypted ordering: http://www.pslweb.com/cgi-win/psl_ord.exe/ITEM11972

(If your browser does not support secure transactions, use this link.)

Backup server: http://206.109.101.6/cgi-win/psl_ord.exe/ITEM11972

(If the server above is not accessible, use this order server.)

Online registration links: http://www.geocities.com/SiliconValley/Lakes/4414/REGISTER.HTM

(Load this page to see all currently available links for online registration)

Mail

Complete and send the Order Form to PsL at P.O.Box 35705, Houston, TX 77235-5705, U.S.A.

Email

Copy the Order Form into clipboard and then email it to PsL at 11972@pslweb.com or 71355.470@compuserve.com

FAX

Complete the Order Form and fax to 713-524-6398

Phone

PsL's operators are available from 8:30 a.m. to 5:30 p.m. CST Monday-Friday at 800-242-4775 Ext.11972 or 713-524-6394 Ext.11972

PLEASE NOTE THAT THE ABOVE NUMBERS ARE FOR ORDERS ONLY.

ANY QUESTIONS ABOUT THIS PROGRAM MUST BE DIRECTED TO:

Teodor Angeloff

5100 Gorna Orjahoviza

P.O. Box 176

BULGARIA

E-mail:	apl24win@usa.net

APL24WIN@GeoCities.com


Payment by Check or Money Order

Complete the Order Form and mail it to:

Public (software) Library

P.O.Box 35705

Houston, TX 77235-5705

U.S.A.


Choose Help/Order_Form menu to start the Order Form Generator


Pre-History

Following is a brief description of the pre-history of Apple II Oasis for Windows project.

1986 - author's first touch to any computer (Apple II+)

. . .

Mar.1993 - Apple II -> i386sx "upgrade"

spring.1993 - initial idea

Apple II Emulator working in DOS mode, supporting all the (necessary) peripheral accessories (color monitor, mouse, hard disk, RAM >128K, etc.).

summer.1993 - busy

autumn.1993 - initial idea changed

Apple II Emulator for Windows

winter.1994 - busy

Apr.1994 - the project started

Jul/Aug/Sep.1994 - 85% of the emulator's source code is already written

To continue, read the product's history.


ORDER FORM Generator

If you wish to register your copy of Apple II Oasis, you can use this dialog box to create the order form. When register you will receive a disk with the latest, fully licensed version of Apple II Oasis.

Complete all necessary fields of the Ship-To Name/Address.

IF A FIELD DOES NOT APPLY, PLEASE LEAVE IT COMPLETELY BLANK.

Please do not use any umlauts or characters with accents or diacritical marks.

Select the payment method and the disk size. For more details see REGISTRATION.

Upgrade

If you are registered user of Apple II Oasis (v1.xx or v2.0) - choose this checkbox - you will pay only $6 instead of $25 for your upgrade.

Shipping&Handling

If you are outside US/Canada choose the $6 s&h fee.

Preview

You can look at the completed order form before you Print (or Copy) it.

Copy

Copies the order form into the Clipboard. You can use this button if you want to send the order form via Email.

TOTAL

In this box you will see the total amount which you have to pay.


PGP Public Keys

PGP 2.6.3i

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: 2.6.3ia

mQCNAzYEJe8AAAEEAOWnvVvMnWORm3r2DmXE8URWBa1OBcQXZjkQJV07b3s5BvBV

0kS8fGQiYQvD0Gf78OOnsmPh9GedwAWM5IJ961QtiomzrJpjk6MK91r/bh4kTzgp

6ROICZ6ibQ6NYmShCGsDs2DbvB9KsfMawbfgaqYtl3Jb8Y25XfOxAZWKfoHpAAUR

tChUZW9kb3IgQW5nZWxvZmYgPEFQTDI0V0lOQEdlb0NpdGllcy5jb20+iQCVAwUQ

NgQyIPOxAZWKfoHpAQHGVwP+K33J6lmkc4ca4uq6AQUNhakyBMzv+hKbExmntXT9

7dx2WHQWUSU4u1QE8v3Ok9MZCoG1pm3U8nw4WBfaOeNl0nRmVkIDGsxpOyGq8TYn

mT67SVHti5twhdAuFL1fp7yfFPWMHtuJSX2l83K73i7fpQyoY/URpFJ+8IwFpRlx

XpS0KFRlb2RvciBBbmdlbG9mZiA8VEFAZ2VsZXNvZnQuYnVsbmV0LmNvbT6JAJUD

BRA2BDHU67ZuSstBYxEBAamYA/9386WYrMVoj9jlpBbSghhFRUBhLS4UCAi8liv4

YuLuui+ObH9Y+AMJGqLpTu94NUUvPgLiBMAkW7JcjIgS1jj8T8+3CWcurclQATs5

euRIKQ2tvmvN6UOEy2JkDM17EaexRHKGwcw+Am2Y4mXyWE/5YKpIkY5MpKSJJAnk

Fj75+IkAlQMFEDYEMZrL7yBhzMy4vQEB4pcD/1C+he5ekESp4JpPRXnwA1WoK7Uo

Q3XPzVVpvdk1W/uE5j0M9+F6O+iuzWZDUHFFc2d7aF0f6KGNJYLHxdz1ZGOyYEkT

2alQlxQBJ5+sSrcH0t1Or/csniePRQekA9gMmpv99KBrRy7iOMMu2BmqN/vSlivR

bBU7qlKHkqrrLM6liQCUAwUQNgQw4fOxAZWKfoHpAQEhIgP2IFtCUxnpnre4S1eh

FHXeR4TSHJXnQh8KRzSDZIoggbLunICQc9w/ytVa0YDzM5vlI6we1o7DLEnt0guZ

JOxF6pATkx7scJu39hXcKR63t2frOYEe9ANYJ3uuGbtk1DQgjGn90vAtKYIHI37D

+jRGNAeRhAdaycg/IN6fnwycrQ==

=iXb7

-----END PGP PUBLIC KEY BLOCK-----

PGP 5.0i

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: PGPfreeware 5.0i for non-commercial use

mQGiBDXYxJ4RBAD/nqV+DFY3YFcRBQZW5pefV/dSfyYx9AtituwqGWbaTnmacYXs

NYzVCslJ6673KkNNQA0LLW0ROyYPW1QK+7gV9dN3R/0mUGSxM5mFmml7PYZLs7Wt

9WEJBHuQQejkI0lqo+ATF4tEaE35LEmzcRtWrBBQalXxbz/VedlN5UzgvwCg/8pm

Ppg/aztCMoVJKntLd+U89N0D/jexPfoXDdvj7SRcs4I8/4/S9wgTyqXoOJtaQLY6

3psGdmsyH0TpOgb3dQF9b6U+6vzIfSrgQlAxtwUw1yRt16xHcZk00GCJspMjN3sx

cNR0SRp/ZCZdtzxV9uszfWqjKX91FrmCWlkQqyXKtmGLNqq6bjMt4ZI7Nx/YTkey

S17ZA/0Z+D0w5gBTe0dEMsafjo6CgVex2d5kxzbvXpr4wJVyGnuD1lukHW7sZcJ/

6IJem/JS0PT76pzmZZwYnjws0QYJzgnurpQLKJ3JyGsfofwQXa0Z2IhjuM9uFc7U

hTWZFZ86avV/jeOPyn6OhrNzA97Zkp5GwxIZj60jE1bXhQuX+bQiVGVvZG9yIEFu

Z2Vsb2ZmIDxBUEwyNFdJTkB1c2EubmV0PokASwQQEQIACwUCNdjEngQLAwECAAoJ

EFG/Zmfzx0aoATcAoJ01Hfz4uO8gkz7jRC8GoLMsif8TAKC0ws3bXjAUQ1axOIA/

vlLT9H+3QokAlQMFEDXY1MLL7yBhzMy4vQEB14kD/3db3aZ3sQguE7bMkvdCU5cm

RxXLpmWcE/wSBAI7YLyAnsgsahwM1JFv3WaVj0K7jvpwUMqZDso0wejXXdqThZQf

fXPpaOQaMuc0pvsS6TXFIgq5/Q4uqkq8khvjf9iOsIZn5oFpCyUmc9yRB+WbaLiG

pmQD+QNfAmmxakLGnrWuiQCVAwUQNdjZ5uu2bkrLQWMRAQEQxgP/ZVJmGD8EvLWB

heVpfer3qYXdSdoeEXwVlIiM590eOFxj/KmTlq0BwierVL3vh57OXr2BiHaDNksB

2hqbitNwxZ/UKOxkWEh4CgCuOKDQ71jlQsi+kMLOdQfspUaaisNwHrzifCp/Y5vu

gT0iNBWhwfJ0AyWFAm/OlAZrGfSnqsa5Aw0ENdjExBAMAMwdd1ckOErixPDojhNn

l06SE2H22+slDhf99pj3yHx5sHIdOHX79sFzxIMRJitDYMPj6NYK/aEoJguuqa6z

ZQ+iAFMBoHzWq6MSHvoPKs4fdIRPyvMX86RA6dfSd7ZCLQI2wSbLaF6dfJgJCo1+

Le3kXXn11JJPmxiO/CqnS3wy9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDa

AadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z

4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBY

K+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WM

uF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmW

n6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6UwybwACAgv+JF6FfUXwGL0X

R6FQLGnGiiECqhWH2a56PQEO2QIJiLWb1OVV1s4wa9j6LKWaAKtJwwoDy/mzUVjJ

PpT9a22o02r8d3SCbCP0906b4vWk2bYoU9sryw6LfmF2iwz2gvfAVeEoQ2FnAaFd

GbUMa9sMG4MerUkP2bmtvA/MUiXMMomO7HtCOwCH4l6+En7+rd0vlPfXjLSfS3GY

+M4aCjyR2q9ZhBUpEzxTjxnxHu0p//W8HbNmefuxN2pzv6sNG5Rv/8nzKWG9gIIH

r+NGOYkcgIqWNFcfgVsq49HblTPUYcru1u6ZYl/Z8Mb1/DZkImvk9TrTboIjsjLP

ZilhbPQSeEP2FF9DOyBp07bC37CjiSzUFc4qKcVYlUmvsG5tKVZjpIkZ+PTDx3Oi

nArRAAvJF1Q4sTLBvSrZQkxEaAcQxx7PDrhX2k+v2B951MPJ/E6gyO9wpsJwrCyb

2kbGSrOaHB5kUNILSnPrfZ4IMl0UuNn5qqYwQ80b1Ua+XoaY7AJuiQA/AwUYNdjE

xFG/Zmfzx0aoEQIPsACeInTd+J4BtwXiMfwbextf24CFSDYAn2xcStIhA9zdELf7

fiFBTa/z6zFG

=Wmo0

-----END PGP PUBLIC KEY BLOCK-----


What is new
What is new in Apple II Oasis v2.1

Apple II Emulator:

o Supported is the Nibble (.NIB) disk image format

o Scroll Lock LED can be used for Apple II disk drive indicator

o Create Diskette dialog box is removed. New disk images can  be created with Apple II Disk Manager - New | Disk Image menu

o PC Delete key was CTRL-D, now it works as Apple DEL

Apple II Disk Manager:

o Search feature

o Mount Disk image menu

o New converter in ADM_CONV.DLL library for .PO - .DSK image conversions

o Groups/Folders for user defined commands (see Define User Command)

o System Font option

See Also

Recommendations

Apple II Oasis History


Recommendations

[Windows 3.1 users only]: It is very important that file-sharing and locking is enabled. Be sure that SHARE.EXE has been loaded before starting Windows. Windows for Workgroups provides file-sharing and locking support by default and SHARE.EXE should not be loaded.

---

Visit Apple II Oasis Home Page:

http://www.geocities.com/SiliconValley/Lakes/4414/A4W.HTM

http://www.angelfire.com/tx/Apple2

Or, if the above URLs do not exist, find the actual Apple II Oasis Home Page from:

http://www.pslweb.com/cgi-win/psl_ord.exe/ITEM11972

---

If you don't have enough Apple II software, go here:

ftp://ftp.apple.asimov.net/pub/apple_II/images/

http://ground.icaen.uiowa.edu//2/apple2/apple8/

http://www.apple.asimov.net/site/apple_II/images/

---

To read more about Apple II history, visit this site:

http://www.hypermall.com/History/

---

Apple II Emulator:

It is better to use a ROM image of the Enhanced //e. See the ROM group of the Configuration dialog box.

Use different initialization files. Install empty Hard disk card on slot 7 for the default <windows>\APL24WIN.INI and Disk II on slot 6. Use different .INI file for your Apple II Emulator icon (add the .INI file as command line parameter for the Program Manager item, Win95 desktop icon, etc.). By this way when you "start" (double click) a disk image, the emulator will use the default initialization file.

Set Background Execution option to No Iconic or Never. Decrease Requested Speed if the real emulator speed is always 20%-30% slower than the requested speed (probably your PC is not enough fast).

Disable the keyboard buffer when you are playing games. Otherwise some games may stop processing the keyboard.

If you wish to have monochrome (e.g. green) display like a real B/W Apple II, open Configuration dialog box (F3), choose Colors tab group, turn Color Graphics option OFF, Color Text - ON, then change Text Color and Text Background (from the Color Palette combobox) to green and black.

---

Apple II Disk (image) Manager:

Use Options | Converters menu to install all available file converter libraries (e.g.: ADM_CONV.DLL).


URL
Internet URL where you can find Apple II Oasis For Windows

Apple II Oasis Home Page:

http://www.geocities.com/SiliconValley/Lakes/4414/A4W.HTM

http://www.angelfire.com/tx/Apple2

Or, if the above URLs do not exist, find the actual Apple II Oasis Home Page from:

http://www.pslweb.com/cgi-win/psl_ord.exe/ITEM11972

Apple II Oasis is also available from:

o Simtel Net ( http://www.simtel.net )

o The Shareware Net ( http://www.theshareware.net )

ftp://ftp.simtel.net/pub/simtelnet/win3/util/a24w_210.zip


About Dialog Box
About Apple II Oasis

This is a registered copy of Apple II Oasis. It is for use only on those machine that it is licensed for.

If you wish to change the registration text, choose PRC button to call the Personalized Registration Code (PRC) dialog box. Then you may install a new PRC if you have already received it; or generate request for a new PRC.

See Also

Request New Code

Install Registration Code


The Registration Code (RC) is a short file containing information for the number of licensed copies (usually one), registration text, etc. All this information is password encrypted. Whenever you start any Apple II Oasis application, it tries to find and decode this file. If the RC file exists and contains valid registration information then Apple II Oasis works in fully licensed mode (i.e. without any limitation). Also, the registration text, extracted from the RC file, is displayed in all About dialog boxes.

The RCs are created only by BG Universal Software or authorized distributor. Every Registration Code is based on the registration text received from the registered user.


Install Registration Code
Installing Registration Code

After you have created and sent request for new registration code you will receive e-mail reply containing ASCII encoded Personalized Registration Code (PRC). You may copy this e-mail message to the clipboard or save it as text file. By using clipboard button you will try to extract the PRC file from the clipboard. If the e-mail message has been stored in file you have to use File button to select it.

See Also

Request New Code


Request New Code

If you wish to change your registration text you have to select Request New Code tab-group from Personalized Registration Code (PRC) dialog box and enter your new registration text. You can choose Copy button to copy the PRC request into the clipboard or save it as text file by using Save As button.

Then you have to send your request via e-mail to:

apl24win@usa.net

and/or

APL24WIN@GeoCities.com

If you are using PGP, please add your public key.

See Also

Install Registration Code


The registration text may be something like this:

   THIS PRODUCT IS LICENSED TO:

   Sherlock Holmes

   221b Baker Street

   London  NW1

It may include your name, address, company name, etc.