Mercurial > hg > Members > kono > nitros9-code
diff 3rdparty/utils/view/view.a @ 1706:6b23465701c0
Tim Kientzle's VIEW
author | boisy |
---|---|
date | Tue, 10 Aug 2004 23:46:24 +0000 |
parents | |
children | b7fb6a9aead4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3rdparty/utils/view/view.a Tue Aug 10 23:46:24 2004 +0000 @@ -0,0 +1,226 @@ +* +* View: view a picture file on a window screen +* +* Global labels: +* main: Main entry point, called by root.a +* _exit: Exit with no error +* _error: Exit with error code in B +* _abort: Clean up and then exit with no error. +* E$Format: Exit with message about illegal file format. +* +check macro + pshs b,cc + ldb #\1 + os9 F$PErr + puls b,cc + endm + + ifp1 + use /dd/defs/os9defs.a + endc + +StdOut equ 1 +StdErr equ 2 + + psect View_a,0,0,0,0,0 + +main: + lbsr SetSig Install signal trap + com <abort Set for abort on signal. + lbsr select Send select code to current screen. + + pshs a + pshs y + os9 F$ID Get our PID, for use with graphics + puls y + sta <PID + lbsr killbuffs Kill off buffers in our group before we start + lbsr saveopts Get StdOut options, and save them. + puls a + + pshs d,x + leax end,y Set up free space pool. + stx <MemTop + pshs x + tfr s,d + subd #stacksize + subd ,s++ + std <MemSiz + puls d,x + + lbsr Parse Parse command line options, open input file + + lda <format + pshs y + lbsr showpic Display the picture + puls y + + lbsr bell + lbsr sendsig + + lbsr keywait Wait for a keypress. + lbsr DoSave Save the picture. +_abort: + lbsr sendsig + lbsr cleanup Cleanup-- Select Stdout, turn on cursor, restore options. + lbsr killbuffs Kill any buffers we used. + +* Exit with no error +_exit: + clrb +_error: + OS9 F$Exit + +BEL fcb $07 + +bell + pshs a,b,x,y + tst <SigPID + bne bellend Don't bell if we should send a signal. + lda <outpath + leax BEL,pcr + ldy #1 + os9 I$Write +bellend + puls a,b,x,y,pc + +sendsig + pshs a,b + lda <SigPID + beq nosig + ldb <SigOut + os9 F$Send + lbcs _error + clr <SigPID +nosig + puls a,b,pc + +E$Format: + leax ErrFmt,pcr + ldy #ErrFmt2-ErrFmt + bra DoError +ErrFmt fcc "Illegal file format." + fcb $0d +ErrFmt2 +DoError + lda #StdErr + os9 I$WritLn + ldb #1 + bra _error + +* +* Expects allocation size requested in D, +* returns pointer in X. Error is generated if not enough mem. +malloc: + pshs a,b,y + clra + clrb + os9 F$Mem + lbcs _error + std <oldmemsize + pshs y + + addd 2,s + os9 F$Mem + lbcs _error + std <newmemsize + puls x + puls a,b,y,pc + +unmalloc: + pshs a,b,y + ldd #0 + os9 F$Mem + lbcs _error + cmpd <newmemsize + bne unmalend + ldd <oldmemsize + os9 F$Mem + lbcs _error +unmalend + puls a,b,y,pc + +*************************************** +* * +* Select according to picture format * +* * +*************************************** + +SPTable + fcb MAXFormat + lbra MAXshowpic MAXshowpic also handles all the pmodes + fcb P00Format + lbra MAXshowpic + fcb P01Format + lbra MAXshowpic + fcb P10Format + lbra MAXshowpic + fcb P11Format + lbra MAXshowpic + fcb P20Format + lbra MAXshowpic + fcb P21Format + lbra MAXshowpic + fcb P30Format + lbra MAXshowpic + fcb P31Format + lbra MAXshowpic + fcb P40Format + lbra MAXshowpic + fcb P41Format + lbra MAXshowpic + fcb ARTFormat + lbra MAXshowpic + fcb MGEFormat + lbra MGEshowpic + fcb MGE640Format + lbra MGEshowpic + fcb CM3Format + lbra CM3showpic + fcb CLPFormat + lbra CLPshowpic + fcb PUBFormat + lbra CLPshowpic + fcb VEFFormat + lbra VEFshowpic + fcb PIX256Format + lbra PIXshowpic + fcb PIX128Format + lbra PIXshowpic + fcb PIXFormat + lbra PIXshowpic + fcb IMGFormat + lbra IMGshowpic + fcb RATFormat + lbra RATshowpic + fcb STFormat + lbra STshowpic + fcb MACFormat + lbra MACshowpic + fcb RLEFormat + lbra RLEshowpic + fcb GIFFormat + lbra GIFshowpic + fcb GIFBWFormat + lbra GIFshowpic + fcb MAXCMPFormat + lbra MAXshowpic + fcb ARTCMPFormat + lbra MAXshowpic + +* +* Does a jump to the appropriate subr entry point. +* Expects picture format code in A. +* +showpic + pshs x Space to store jump destination + pshs x Save X register + leax SPTable-3,pcr +sploop + leax 3,x + cmpa ,x+ Does the format match? + bne sploop + stx 2,s Jump address is table entry + puls x,pc restore X and jump. + + endsect