antoine-source/appleworksgs/IW.CL/Src/iw.asm

1 line
13 KiB
NASM
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

STRING ASIS
BLANKS OFF
*****************************************************************
*
* The Print Manager
* ImageWriter Driver v2.2
*
* Coding Started Summer 1986 by Luc Barthelet and VersionSoft
*
* Version 1.0 April 22, 1987 Suki Lee
*-------------------------------------------------------------------------------
*
* Version 1.1 May 7, 1987 Suki Lee
*
* fPgDirty flag in status is updated correctly and is used to
* check if a form feed should be used when user aborts.
*-------------------------------------------------------------------------------
*
* Version 1.2 June 3, 1987 Suki Lee
*
* Fixed bug in 50% Better Text mode and 50% Landscape.
* New features added: Condensed
* PrPixelMap - prints pixel maps
* mixed modes and color palettes on same
* page (Not tested)
*-------------------------------------------------------------------------------
*
* Version 1.3 July 13, 1987 Suki Lee
*
* New style dialog - vertical sizing is now a separate section
* with radial buttons rather than a check box under printer
* effects.
* Fixed line spacing bug in draft text in condensed mode.
*
*-------------------------------------------------------------------------------
* Version 2.0 November 1987 Dan Hitchens
*
* Major revision of code.
* -Source code was gone through and commented.
* -Low level routines were modified, restructured or even eliminated.
* -Elimination of access to low level routines by user
* -Speed enhancements were incorporated (Primarily in LLD.POINT)
* -rPage (vRes) now reflects vertical condensed printing
* -Bugs were fixed:
* -320 mode landscape with vertical condensed was fixed.
* -Landscape (with vertical condensed) was always imaging off the
* page (image was too high causing it to be chopped at the top)
* -The Job dialogs FROM and TO line edit items were not always
* displaying or setting the insertion point correctly.
*
* Version 2.0d5 February 10, 1988 Harry Yee & Steve Glass
* The procedure PrintCheck and its corresponding routines have been commented out
* because none of this code was really being used and it caused problems while
* printing to a spooler.
*
* Version 2.0d6 March 1, 1988 Suki Lee & Steve Glass
* Bug fix: Move the code to initialize the port and to reset the printer from
* LLDText to LLDStartUp. Deleted the same code from InitPrinting (called at the
* beginning of LLDBitMap). Now the port is initialized only once at startup time
* and not each time LLDText and LLDBitMap is called.
* Commented out CheckPrinter routine since it is not being called by anyone.
* Also commented out InitSSC and replaced calls to it with calls to ResetPrinter
* since the two functions similarly.
* The escapes codes for resetting the printer has been modified to used the
* default character, Elite, rather than Pica since the printer is optimized to
* print in Elite.
*
* Version 2.0d7 March 25, 1988 Suki Lee
* Bug fix: added filtering of c cedilla in LLDText so the character will be
* printed in draft mode.
*-------------------------------------------------------------------------------
*
* Version 2.1d2 May 5, 1988 Suki Lee
* Bug fix:
* - Added code to check status of AppleTalk connected printer. Puts up
* appropriate message to warn user of condition.
* - LQ no longer ejects an extra page for each page printed.
* Version 2.1d3 May 9, 1988 Suki Lee
* Bug fix:
* - Added code to ask the printer for an ID which indicates if a color ribbon
* is installed. If printing to an ImageWriter I or if no color ribbon is
* installed, the color selection on the job dialog is overridden. The routine
* CheckPrinter which was removed in 2.0d6 has been modified and added back.
*
* Version 2.1d4 June 8, 1988 Suki Lee
* Bug fix:
* - Added error checking for opening connection to device.
*
* Version 2.1d5 June 24, 1988 Suki Lee
* Bug fix:
* - Took out branch for background printing in LLDStartup which doesn't clean
* up the stack properly.
*-------------------------------------------------------------------------------
*
* Version 2.2d1 July 25, 1988 Suki Lee
* Bug fix:
* - Added a flag to indicate when not to display status message, as in the case
* of PrPixelMap where the dialog box is not put up.
*
* Version 2.2d2 July 26, 1988 Suki Lee
* Bug fix:
* - When printing in Better Text mode, some color text were not printed when
* color is not selected, no color ribbon is installed in an ImageWriter II,
* or printing to an ImageWriter I. Fixed the logic in MakePattern, which
* calculates the dot pattern for color mapping, so the correct branch is taken
* for 640 mode high resolution. Also changed the names of some of the branch
* labels for clarity.
*
* Version 2.2d3 August 5, 1988 Suki Lee
* Bug fix:
* - AppleTalk will not return from a synchronous write if something happened to
* the device while the write is in progress. This poses a problem for error
* conditions such as out of paper for an AppleTalk connected ImageWriter. As
* per Greg Seitz, recovery is possible if asynchronous writes are used. This
* change is made in the subroutine PrDevWrite. Also rewrote the loop logic in
* this routine because it was wasteful.
* - Use GetCursorAd before the WaitCursor call and use SetCursor instead of
* InitCursor when done to restore the original cursor.
*
* Version 2.2 (Claris) October 15, 1988 Scott Lindsey (MSL)
* Bug fix:
* - Added code to calculate correct printer resolution for Landscape mode.
* Hacks: (work-arounds that are really incorrect code.)
* - PrOpenDoc no longer calls PrValidate; this so the user can poke values
* (such as a different page size) into the print record.
* - So that the above is of any use, PrPrintIt looks at the first rpage
* instead of PrInfoPt when calculating # of bands to print per page.
*
* Version 2.2.1 (Claris) December 12, 1988 Scott Lindsey (MSL)
* Speed Optimization:
* - PrPicFile: Instead of always using a 10K buffer for printing the band into,
* as large a buffer as possible up to 64K is used. This significantly increases
* the speed of printing bitmaps at the cost of some memory.
* This also required some code be moved from CiXMetrics to a seperate routine
* that can be called just after allocating the memory.
* Safety Check:
* - PrPicFile: Before printing, a 64K buffer is allocated then freed to see if
* there is enough memory for Quickdraw to (potentially) use.
* User friendliness:
* - An error message routine for printing 'not enough memory' type messages into
* the status box. A delay loop allows the user to read the message before it
* continues on to whatever nastiness will follow.
* Feature:
* - There is now a Darker checkbox that allows the user to specify
* double overstrike in non-draft mode printing.
* This has been accomodated in the print record, etc.
*
*****************************************************************
*****************************************************************
*
* Copyright 1986-1988
* Apple Computer, Inc.
* All Rights Reserved
*
*****************************************************************
* Absaddr on
* Keep IW
; MCOPY iw.macros
Print off
if (&FINDSYM(&SYSGLOBAL,'DUMPIT')) THEN
include 'm16.stack'
include 'm16.cmp'
include 'all.macros'
include 'iw.macros'
DUMP 'iw.sym'
GOTO .quit
else
LOAD 'iw.sym'
endif
Print on
;------------------------------------------------------------
;
; Global Equates
;
US EQU 0
FR EQU 1
Pays EQU US
VersionNb EQU $0202 ; Version 2.2
;------------------------------------------------------------
;
; error codes
;
PortNotOn EQU $1302
NoPrintRecord EQU $1303
PntrConFailed EQU $1308
True EQU $FFFF
False EQU $0000
ENTRY PrintDefault ;_PrDefault
ENTRY PrValidate
ENTRY PrStlDialog
ENTRY PrJobDialog
ENTRY PrDrvrVer
ENTRY PrOpenDoc
ENTRY PrCloseDoc
ENTRY PrOpenPage
ENTRY PrClosePage
ENTRY PrPicFile
ENTRY PrError ;;;;;dummy for now;;;;;;
ENTRY PrError
ENTRY PrSetError
ENTRY PrChanged
ENTRY PrPixelMap
ENTRY PrPixelMap ;;;;;dummy for now;;;;;;;
ENTRY LLDBitMap
ENTRY LLDSetPenPos
ENTRY LLDText
ENTRY LLDBitMap
ENTRY LLDSetPenPos
ENTRY LLDText
ENTRY LLDShutDown
ENTRY LLDSetQuality
ENTRY LLDSetColor
ENTRY LLDStartup
ENTRY LLDSetPageRect
ENTRY LLDSetMode
ENTRY Print_Test
; ENTRY ButtonState
ENTRY OpenInfoPrepare
ENTRY OurGetHandle
ENTRY StartLLD
ENTRY CloseInfo
ENTRY NewPage
; ENTRY DeadLoc
; ENTRY StyleRect
; ENTRY StyleWidth
; ENTRY JobDTemplate
; ENTRY JDRBO
; ENTRY JDRB10
; ENTRY L1
; ENTRY L2
; ENTRY NamePos
; ENTRY SlashStr
; ENTRY J1StrNum
; ENTRY J1StrList
ENTRY JobFilter
; ENTRY CopieFinalValue
; ENTRY FromFinalValue
; ENTRY ToFinalValue
; ENTRY IfCancelled
; ENTRY EventRecord
; ENTRY EvtWhat
; ENTRY EvtMsg
; ENTRY LandSC_P
; ENTRY Portrait_P
; ENTRY Pixel640
; ENTRY Pixel320
; ENTRY Portrait_R
; ENTRY LandSC_R
; ENTRY DstBitR1
; ENTRY DstBitF1
; ENTRY DstBitR2
; ENTRY DstBitF2
ENTRY StyleDialog
ENTRY JobDialog
; ENTRY JDRBO
; ENTRY JISTRNum
; ENTRY JIPosList
; ENTRY JIStrList
; ENTRY PixelWidth
; ENTRY Istrnum
; ENTRY Iposlist
; ENTRY Istrlist
; ENTRY OKrect
; ENTRY OKStr
; ENTRY CancelRect
; ENTRY CancelStr
; ENTRY ARectList
; ENTRY AStrList
; ENTRY JDRB0
; ENTRY AStrNum
; ENTRY PP_Portrait
; ENTRY PP_Landsc
; ENTRY PtrList
ENTRY StyleFilter
; ENTRY EvtWhere
; ENTRY InfoWidth640
; ENTRY InfoWidth320
; ENTRY InforRect
; ENTRY InfoWindow
; ENTRY InfoPort
; ENTRY InfoStrPos
; ENTRY InfoStrPrep
; ENTRY InfoStrDraft
; ENTRY InfoDPort
; ENTRY PrintProcess
; ENTRY EraseInfoRect
; ENTRY InfoStrBuffer
ENTRY PrPrintIt
ENTRY PrAbortCheck
ENTRY CallIdleProc
ENTRY InsertPaperAlert
; ENTRY EvtMods
; ENTRY AlertTemp640
; ENTRY AlertTemp320
; ENTRY InfoRect
ENTRY NoShowMessage
ENTRY GetStatus
ENTRY PStatus
ENTRY ShowErr
ENTRY ProcsTable
ENTRY DraftFlag
ENTRY iPrErr
IMPORT INFORECT
IMPORT ALERTTEMP320
IMPORT ALERTTEMP640
IMPORT EVTMODS
IMPORT INFOSTRBUFFER
IMPORT ERASEINFORECT
IMPORT PRINTPROCESS
IMPORT CancelStrPrint
IMPORT CancelStrPos
IMPORT LOWMEMMSG
IMPORT INFODPORT
IMPORT INFOSTRDRAFT
IMPORT INFOSTRPREP
IMPORT INFOSTRPOS
IMPORT INFOPORT
IMPORT INFOWINDOW
IMPORT INFORRECT
IMPORT INFOWIDTH320
IMPORT INFOWIDTH640
IMPORT EVTWHERE
IMPORT PTRLIST
IMPORT PP_LANDSC
IMPORT PP_PORTRAIT
IMPORT ASTRNUM
IMPORT JDRB0
IMPORT ASTRLIST
IMPORT ARECTLIST
IMPORT CANCELSTR
IMPORT CANCELRECT
IMPORT OKSTR
IMPORT OKRECT
IMPORT ISTRLIST
IMPORT IPOSLIST
IMPORT ISTRNUM
IMPORT PIXELWIDTH
IMPORT JISTRLIST
IMPORT JIPOSLIST
IMPORT JISTRNUM
IMPORT DSTBITF2
IMPORT DSTBITR2
IMPORT DSTBITF1
IMPORT DSTBITR1
IMPORT LANDSC_R
IMPORT PORTRAIT_R
IMPORT PIXEL320
IMPORT PIXEL640
IMPORT PORTRAIT_P
IMPORT LANDSC_P
IMPORT EVTMSG
IMPORT EVTWHAT
IMPORT EVENTRECORD
IMPORT IFCANCELLED
IMPORT TOFINALVALUE
IMPORT FROMFINALVALUE
IMPORT COPIEFINALVALUE
IMPORT J1STRLIST
IMPORT J1STRNUM
IMPORT SLASHSTR
IMPORT NAMEPOS
IMPORT L2
IMPORT L1
IMPORT JDRB10
IMPORT JDRB11
IMPORT JDRBO
IMPORT JOBDTEMPLATE
IMPORT STYLEWIDTH
IMPORT STYLERECT
IMPORT DEADLOC
IMPORT BUTTONSTATE
IMPORT JIPosList
IMPORT CoverOpenStr
IMPORT OffLineStr
IMPORT PaperJamStr
IMPORT PaperOutStr
IMPORT MyStdText
IWD PROC
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;
;
; Vector to appropriate printer driver routine based on value passed in X-Reg.
;
;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
jmp (PrProcList,x) ;Vector to correct routine
PrProcList DC.L PrintDefault ;_PrDefault
DC.L PrValidate
DC.L PrStlDialog
DC.L PrJobDialog
DC.L PrDrvrVer
DC.L PrOpenDoc
DC.L PrCloseDoc
DC.L PrOpenPage
DC.L PrClosePage
DC.L PrPicFile
DC.L PrError ;;;;;dummy for now;;;;;;
DC.L PrError
DC.L PrSetError
DC.L PrChanged
DC.L PrPixelMap
DC.L PrPixelMap ;;;;;dummy for now;;;;;;;
InvalidPr rtl
ENDP
include 'e16.dialog'
include 'LLD.ASM'
include 'HLD.ASM'
.quit
END