2IMGWOOF@@@ 8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J ۈJJm  JFȱJGJKaȄM ' 5aaNNJFLGJ`aa8aa XL LG &PRODOS`DaElH$?EGvѶK+`L XX LU ŠϠĠӥS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RFPETOOLS7 ' @FPE.6502p6APPLEWORKS.FPE8p 6FPE.IIGS2p6APPLESOFT46ICONS86-RELEASE.NOTES pDz/*FPE.SYSTEM)&Ʋ:&PRODOS& }< 4 APPLEWORKS.FPE^#ѲѲFINDER.ROOT\ֲ;ܲ FINDER.DATA]ֲ,7FPE.6502vղ' 'APW.ORCA.FPE8 p ղFINDER.DATArVp6MERLIN8.FPEsp ղ!APPLEWORKS.FPE8vղ' '-APLWORKS.TEST G$ƲƲFINDER.DATA=p6(SEG.23.1 Ų,!Ų,(SEG.23.2 o!o(SEG.23.3 o!o(SEG.23.4 o!o(SEG.23.5 o!o(SEG.23.6 o!o(SEG.23.7 o!o(SEG.EL.1#Ųܲ(SEG.EL.2#/: /: (SEG.EL.3#/: /:   CA1NENEP nSI ?Vj?ij@c4)Q@X@?<~/?ij@b4)Q@X@?K+?APW.ORCA.FPE8vղ' '&E8.FPE (4Ʋ%Ʋ% FINDER.DATA(>pDz )FPESUBS.A)Dz'Dz' +FPESUBS.ASM.7Ʋ$Dz( +FPESUBS.OBJKUDz(@Dz( FSLOT8N  *FSLOT8.ASMO  &M8.FPEX1Ʋ$Dz  !"#$%&'* INNOVATIVE SYSTEMS 13 JUNE 1988 *************************************************** * * DEFINITION FILE FOR CONSTANTS USED TO CALL * THE iS FPE. * * COPYRIGHT (C) 1988 BY INNOVATIVE SYSTEMS * *************************************************** ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ * ;............................................................... ; ; MC68881 PRECISION CODES ; USED IN THE M8.FPE MACROS TO GENERATE FPE ; COMMAND WORDS IN MC68881 FORMAT ; ; THESE CODES PROVIDE THE PRECISION OF THE OPERATION. ; THEY ARE NOT REQUIRED IN REGISTER-TO-REGISTER ; OPERATIONS. ;............................................................... FEXT EQU $48 80-BIT PRECISION FDBL EQU $54 64-BIT PRECISION FSGL EQU $44 32-BIT PRECISION FLNG EQU $40 32-BIT INTEGER FWRD EQU $50 16-BIT INTEGER ;............................................................... ; ; MC68881 OP CODES ; ; MEMxxx macros require a memory location as the source ; xxxMEM macros require a memory location as the destination ; ;............................................................... FMOVE EQU $00 MOVE MOVE SOURCE INTO OR OUT ; OF AN FPE REGISTER FINT EQU $01 INTEGER PART GENERATE INTEGER PART OF SOURCE AND ; STORE IN DESTIANTION REGISTER FSINH EQU $02 SINH GENERATE SINH OF SOURCE AND ; STORE IN DESTINATION REGISTER FSQRT EQU $04 SQUARE ROOT GENERATE SQUARE ROOT OF SOURCE ; AND STORE IN DESTINATION ; REGISTER FLOGNP1 EQU $06 LOGN(1+X) GENERATE NATURAL LOG OF SOURCE ; PLUS 1 AND STORE IN DESTINATION ; REGISTER FETOXM1 EQU $08 ((E**X)-1)) GENERATE VALUE AND SUBTRACT 1 AND ; STORE IN DESTINATION RESGISTER FTANH EQU $09 TANH GENERATE TANH OF SOURCE AND STORE ; IN DESTINATION REGISTER FATAN EQU $0A ARCTAN GENERATE ARCTAN OF SOURCE AND STORE ; IN DESTINATION REGISTER FASIN EQU $0C ARCSIN GENERATE ARCSIN OF SOURCE AND STORE ; IN DESTINATION REGISTER FATANH EQU $0D ARCTANH GENERATE ARCTANH OF SOURCE AND STORE ; IN DESTINATION REGISTER FSIN EQU $0E SINE GENERATE SINE OF SOURCE AND STORE ; IN DESTINATION REGISTER FTAN EQU $0F TANGENT GENERATE TANGENT OF SOURCE AND STORE ; IN DESTINATION REGISTER FETOX EQU $10 E**X GENERATE NATURAL POWER OF SOURCE AND ; STORE IN DESTINATION REGISTER FTWOTOX EQU $11 2**X GENERATE SOURCE TO THE POWER OF 2 ; AND STORE IN DESTINATION REGISTER FTENTOX EQU $12 10**X GENERATE SOURCE TO THE POWER OF 10 ; AND STORE IN DESTINATION REGISTER FLOGN EQU $14 LOGN GENERATE NATURAL LOG OF SOURCE AND ; AND STORE IN DESTINATION REGISTER FLOG10 EQU $15 LOG10 GENERATE LOG10 VALUE OF SOURCE AND ; STORE IN DESTINATION REGISTER FLOG2 EQU $16 LOG2 GENERATE BINARY LOG OF SOURCE AND ; STORE IN DESTINATION REGISTER FABS EQU $18 ABSOLUTE VALUE GENERATE ABSOLUTE VALUE OF SOURCE ; AND STORE IN DESTINATION REGISTER FCOSH EQU $19 COSH GENERATE COSH OF SOURCE AND STORE ; IN DESTINATION REGISTER FNEG EQU $1A NEGATE NEGATE SOURCE VALUE AND STORE IN ; DESTINATION REGISTER FACOS EQU $1D COSINET GENERATE ARCCOSINE OF SOURCE AND ; STORE IN DESTINATION REGISTER FGETEXP EQU $1E GET EXPONENT GENERATE THE EXPONENT OF THE SOURCE ; AND STORE IN DESTINATION REGISTER FGETMAN EQU $1F GET MANTISSA GENERATE THE MANTISSA OF THE SOURCE ; AND STORE IN THE DESTINATION ; REGISTER FDIV EQU $20 DIVIDE DIVIDE THE DESTINATION REGISTER BY THE ; SOURCE AND STORE IN THE DESTINATION ; REGISTER FMOD EQU $21 MODULO REMAINDER GENERATE THE MODULO OF THE ; DESTINATION REGISTER BY THE SOURCE ; AND STORE THE RESULT IN THE ; DESTINATION REGISTER, ALSO STORE ; THE QUOTIENT IN THE FPSR (STATUS ; REGISTER) QUOTIENT BYTE FADD EQU $22 ADD ADD THE SOURCE TO THE DESTINATION ; REGISTER AND STORE IN THE ; DESTINATION REGISTER FMUL EQU $23 MULTIPLY MULTIPLY THE DESTINATION REGISTER ; BY THE SOURCE AND STORE IN THE ; DESTINATION REGISTER FSGLDIV EQU $24 SINGLE DIVIDE DIVIDE THE DESTINATION REGISTER BY ; THE SOURCE AND STORE THE SINGLE ; PRECISION RESULT IN THE DESTINATION ; REGISTER FREM EQU $25 IEEE REMAINDER GENERATE THE MODULO REMAINDER OF THE ; VALUE IN THE DESTINATION REGISTER ; BY THE SOURCE, STORE THE RESULT IN ; THE DESTINATION REGISTER, STORE THE ; SIGN AND THE 7 LEAST SIGNIFICANT ; BITS OF THE QUOTIENT IN THE FPSR ; QUOTIENT BYTE FSCALE EQU $26 SCALE EXPONENT CONVERT THE SOURCE TO AN INTEGER AND ; ADD THAT TO THE DESTINATION REGISTER ; EXPONENT AND STORE IN THE DESTINATION ; REGISTER FSUB EQU $28 SUBTRACT SUBTRACT THE SOURCE FROM THE DESTINATION ; REGISTER AND STORE IN THE DESTINATION ; REGISTER FCMP EQU $38 COMPARE SUBTRACT THE SOURCE FROM THE DESTINATION ; REGISTER AND SET THE FLOATING POINT ; CONDITION CODES IN THE FPSR ACCORDINGLY FTST EQU $3A TEST SET THE FPSR CONDITION CODES IN ACCORDANCE ; WITH THE SOURCE FSINCOS EQU $30 SIMULTANEOUS FP SINE AND COSINE ; CALCULATES BOTH THE SINE AND THE COSINE ; OF THE SOURCE AND STORES THE RESULTS ; IN THE DESTINATION REGISTERS ;............................................................... ;............................................................... ; ; FPE BASE REGISTER OFFSET VALUES ; ;............................................................... COMMAND EQU $08 CONTROL EQU $02 RESPONSE EQU $00 OPERAND EQU $0C CONDITION EQU $0A SAVE EQU $04 RESTORE EQU $06 ; ; FPE FLOATING POINT REGISTER VALUES ; FP0 EQU $00 FLOATING POINT REGISTER #0 FP1 EQU $01 FP2 EQU $02 FP3 EQU $03 FP4 EQU $04 FP5 EQU $05 FP6 EQU $06 FP7 EQU $07 ; ; FPE VALUES FOR RETRIEVING CONSTATNS FROM ; FPE ROM ; FMOVEROM EQU $5C MOVE CONSTANT FROM ROM TO ; DESTINATION REGISTER RPI EQU $00 PI RL102 EQU $0B LOG10(2) REXP EQU $0C E RL2EXP EQU $0D LOG2(E) RL10EXP EQU $0E LOG10(E) RZERO EQU $0F 0.0 RLN2 EQU $30 LOGN(2) RLN10 EQU $31 LOGN(10) R10T0 EQU $32 10^0 R10T1 EQU $33 10^1 R10T2 EQU $34 10^2 R10T4 EQU $35 10^4 R10T8 EQU $36 10^8 R10T16 EQU $37 10^16 R10T32 EQU $38 10^32 R10T64 EQU $39 10^64 R10T128 EQU $3A 10^128 R10T256 EQU $3B 10^256 R10T512 EQU $3C 10^512 R10T1024 EQU $3D 10^1024 R10T2048 EQU $3E 10^2048 R10T4096 EQU $3F 10^4096 ; ; BIT DEFINITIONS IN MC68881 STATUS REGISTER ; ; READ THIS REGISTER TO DETERMINE WHETHER AN ; EXCEPTION HAS OCCURRED DURING FLOATING ; POINT OPERATIONS. ; ; ; >>>>byte 0 (Accrued Exception Byte) [Used for Halt] ; INEX_FPU EQU 8 Inexact DZ_FPU EQU $10 Divide by zero UNFL_FPU EQU $20 Underflow OVFL_FPE EQU $40 Overflow IOP_FPE EQU $80 Invalid operation ; ; >>>>byte 1 (Exception Status Byte) [Used for Exceptions] ; INEX1_FPU EQU $1 Inexact decimal input INEX2_FPU EQU $2 Inexact operation DZ1_FPU EQU $4 Divide by zero UNFL1_FPU EQU $8 Underflow OVFL1_FPU EQU $10 Overflow OPERR_FPU EQU $20 Operand error SNAN_FPU EQU $40 Signalling NaN ; ; >>>>byte 2 (Quotient Byte) [Used by MOD and REM] ; SIGN_FPU EQU 8 sign of quotient ; ; >>>>byte 3 (Condition Code Byte) ; NAN_FPU EQU $1 Not A Number INF_FPU EQU $2 Infinity ZERO_FPU EQU $4 Zero value NEG_FPU EQU $8 Negative Value ; ; BIT DEFINITIONS FOR MC68881 CONTROL REGISTER ; ; WARNING: USE OF THE EXCEPTION ENABLE BYTE ON THE ; MC68881 WILL CAUSE THE FPE TO DO ; UNPREDICTABLE ACTIONS. DO NOT USE ; THE FPCR FOR ENABLING EXCEPTIONS. ; ; >>>>>>byte 1 (Exception enable byte) ; ; *** same as FPSR byte 1 definitions ; ; >>>>>>byte 0 (Mode Control byte) ; ; mask bits ; RND2NR_FPU EQU $00 round to nearest RND2Z_FPU EQU $10 " zero RND2NI_FPU EQU $20 " negative inf RND2PI_FPU EQU $30 " positive inf ; PRE_FPU EQU $00 rounding precision extended PRS_FPU EQU $40 " " single PRD_FPU EQU $80 " " double ; ; >>>>>>bytes 2 and 3 not used ; sM8.FPE..OBJE8E8HE8.FPE..OBJE8E8*+,-`@,< FSLOT  -9\LAȹ]LA ^LAȹ_ 9 L9)LV  `8 L9)LV  `8 L9)LV  `8 L9)LV  `8 L,> FIXCALLL  ЭeЍeЍeЍeЍeЍ0IeeЍ6OkeЍ#<U)eЍ)B[` DOCOMMANDN!hhhhHH` DORCOMMANDNhhhh HH`DOLOADNhhhhΥPLa@LEDLETL,H ΍΍΍΍΍΍΍΍΍΍L΍΍LDOREADNhhhhΥPL@LDLTLF ΈΠΈΈΈΠΈΈέLέLΠΈΈέLέLΠΈΈέLέLΠΈΈέLέLΠΈΈέLέL/0123456789:;<=>?@ABCDEFGHIJ 65816 off *************************************************** * * 6502 ASSEMBLY CODE FILE FOR DETERMINING SLOT CONTAINING * THE iS FPE AND FOR ACCESSING THE FPE THROUGH THE MACRO * CALLS SUPPLIED WITH THE FPE. USE OF DIRECT ADDRESSING * TO ACCESS THE FPE I/O REGISTERS IS MANDATORY DUE * THE WAY THE 6502 ADDRESSES THE I/O BUS DURING INDIRECT * INDEXED AND INDEXED OPERATIONS. * * COPYRIGHT (C) 1989 BY INNOVATIVE SYSTEMS * *************************************************** ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ * * ;................................................................ ; ; The following code segment calls the software routines necessary ; to locate the FPE and to set the macro-called software routines ; to the locations necessary to access the FPE. It then loads the ; FPE with a 32-bit integer, adds the integer to itself, and ; retrieves the answer. Macros used: FINDFPE, MEMREG, and REGMEM. ; Requires M8.FPE and E8.FPE. ; ; WARNING: This software uses direct page locations $cc-$d1. ; ; FINDFPE ; cpx #$ff if x=$ff, then no FPE ; bne FPEFOUND ; jmp FPEMISSING ; ;FPEFOUND MEMREG FLNG,FMOVE,FP0,DATA1 ; REGREG FADD,FP0,FP0 ; REGMEM FLNG,FMOVE,FP0,DATA2 ;............................................................... ; ; fslot: determines the number of the first slot that contains ; an FPE. ; ; Input: None ; Output: X register contains the number of the slot (1-7) in binary ; $ff if FPE not found ;............................................................... ORG $4000 fslot start base equ $c000 slot 0 ROM address (not accessed) lda #0 sta $c00b turn on I/O slot ROM loop inc x1+2 increment slot ROM address high inc x2+2 byte inc x3+2 inc x4+2 ldy #5 x1 lda base,y check for 1st ID byte cmp a1 if OK, get next byte beq s1 jmp nextslot not OK so try next slot up s1 iny iny x2 lda base,y get 2nd byte cmp a2 beq s2 jmp nextslot s2 ldy #$0b x3 lda base,y get 3rd byte cmp a3 beq s3 jmp nextslot s3 iny x4 lda base,y get 4th byte cmp a4 beq s4 nextslot lda x4+2 cmp #$c7 beq done jmp loop s4 lda x4+2 get slot number and convert and #$07 to binary, return number tax in X register jmp return done ldx #$ff FPE not found, return $ff return lda #1 sta $c00a disable slot ROM rts ; ; FPE ID bytes ; a1 dc i1'56' a2 dc i1'24' a3 dc i1'1' a4 dc i1'175' end ;............................................................... ; ; fixcall does a little self-modifying code routine to allow direct ; access to the FPE registers. There are several locations to "fix" ; in the DoXXXX calls. ; ; Input: X register must contain the slot number for the FPE ; if X contains a $ff, then there is no FPE ;............................................................... fixcall start copy e8.fpe fbase equ $c080 slot addressing is $c0x0 where ; slot 1 uses $c090 as its ; low address raddr equ $cc direct page location to store ; return address daddr equ $ce direct page location to store ; data address temp equ $d0 direct page location for ; temporary data cpx #$ff if no slot, don't do anything bne dofix jmp fixdone ;........................................................... ; ; dofix: routine to multiply the slot number by 16 and add ; the resultant value to $c080 to get the slot access ; addresses. ; ; Input: X register containing slot number (1-7) in binary ;........................................................... dofix txa multiply slot number by 16 clc to allow addition to $C080 asl a asl a asl a asl a sta temp lda dc1+1 add slot values to existing clc sta and lda addresses adc temp for all FPE accesses sta dc1+1 sta drc1+1 lda dc2+1 clc adc temp sta dc2+1 sta drc2+1 lda dc3+1 clc adc temp sta dc3+1 sta drc3+1 lda dc4+1 clc adc temp sta dc4+1 sta drc4+1 lda dx1+1 add slot values to existing clc sta and lda addresses adc temp sta dx1+1 sta dx5+1 sta dx9+1 sta dxd+1 sta dr1+1 sta dr5+1 sta dr9+1 sta drd+1 lda dx2+1 clc adc temp sta dx2+1 sta dx6+1 sta dxa+1 sta dxe+1 sta dr2+1 sta dr6+1 sta dra+1 sta dre+1 lda dr3+1 clc adc temp sta dx3+1 sta dx7+1 sta dxb+1 sta dr3+1 sta dr7+1 sta drb+1 lda dx4+1 clc adc temp sta dx4+1 sta dx8+1 sta dxc+1 sta dr4+1 sta dr8+1 sta drc+1 fixdone rts ;............................................................... ; ; DoCommand: loads the FPE command into the command register ; ; Input: stack has FPE command ; Output: registers A and X have the FPE response information ; ;............................................................... DoCommand ENTRY pla save return address sta raddr pla sta raddr+1 pla get command data dc1 sta fbase+command pla dc2 sta fbase+command+1 dc3 ldx fbase+response check for come again dc4 lda fbase+response+1 bne dcdone cpx #$89 beq dc3 dcdone lda raddr+1 pha lda raddr pha rts ;............................................................... ; ; DoRCommand: routine to load reg->reg commands. ; ; Input: stack has FPE command ; Output: registers A and X have the FPE response information ; ;............................................................... DoRCommand ENTRY pla save return address sta raddr pla sta raddr+1 pla drc1 sta fbase+command pla drc2 sta fbase+command+1 drc3 lda fbase+response drc4 ldx fbase+response+1 asl a bcs drc3 drcdone lda raddr+1 pha lda raddr pha rts ;............................................................... ; ; Do?Load: routine to load the FPE registers with information ; from memory ; ; Input: Stack has address of data ; Register A has value for precision ; Output: Registers A and X contain the FPE response ;............................................................... DoLoad ENTRY sta temp precision pla sta raddr pla sta raddr+1 pla sta daddr+1 high byte data address pla sta daddr low byte data address ;............................................................... ; Load according to precision ;............................................................... lda temp cmp #FWRD bne c1 jmp DoWLoad c1 cmp #FLNG bne c2 jmp DoSLoad c2 cmp #FSGL bne c3 jmp DoSLoad c3 cmp #FDBL bne DoXLoad jmp DoDLoad DoXLoad anop load 80-bit FP value x1 lda #0 must always write 12 bytes dx1 sta fbase+operand dx2 sta fbase+operand+1 ldy #9 x3 lda (daddr),y dx3 sta fbase+operand+2 dey x4 lda (daddr),y dx4 sta fbase+operand+3 DoDLoad anop load 64-bit FP value ldy #7 x5 lda (daddr),y dx5 sta fbase+operand dey x6 lda (daddr),y dx6 sta fbase+operand+1 dey x7 lda (daddr),y dx7 sta fbase+operand+2 dey x8 lda (daddr),y dx8 sta fbase+operand+3 DoSLoad anop load 32-bit FP value or 32-bit ; integer ldy #3 x9 lda (daddr),y dx9 sta fbase+operand dey xa lda (daddr),y dxa sta fbase+operand+1 dey xb lda (daddr),y dxb sta fbase+operand+2 dey xc lda (daddr),y dxc sta fbase+operand+3 jmp drc3 do null release check DoWLoad anop load 16-bit integer ; (special case of write) ldy #1 xd lda (daddr),y dxd sta fbase+operand dey xe lda (daddr),y dxe sta fbase+operand+1 jmp drc3 do null release check ;............................................................... ; ; Do?Read: routine to load the memory with the with information ; from the FPE registers ; ; Input: Stack has address of data ; Register A has value for precision ; Output: Registers A and X contain the FPE response ;............................................................... DoRead ENTRY sta temp pla sta raddr pla sta raddr+1 pla sta daddr+1 high byte data address pla sta daddr low byte data address ;............................................................... ; Load according to precision ;............................................................... lda temp cmp #FWRD bne e1 jmp DoWRead e1 cmp #FLNG bne e2 jmp DoSRead e2 cmp #FSGL bne e3 jmp DoSRead e3 cmp #FDBL bne DoXRead jmp DoDRead DoXRead anop read 80-bit FP value dr1 lda fbase+operand must always read 12 bytes dr2 lda fbase+operand+1 ldy #9 dr3 lda fbase+operand+2 r3 sta (daddr),y dey dr4 lda fbase+operand+3 r4 sta (daddr),y DoDRead anop read 64-bit FP value ldy #7 dr5 lda fbase+operand r5 sta (daddr),y dey dr6 lda fbase+operand+1 r6 sta (daddr),y dey dr7 lda fbase+operand+2 r7 sta (daddr),y dey dr8 lda fbase+operand+3 r8 sta (daddr),y DoSRead anop read 32-bit FP value or 32-bit ; integer ldy #3 dr9 lda fbase+operand r9 sta (daddr),y dey dra lda fbase+operand+1 ra sta (daddr),y dey drb lda fbase+operand+2 rb sta (daddr),y drc lda fbase+operand+3 dey rc sta (daddr),y jmp drc3 do null release check DoWRead anop read 16-bit value ; (special case of read) ldy #1 drd lda fbase+operand rd sta (daddr),y dre lda fbase+operand+1 dey re sta (daddr),y jmp drc3 do null release check end LM @"@/@;@\@LA@ȹ]@LA@ ^@LA@ȹ_@ ;@ L@;@)LV@ `8L A ЭAeЍA5AAeЍA9AAeЍAregister operations * REGMEM register->memory operations * REGREG register->register operations * MOVEROM get constant from ROM * INCS input FPCR/FPSR register data * OUCS output FPCR/FPSR register data * FTESTR test value in register * FTESTM test value in memory * * ALL REQUIRE: * * E8.FPE definition file for FPE values * FPESUBS.A slot finder and I/O routines for * use with FPE (mandatory for * using these macros) - must * be in the /LIBRARY directory * if you use ORCA/M V4.1 * DIRECT PAGE LOCATIONS: $CC-$D1 * ;............................................................... ; ; Macro to find the number of the slot containing the FPE and to ; initialize the FPE access software. ; ; NOTE: Must be used to enable the access software. ;............................................................... macro &l FINDFPE jsr fslot jsr fixcall mend ;............................................................... ; ; Macro to do an operation with a value in memory and to ; store the result in a register in the FPE. ; ; &pre = Precision of the source value (FEXT for extended, ; FDBL for double, FSGL for single, FLNG for long ; integer, and FWRD for integer ; &ins = Instruction for FPE to perform (see E8.FPE for ; valid instructions) ; &fpm = Floating Point Data Register to be used as the destination ; register for the results of the instruction (FP0 - FP7) ; &dat = Address of the data value (data value must be in ; Apple order: i.e., least significant byte in the lowest ; memory location) ; ; Example: ; MEMREG FEXT,FMOVE,FP7,MEMLOC ; move extended ; precision value into ; data register 7 ; ; MEMLOC DC H'00 00 00 00 00 00 00 80 FF 3F' ;'1' ; ;............................................................... macro &l MEMREG &pre,&ins,&fpm,&dat &l lda #&ins+(&fpm|7) pha lda #&pre+(&fpm|-1) pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #&pre jsr DoLoad mend ;............................................................... ; ; Macro to do an operation with a value in floating point ; register and store the result in a memory location. ; ; &pre = Precision of the source value (FEXT for extended, ; FDBL for double, FSGL for single, FLNG for long ; integer, and FWRD for integer ; &ins = Instruction for FPE to perform (FMOVE is only valid operation) ; &fpm = Floating Point Data Register to be used as the source ; register for the move instruction (FP0 - FP7) ; &dat = Address of the data value (data value must be in ; Apple order: i.e., least significant byte in the lowest ; memory location) ; ; Example: ; REGMEM FDBL,FMOVE,FP7,MEMLOC ; move double precision ; data from data register ; 7 to memory ; ; MEMLOC DS 8 ; double = 8 bytes ;............................................................... macro &l REGMEM &pre,&ins,&fpm,&dat &l lda #&ins+(&fpm|7) pha lda #&pre+(&fpm|-1)+$20 pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #&pre jsr DoRead mend ;............................................................... ; ; Macro to do an operation with a value in floating point ; register and store the result in a floating point register. ; ; &ins = Instruction for FPE to perform (see E8.FPE for a list ; of valid instructions) ; &fpm = Floating Point Data Register to be used as the source ; data register for the instruction (FP0 - FP7) ; &fpn = Floating Point Data Register to be used as the destination ; register for the results of the instruction (FP0 - FP7) ; ; Example: ; REGREG FADD,FP7,FP6 ; add register 7 to register 6 ; and store result in 6 ;............................................................... macro &l REGREG &ins,&fpm,&fpn &l lda #&ins+(&fpm|7) pha lda #(fpm|2)+(&fpn|-1) pha jsr DoRCommand mend ;............................................................... ; ; Macro to do an operation with a value in floating point ; register and store the result in a memory location. ; ; &ins = Instruction for FPE to perform (see E8.FPE for a list ; of valid instructions) ; &fpm = Floating Point Data Register to be used as the source ; data register for the instruction (FP0 - FP7) ; &fpn = Floating Point Data Register to be used as the destination ; register for the results of the instruction (FP0 - FP7) ; ; Example: ; REGREGSC FP7,FP6,FP5 ; get sine and cosine of ; value in register 7, ; store sine in register 6, ; and store cosine in ; register 5 ;............................................................... macro &l REGREGSC &fpm,&fpn,&fpq &l lda #$30+(&fpq|7)+(&fpn) pha lda #(fpm|2)+(&fpq|-1) pha jsr DoRCommand mend ;............................................................... ; ; Macro to retrieve a constant value from the ROM in the FPE ; ; &constant = Constant in FPE to retrieve (see E8.FPE for a list ; of valid constants) ; &fpn = Floating Point Data Register to be used as the destination ; register for the results of the instruction (FP0 - FP7) ; ; Example: ; MOVEROM FPI,FP0 ; get extended precision value ; pi and store in register 0 ;............................................................... macro &l MOVEROM &constant,&fpm &l lda #&constant+(&fpm|7) pha lda #$5c+(&fpm|-1) pha jsr DoRCommand mend ;............................................................... ; ; Macro to enter control and status values into the MC68881 ; control and status registers. ; ; &fpm = Floating Point Data Register to be used as the destination ; data register for the instruction (FPCR or FPSR) ; &dat = Address of the data value (data value must be in ; Apple order: i.e., least significant byte in the lowest ; memory location) (see E8.FPE for valid bit settings) ; ; Example: ; INCS FPSR,MEMLOC ; reset FPE status register ; ; MEMLOC DC H'00 00 00 00' ; 4 bytes required ;............................................................... macro &l INCS &fpm,&dat &l lda #&fpm pha lda #$0 pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #FLNG jsr DoWrite mend ;............................................................... ; ; Macro to read control and status values from the MC68881 ; control and status registers. ; ; &fpm = Floating Point Data Register to be used as the source ; data register for the instruction (FPCR or FPSR) ; &dat = Address of the data value (data value will be in ; Apple order: i.e., least significant byte in the lowest ; memory location) (see E8.FPE for valid bit settings) ; ; Example: ; OUCS FPSR,MEMLOC ; read FPE status register ; ; MEMLOC DS 4 ; 4 bytes required ;............................................................... macro &l OUCS &fpm,&dat &l lda #&fpm pha lda #$20 pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #FLNG jsr DoRead mend ;............................................................... ; ; Macro to test a memory value and put the results in the FPSR. ; ; Test returns Not-a-number (NAN), +/- Infinity, Zero, Not Zero, ; Signalling NAN, positive, negative ; ; &pre = Precision of the source value (FEXT for extended, ; FDBL for double, FSGL for single, FLNG for long ; integer, and FWRD for integer ; &dat = Address of the data value (data value must be in ; Apple order: i.e., least significant byte in the lowest ; memory location) ; ; Example: ; FTESTM FSGL,MEMLOC ; test ; ; MEMLOC DC H'00 00 00 00' ; 4 bytes required ;............................................................... macro &l FTESTM &pre,&dat &l lda #FTST pha lda #&pre pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #&pre jsr DoLoad mend ;............................................................... ; ; Macro to test a register value and put the results in the FPSR. ; ; Test returns Not-a-number (NAN), +/- Infinity, Zero, Not Zero, ; Signalling NAN, positive, negative ; ; &pre = Precision of the source value (FEXT for extended, ; FDBL for double, FSGL for single, FLNG for long ; integer, and FWRD for integer ; &fpm = Floating Point Data Register to be used as the source ; data register for the instruction (FP0 - FP7) ; ; Example: ; FTESTR FP2 ; test value in data register 2 ;............................................................... macro &l FTESTR &fpm &l lda #FTST pha lda #(&fpm|2) pha jsr DoCommand lda #&dat pha lda #>&dat pha lda #&pre jsr DoLoad mend E,l$,*B APW.ORCA.FPE8 MERLIN8.FPEOMERLIN8.FPEvղ' '(E8.FPE.St-DzDzsFINDER.DATAɌ>pDzsFPESUBS.A.01Dz-`Dz-s,FPESUBS.A.02Dz-Dz-s-FPESUBS.ASM.S+Dz+Dz+s+FPESUBS.OBJUDz(@Dz(s.FPESUBS.OBJ.00WDz.UDz.s,FSLOT8.ASM.Sl DzDzs(M8.FPE.SN,DzXDzsuvwxyz{|}~ ̍ Ů é Ӎ  ɍ 宍 ٍ Ӣ ƍ Ĭ Ĭ ύ ҍ Ů č ծ ō Ŭ ō ũ Ǭ ҍ ή 卪 卪 䮍 č Ӭ ύ ծ Ӎ Ů ö Ӎ ͸ ō ö ԍ ή ҭϭҍ ӮԠՠԠ΍̠ՠԠ΍̠ՠԠ΍ǠՠԠҍĠՠԠҍ ö Ӎ 卪 ŠՠŠŠŠϠҠԍ ҍԠՠҠԠŠҠԠƠŠč ҍȠՠȠŠȠƠŠč ҍԠՠŠԠŠŠԠƠō ΍ ҍбՠΨةŠ̠ǠƠō ΍ ҍͱՠŪةŠŠĠԠč ҍȠՠȠŠȠƠŠĠō ҍΠՠΠŠΠƠŠĠō ҍΠՠàΠŠΠƠŠĠō ҍȠՠĠȠŠȠƠŠĠō ҍΠՠŠŠŠŠƠŠĠō ҍΠՠƠԠŠԠƠŠĠō ҍؠՠŪؠŠ̠ҠƠŠč ҍؠՠؠŠŠϠŠҠƠ ҍؠՠؠŠŠϠŠҠƠ ҍΠՠΠŠ̠ǠƠŠč ҍDZՠDZŠDZŠƠŠč ҍDzՠDzŠ٠ǠƠŠč ҍӠՠŠŠŠŠŠƠō ҍȠՠȠŠȠƠŠĠō ҍǠՠŠŠŠŠĠŠ΍ ҍӠՠĠԠŠŠƠŠč ҍРՠŠԠԠŠŠԠƠŠō ҍΠՠƠԠŠŠƠŠō ΍ ҍ֠ՠŠŠŠΠҠ٠ō ΍ ҍĠՠϠҠŠŠϠƠō ō ō Ҭ ō Ӎ ҩ ōĠՠĠĠŠŠϠŠ΍ ō ҍ̠ՠ٠٠ŠΠҍ ō ҍ֠ՠŠŠŠŠΠҠٍ ō ΍ ҍ͠ՠŠҠŠŠϠҠƠō ҍ Ŭ ΍ Ҭ ō ԍ ҍ ōŠՠŠԠԠŠŠϠΠҠč ҍ ΍ ҍ ՠԠԠŠŠ͠Š΍ ΍ ҍРՠŠԠŠŠ͠Š΍ ԍ ٍ̍ԠՠԠԠŠҠΠӠΠō ōӠՠӠРŠĠō ō Ӎ Ӎ ӍĠՠ̠ՠŠՠĠՠÍΠՠŠՠŠՠ ӍаՠǠԠҠбՠвՠгՠдՠеՠжՠзՠ ͍ ͍͠ՠàŠԠ͠͠ύ ҍɠՠɍ̱ՠ DZРՠàō̲РՠĠDzũ̱РՠŠDZũϠՠƠβՠΨαՠΨұ԰ՠްұԱՠޱұԲՠ޲ұԴՠ޴ұԸՠ޸ұԱՠޱұԳՠ޳ұԶՠ޶ұԱՠޱұԲՠ ޲ұԵՠà޵ұԱՠĠޱұԲՠŠ޲ұԴՠƠ޴ ö ҍ ΍ Ǎ Ӯ ݍՠՠՠՠՠՠŠՠŠՠ ݍرՠՠزՠՠڱՠՠ̱ՠՠ̱ՠՠՠՠՠՠ΍ ݍՠՠ􍪍 婍ՠՠՠՠՠՠՠՠ卪 ö ҍ Ǻ ō ö ύ Ӯ ō Ӯ 婍 󍪍 婍 󍪍IJՠՠIJՠՠ IJՠՠ IJՠՠ 捪ՠՠՠՠ ՠՠ 卪 䍪e4M8.FPE.A.FPE822HE8.FPE.A.FPE822 "/;\LAȹ]LA ^LAȹ_ ; L;)LV `8 " /;\A$])A1^6A=_B;IL;RVEFSLOTL ЭeЍՀeЍـeЍ܀eЍ߀eЍ1Jf́聭eЍ7Plҁ큭eЍ$=V؁*eЍ*C\Ł݁`hhhhHH`hhhh HH`hhhhΥPLa@LEDLETL, ΍΍΍΍΍΍΍΍΍΍Lۀ΍΍LۀhhhhΥPL@LɁDLɁTL ΈΠΈΈΈΠΈΈέLۀέLۀՏ"%ُ(.1܏4:=ߏ@FI1LJOfRUX̏[^dg7jPmlpsvҏy|$=V؏**C\ŏݏaEE,_ۏoۏ反ɏɏۏGFIXCALLIDOCOMMANDJDORCOMMAND̀FDOLOADFDOREADq 砍 ؠ젶 Ǎ ύ Ů Ǎ ɯ ō ɯ ԍ Ӯ é Ӎ  ɍ 宍 ٍ Ӣ ƍ Ĭ Ĭ ύ ҍ Ů č ծ ō Ŭ ō ũ Ǭ ҍ ή 卪 卪 䮍 č Ӭ ύ ծ Ӎ Ů Ů 卪 䍪 Ŭ Ǭ ͮ ͸ ŸŮ Ǻ 㭤䱮 ō ō č Ǎ ǬŬа Ĭаа ǬŬа Ů 卪 䍪Ǡ׍㰰͠䩍ᠣᠤ㰰⠻ɯϠ͍ 荠占 占ᱠˬ占󱍠ˠ 占᲍󲍠 占᳍󳍠 占ᴍ𠣤㷍占䠣ؠ栻Š䬠ᠣᠤ㰰ᠻ͍󍪍 󍪍ᱠ⠵Რ⠲᳠⠱ᴠ⠱䍍 󮍪 ō ō׍帮卍㰸卪 㰹 㠻卪 堻卪 䰠 ፍ栻獠卍 䍪 㰸 󮍪 ð썠썠썠썠㱫獠ᠻŠ㱫㱫㲫㍠㲫㲫㳫㍠㳫㳫㴫㍠㴫㴫獠ᠻ䫱򱫱򵫱򹫱䫱㍠᫱嫱򲫱򶫱᫱嫱򳫱㍠⫱򳫱򷫱⫱㍠㫱򴫱򸫱㫱󍍪 򍪍 č ׍堻፠򫱍 㱠č㲠ī㳠Š 㴠ū占㳍򫱍፠፠󍍪 签 󮍪 č ׍堻፠򫱍㱠č㲠ī㳠ō㴠ū썠㳍򫱍፠፠󍍪  ፪  ō׍፠፠򫱍፠򫱠፠󍪮 č㱍㱠Ǎ㲍㲠̍㳍㳠̍䍠䍍 卍ᠣ報čīᠨīᠨī 卍ᠨčᠨīᠨīᠨī ᠨčᠨīᠨīᠨī㳠덍 婍ᠨčᠨī㳠덍  󍪍 ፪  ō׍፠፠򫱍፠򫱠፠󍪮 č屍屠Ǎ岍岠̍峍峠̍䍠䍍 卍Ġ īīᠨīᠨ 卍čᠨīᠨīᠨīᠨ čᠨīᠨīᠨīᠨ㳠덍 卪 䩍čᠨīᠨ㳠덍 @"@/@;@\@LA@ȹ]@LA@ ^@LA@ȹ_@ ;@ L@;@)LV@ `8L A ЭAeЍA5AAeЍA9AAeЍA{@ij@Q4)Q@X4@?0@ij@P4)Q@X5@?-3_@ij@O4)Q@X6@?9p!@ij@N4)Q@X7@?^h㈘9@ij@M4)Q@X8@? @ij@L4)Q@X9@?: @ij@K4)Q@X:@?dpmo@ij@J4)Q@X;@?feT@ij@I4)Q@X<@?{*4@ij@H4)Q@X=@?Ř~@ij@G4)Q@X>@?@ij@F4)Q@X?@?⇑?N@ij@E4)Q@X  @@?&g@ij@D4)Q@X!̌@@?4)Q@X'̌C@?K>@ij@=4)Q@X( D@?7]oT@ij@<4)Q@X)̌D@?LjZʤ@ij@;4)Q@X* E@?t,@ij@:4)Q@X+̌E@?Gx@՞B@ij@94)Q@X, F@?p)@ij@84)Q@X-̌F@?ɿ;@ij@74)Q@X. G@? (@ij@64)Q@X/̌G@?֕s@ij@54)Q@X0 H@?E+ݽ@ij@44)Q@X1̌H@?LDO@ij@34)Q@X2 I@?kP@ij@24)Q@X3̌I@?{@ij@14)Q@X4 J@?" D@ij@04)Q@X5̌J@?԰%@ij@/4)Q@X6 K@?k@ij@.4)Q@X7̌K@?@ij@-4)Q@X8 L@?ݻ^@ij@,4)Q@X9̌L@?1 9@ij@+4)Q@X: M@?k%E}@ij@*4)Q@X;̌M@?V'@ij@)4)Q@X< N@?z@ij@(4)Q@X=̌N@?ڛ?D@ij@'4)Q@X> O@?8V{@ij@&4)Q@X?̌O@?K?812@ij@%4)Q@X@fffffP@?K X2 @ij@$4)Q@XAfffffFP@?( # @ij@#4)Q@XBfffffP@?A*MYB @ij@"4)Q@XCfffffP@?&]b @ij@!4)Q@XDfffffQ@?]L) @ij@ 4)Q@XEfffffFQ@?0`z @ij@4)Q@XFfffffQ@?51¾ @ij@4)Q@XGfffffQ@?Kr9 @ij@4)Q@XHfffffR@?bz @ij@4)Q@XIfffffFR@?xo!@ij@4)Q@XJfffffR@?~]7!@ij@4)Q@XKfffffR@?(ZIOU!@ij@4)Q@XLfffffS@?rr!@ij@4)Q@XMfffffFS@?b콲!@ij@4)Q@XNfffffS@?g%_¬!@ij@4)Q@XOfffffS@?腢!@ij@4)Q@XPfffffT@?T!@ij@4)Q@XQfffffFT@?"@ij@4)Q@XRfffffT@?׶."@ij@4)Q@XSfffffT@?uY;"@ij@4)Q@XTfffffU@?5YW"@ij@4)Q@XUfffffFU@?.s"@ij@4)Q@XVfffffU@?g6ڎ"@ij@4)Q@XWfffffU@?N'\"@ij@ 4)Q@XXfffffV@?1EĶ"@ij@ 4)Q@XYfffffFV@?ԡB"@ij@ 4)Q@XZfffffV@?v_m"@ij@ 4)Q@X[fffffV@?a#@ij@ 4)Q@X\fffffW@?L1#@ij@4)Q@X]fffffFW@??`3L#@ij@4)Q@X^fffffW@?$ f#@ij@4)Q@X_fffffW@?3d #@ij@4)Q@X`fffffX@?6*#@ij@4)Q@XafffffFX@?{S6#@ij@4)Q@XbfffffX@?bq #@ij@4)Q@XcfffffX@?m#@ij@4)Q@XdfffffY@?9<2$@ij@4)Q@;"{z$*B APLWORKS.TEST6SEG.23.1RSEG.23.2E5BSEG.23.3T5SEG.23.4.5SEG.23.5AUBSEG.23.6SUSEG.23.7 USEG.EL.1uBSEG.EL.2uSEG.EL.3uSEG.EL.4BSEG.EL.5SEG.EL.6SEG.EL.7K9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +㭝⭞᭟L+ɉ` `9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # !"#$% Innovative Systems P.O. Box 444 Severn, MD 21144-0444 301/987-8688 301/459-4599 15 June 1989 Subject: FPE Tools Release Version 2.1 This disk contains major upgrades to the capabilities of the tools originally provided with the Floating Point Engine: * A completely revised FPE Toolset for the Apple IIGS. The new Toolset now handles all SANE calls rather than most as in the the original version, thus speeding up decForm conversions, tests, compares, and similar operations. * A patch for Appleworks Classic to vector all spreadsheet mathematics to the FPE. THe program FPE.SYSTEM will automatically load these files in the proper locations. Please ensure that you install the FPE Toolset on each disk that you use as a GS/OS or ProDOS 16 system disk. With this upgrade, we also have provided coding examples and some benchmark programs. The c %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +㭭⭮᭯L+ɉ` `9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +㭽⭾᭿L+ɉ` `9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +L+ɉ` `9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +L+ɉ` ` 9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +L+ɉ` `9hhh)8 h8 hhhhhL $ x+ +8:$8 8L$  hZ$h[$ϭ8,@!8"H + *8Ly"8,A!h\$h]$ϭ880$8$ +8,B!ύ΍ +L!88 *L! *L!,C! *L! +8LO# LO#L#Z$έ[$ϭ8 88@h + +Ll"85$ +8 +Ll" 3+Ll",C! L+Ll" h+8 L'#L"΍8ύ8@0L"L" 8򩐍 + +L $ +88,# "#,# ##,# $#, # %#,!# )?8L%HH +) h H(L $h)H(L $HH +8,$ h)? L#,$,$ 8 8h)=L#,$ h)= L#@@h)= @H(` +HH$7,$L#,$ L#,$ h L$,$L#L#h)H(`@HH`HTD@Phtd`p @$$$(s%A%$$$$8`$Hʽ`$H`΍8ύ8L $88L $88L $hhϠ8Έ8Ό88L $hhϠ8Έ8έ$H$H8HHL!$hh 8L%hhϥHH8%`HH8,888 88l8 888,88`hhhhѮ8o%)  )L $ hZ$h[$h^$h_$hhӮ80$ɉ^$έ_$Ϯ8 *L% *L% +L% *҅و҅ؠL&008L&)ҩlҍ +(((((((((((( ()0L&(,((L&( (Ԣ譚() 0(L&蹗()jjjj 0() 0(L& 8؍((L&'(( L'N4000(&(L'I('(L'L'(,(&8(0 芍(L'(ة0(L'8ڥeڍ(L'莧(L'8((ȱ(((L'莧(ʆخ()@ڥ8؍((L'8ڍ((ؠȥّҭZ$έ[$ϭ(Э(ѠБΈʠ(БرБL $(((ڄۭ() y((ۭ()(ژ)jjjj(m((ڭ()(m(ȍ(m((``d,Xl (2) I)L $@L* ȱ0L*ЅȱЅȱe؅إi٥8إ٩P +ٍ؍ + +Lv*ȱ)I)#ȱ) I)ȱ)I)I)ݩL# +I)J)K)L)M)N)O)P)Q)R)S)T) +  +85$ +8 +L $ 3+L $ h+L $ L+L $P + +Lv* ΍΍΍΍΍΍΍΍΍΍L+΍΍L+ ΈέΈΈΈΠΈΈΈL+ΈL+` +L+ +L+ɉ` ` bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq  bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq(SEG.EL.4"#/: /: (SEG.EL.5&#/: /: (SEG.EL.6*#/: /: (SEG.EL.7.#/: /: #$% bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq'() bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq+,- bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\Lq/01 bө qөahhh8hhWhXӭ8j hYhZLLhҪWӅέXӅϩHЍ b {ӭ8LLLҔ ԩ qө qL ԩ qLҭ8LL$h΍[hύ\ӭ8L ԩH b {ө qӭYӅέZӅϩI b {ө  qө qө qө qөP bө qӭ[Ӆέ\ӅϩH b {L ԩH b {ө qӭYӅέZӅϩH b {ө qLҭWӅέXӅϩH b {өP bӭZӍYӍ qө qLҭWӅέXӅϩH b {ӭYӅέZӅϩH b {ө qLҩP bөA qөH bӭWӅέXӅ {өQ bө qөQ( bө qө qӭWӅέXӅϩh b ө bӭ`ӭ_ӭ^ӭ] qӥHH]LV*na*na*na*na*nanananaӭa 8 8`ɉ` ` ΍΍΍΍΍΍΍΍΍΍LqӠ ΈΈΈΈΈΈΈΈΈLqө]2Lqө\LqFPE.IIGSvղ' 'APW.ORCA.FPE163pղ2BENCHMARK[C7ղ2EXAMPLEfղ2FINDER.DATA`IJ*62FINDSLOTaղ ղ2FPETOOL.INITSm 2FRACTALSN!ղ2LISA816.FPE*ղ2MERLIN.FPEP# ղ2APW.ORCA.FPE16vղ' 2''M16.FPE4 ,8d9 3'E16.FPEL a356789:;<=>?@ABCDEFGHIJK*************************************************** * * MACRO DEFINITIONS FOR USE WITH THE iS FPE * INSTALLED IN A 65816-BASED APPLE II. * * COPYRIGHT (C) 1988 BY INNOVATIVE SYSTEMS * **************************************************** ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ * ; &L ---- LABEL FOR THE MACRO IN THE SOURCE ; CODE LINE, MUST BE UNIQUE TO EACH ; USAGE OF A MACRO IN A ROUTINE ; (MANDATORY) ; &INS -- INSTRUCTION TO FPE ; &FPM -- FLOATING POINT REGISTER NUMBER ; &ADDR - ADDRESS OF THE DATA VALUE (2 OR ; 3 BYTES) * ; ; MC68881 IS A LOCATION IN THE PROGRAM ; DIRECT PAGE WHICH CONTAINS THE ADDRESS ; OF THE FPE BASE REGISTER, IN THE FORM ; OF A THREE-BYTE ADDRESS WITH THE LOW ; ORDER ADDRESS BYTE FIRST ; * ; MOVE SINGLE PRECISION FP-REG TO MEM ; MACRO &L REGMEMS &INS,&FPM,&ADDR &L LDY #COMMAND LDA #$6400+(&FPM|7)+&INS XBA STA [>>>byte 0 (Accrued Exception Byte) [Used for Halt] ; INEX_FPU EQU 8 Inexact DZ_FPU EQU $10 Divide by zero UNFL_FPU EQU $20 Underflow OVFL_FPE EQU $40 Overflow IOP_FPE EQU $80 Invalid operation ; ; >>>>byte 1 (Exception Status Byte) [Used for Exceptions] ; INEX1_FPU EQU $100 Inexact decimal input INEX2_FPU EQU $200 Inexact operation DZ1_FPU EQU $400 Divide by zero UNFL1_FPU EQU $800 Underflow OVFL1_FPU EQU $1000 Overflow OPERR_FPU EQU $2000 Operand error SNAN_FPU EQU $4000 Signalling NaN ; ; >>>>byte 2 (Quotient Byte) [Used by MOD and REM] ; SIGN_FPU EQU 8 sign of quotient ; ; >>>>byte 3 (Condition Code Byte) ; NAN_FPU EQU $100 Not A Number INF_FPU EQU $200 Infinity ZERO_FPU EQU $400 Zero value NEG_FPU EQU $800 Negative Value ; ; BIT DEFINITIONS FOR MC68881 CONTROL REGISTER ; ; WARNING: USE OF THE EXCEPTION ENABLE BYTE ON THE ; MC68881 WILL CAUSE THE FPE TO DO ; UNPREDICTABLE ACTIONS. DO NOT USE ; THE FPCR FOR ENABLING EXCEPTIONS. ; ; >>>>>>byte 1 (Exception enable byte) ; ; *** same as FPSR byte 1 definitions ; ; >>>>>>byte 0 (Mode Control byte) ; ; mask bits ; RND2NR_FPU EQU $00 round to nearest RND2Z_FPU EQU $10 " zero RND2NI_FPU EQU $20 " negative inf RND2PI_FPU EQU $30 " positive inf ; PRE_FPU EQU $00 rounding precision extended PRS_FPU EQU $40 " " single PRD_FPU EQU $80 " " double ; ; >>>>>>bytes 2 and 3 not used ; end BENCHMARKvղ' 2'BCL\A"2IJ [)BENCHMARK]J  [,BENCHMARK.CC "   [FINDER.DATAɱW Ų[&READMEG$: [&SAVAGE>zIJ IJ [)SAVAGE.CC$2 IJ [SCL;"2IJ [asm benchmark.cc keep=b link 2/start b keep=benchmark delete b.= ^_`abcdefghijklmnopqrstuvwxyz{|}~Cb ,@ main bH H h ;8[iH"hHH "h " "H"zz"1z " zz HH"TzzzH"z H"8H"FzzH*h(, H("lzzz{i+k ;8[i"."zza"zz"zz"zz"zz "zzF"zz"zz"zz"i"E "zz : 8pI: Hih) "8zz""z{i+k ;8[i NԢ{i҅Т{i΅?{iH"zzzzz@{iH"zzzzz{iH"zzzzz"zz&"zzT"zzТ"dւB"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"{iH"zzzzz"L{iH"zzzzz"{iH"zzzzz"{iH"zzzzz֥8pI0̢"s";i"zzzz"zzzzТ"dր֥8pI̢""zzzz"zzzz"zz{i+k ;8[iz"zz}{i{i|@{iH"zzzzz""m{iH"zzzzz@"{iH"zzzzz{iH"zzzzz{iH"zzzzz""{iH"zzzzz;"zze"zzԪԨ"dԸԶԴԲ԰"zzzzz"m{iH"zzzzzԾԼԺ"{iH"zzzzz0Ů*ԾԼԺ"{iH"zzzzzԸԶԴԲ԰"{iH"zzzzz欥i8 pI5ԾԼԺ"{iH"zzzzzԾԼԺ"{iH"zzzzzԦԤ"ԾԼԺ";iԪԨ"zzzzԦԤ"zzzzԪԨ"d欥8pIԦԤ"ԪԨ"zzzzԦԤ"zzzz"{iH"zzzzz?"{iH"zzzzz{iH"zzzzz{iH"zzzzz"zz"zzԪԨ"dԸԶԴԲ԰"zzzzz"m{iH"zzzzzԾԼԺ"{iH"zzzzz0Ů*ԾԼԺ"{iH"zzzzzԸԶԴԲ԰"{iH"zzzzz欥i8 pI5ԾԼԺ"{iH"zzzzzԾԼԺ"{iH"zzzzzԦԤ"ԾԼԺD";iԪԨ\"zzzzԦԤq"zzzzԪԨ"d欥i8pI0ԦԤ"ԪԨ"zzzzԦԤ"zzzz"zz{i+k;iH H H "zzk ;8[id >$iHih  "Fzzzzz> > H H "h"z)^)"'))")"w8iH""ziHH몧"hh zu8iH""ziHH몧"hh ) )) x8iH""ziHH몧"hh ^8iH""ziH몧"h ) ) 䂕H" "iʆ & &H"zz 몧H hHh몧Q)DiHihHʆ & &H "hhHh8pIʆ & &H "hHh{i+k;8  Z;iH "k ;8[i{iH "hhhhh{i+k ;8[i{iH "hQhShUhWhYQ{i+k ;8[iA)Hh ٦H"&h8 {i+k;iHi H " zzzzzkcck&;8  &;iH "k;iH H "   zzzzzk;iH H "   zzzzzk ;8[i{i ";i  ) {i+k;iHi H " zzzzzk ;[ȗȗ+k8k ;8[iIHhHh>R{iHYhW'W"YW)HYW"h)/8 pIť8 G RHYW"hHHH"h8Hhh 8pI0GHhHhH"1zz  " Hh{i+k ;8[i$e9H""z88pI0 "{i+khhhhh"Hk:Hk ;8[i)H"z{i+k ;8[iH H "h {i+k ;8[i)H)|)8apI)8zpI) )iA8aH)8apI)8zpI) )iA8a5)3)){i+k ;8[i)g )IH" "/zz)J !) "3zzi8244pI Hh)HHH"g:zzzz:8pI0Hih)C' ) )  {i+k ;8[iHHHHhhhh{i+kH  8zzzz(k ;8[i "b/zzz{i+k")k ;8[iJd)%H"&hPePP[:8pI8HHihh ))H"*>zzz_zzzu)x:8pIFwuuwHHihh )wuuw)H"*>zzz~إ8pI[:8pI7Hih0 )0)H"*>zzzP8pI0P[:8pI8HHihh ))H"*>zzz_zzzq)x:8pIFsqqsHHihh )sqqs)H"*>zzz~ޥ8RpI[:8pI7Hih ) )H"*>zzz:{i+k;[[HH Z;[ȷȷ hhhz+k ;8[i<<1"9zz)Hh1^Hh)@ d6{iHfH"Ezzzz8pI H"H"zzHhH"Bd86dH"zzHhH"   H"h Hh HhfH"Ezzz8pI  {i+k ;8[i "2zzi8244pIͨ{i+k ;8[iQ)&Hh ө {i+kHZZ / (cJ) 䘃hhhk H;[ !*8jf H;[ ! Jf  zz+k ;8[i )7) "3zzH"lDz8pI0)BHH""HhHh{i+kHIhIk ;8[i) q)S)HH"/H"pI0 "Izz) {i+k ;8[i8pI(Hh ɦ{i+k H;[ jI I f  8 F F  I I zz+k" ;8[i)H"h))4)89pI0 )80)H"1Dz8ai {i+k H;[3II I I &&ff !  8  FfFf0II I I   zzzzzz+k" ;8[i8~pIw8opIh)IH"0H")D "@zzH8":9h)D)H"Fzzzz2d()H"*>zzzҥ8pI0PCH8"4z3 ޠH"&h8pI0/"IzzHe8"4zH8"4zzzzz8H"hHhH "&hH8pI08pI "Hzz8H"h{i+k H;[IIʩ FeIz+k ;8[ie5H"Hh:i(eH"pI0{i+k ;8[iiHih)H"&h{i+k ;8[i8pI0"@zz{iH"<zz ) "@zzn Hhꪠ "zzH"@zz H8{i+k ;8[iHh )Ӧ{i+k ;8[i"G;i{i+k ;8[i"G;i{i+k ;8[i"AH8"4z88pI H88pI"@zz8pIA"K"h "@zzdd]H8"K"h<i"K""pI0"K""pIiHH"Lzzzz"@zzki"K"hiHhHH"&h8"5zz{i+k ;8[i)RB H"pI0Hih ) )P"Izz)4)B {iHH"Fzzzz) )IH"0H")D "@zzx"Izz:8pI8HHihh ))H"*>zzz) ){i+k ;8[i)!)) H" "/zzH"^)DSH "&hH8pI08pI "Hzz{i+k ;8[i"Jz{i+k ;8[i"LzzzzHh8  HH6+"G4f"zzzzi$eH"pI0"Kzzz{iH"<zzH H "h Hh  "Kzzz{iH"<zzH H "h Hh  "Kzzz{iH"<zzH H "h Hh  GHh Hh{i+k ;8[i8ApI8ZpI08{i+k ;8[i8pI0"@zzv{iH"<zz P "zzH"@zz{i+k ;8[i8pI0"@zzm{iH"<zz F6ꪠ"zzzzzH"@zz8pI0 "@zzH8{iH"<zz {iH"<zzHHH"Nhhhhfꪠ"zzzzH"@zz fLkE{i+k ;8[i8pI0"@zz{iH"<zz ) "@zzn Hhꪠ"zzH"@zz H8{i+k ;8[iH8"4z8d "lDz8pI{i+k ;8[iܥn {iH"K;is )AU"G;i_p r )op 0?INLOHn r )Hs "h s {i+k ;8[iH "&h8pI0 Hh8 pI{i+k ;8[iH"&hHh)DH "&hH8pI08pI "Hzz82pI+HH"Fzzzz {i+k ;8[id   |tqJdJJ$JlJ\JTJDJTJ4J,J,JJ 쪧쏗"Hh 쪧쏗Hh" 쪧쏑"Hhm 쪧쏑Hh"*'QSQSQS:TST}TQ8f  | U{i+k ;8[i qH H " 8H"h)  "oH H " 8H"h)  " H"hHh {i+k ;8[i{i+k ;8[i) "[ Hh" ) H !) 8pI0Р  HhHh"A 8Hh oHohHh{i+k ;8[i3Hh& XXX8f |X{i+k ;8[i H"hHh {i+k ;8[i68pI0"^zzz6:8 68pI0}:8)f:8Hi8::hHHihh : 6:6[{i+k ;8[i  HhHh") L!) 8pI0ЭLdA 8Hh oHohHh{i+k ;8[i{i+k ;8[i"F;i  @ dL[{i+k ;8[i8 )@I@>"!`zzzz+"FzzHYhWW""1zz"Fzz"FzzHYhWH]h[W""1zz"1zz"FzzHah__"d eHihg_""1zz [\6\\\[8d |\HH@{i+k ;8[i"F;i @"F;i dR"F;i ,"F;i d@)@{iH"<zz  @H%)H) @gf檠쪠"zzzz檠Hh 檠 Hh{i+k ;8[id8pIGH ""h Hh ) 28Hh ")) " ") " " "8JpIC " " "{i+k ;8[id"FzzHah__")ꂡ) c))c) uH}h{y"N)CHhy"y"F)c c) eeom_"JH}h{y"!HYhWW""1zzH{H H "h Hh y  H@{i+k ,9RX[dgv}1    T F"%**/(36,: >(A(Dllp.s.v|aa  FFiE     > A D8V]&&T T$ANkLxL =JgtL9FcLp L5B_lL1>[LhL-:Wdss    " % ( 0 3 6 Q T W    m     ( 6 C L ;O ;R X e[ e^ t   m      ( \ i              & . 1 4 @ C F P ]              m( E R |      7EDHDK[\^\amqpqs&:>g j qF>>KOWlpx_sw   $.D GJQ$S)U.W3Y7Q:Q&&&&    =I@IEJ^>pYuW|WWYWYWGYWHHIGLGQVns1  +?GO` ch/  32441g: X [ ^b/ou&.*>_4h6k:9:969<e\gbibkbmZobeMM N N 3 P P!R!R!T!T!e!en!2!5!!!5!&A"vD"vN"yQ"y"#;#|#|,#~/#~<#?#:$4b$4$$$$%% %I;+%.%5%I;F%a5U%a5_%:9z%4%%4%:%E&l&;&&&&&&u((;(:)):)*****m"*(**U)**m"*%*(**3**)***J)+*+*$+g2*+*+&++&6,*>,*>"-*>-*>-4--6b.*>.*>M/*>///</</1/1/9,0Ec0v0000.1e1E111 1 12121414:33H3lD3334Q4`4Iw5z5}551D7.7J7@d7:97F7*>74"8&;8IS848488&8H$9999999X:&:@:<:@;';@;G;G<<A$<)<4c<@<K<<<<@<K<<<=K=!=%=-=H=KL=Q=U=]=k=|===L=@=K======>>&>5^>>I>F:?X?t?@?I?*>U@_@/}@@&@HAJ A&A6AL@AEAJASA\AjAoAAAAAAAABB*B-B0BKBB<TBpBBBBKB<BChCkCnCKC<CCDGDG DDD@D<DD@4E@IE<EE@E@E<%F<>FNsFF@FkEF@F<G@_GvG@GG4GlDGn Gn  HKHs :HGLHp PHr XHp tHOHwHn }Hr Hs Hs HHs Hs H&EI&I&IHIFJJJdJJJJ$JJlJJ\JJTJJDJJTJJ4JJ,JJ,JJJJSCSJSMSPSTSeShSkSoSwSSSTTT!T%T*T[TeTjTqTtTwTTTTTTTTTTTTU UQ USUQUSUQUSU:TUSUTU}TUQ/U U2U:UBUUUUUUVx->pi/2 Correct result = 1.000000e0 Result = %20.14e Start time = %.20s Stop time = %.20s Loop start time = %.20s Stop time = %.20s Trapezoidal rule for e^x 0->x->1 Correct result = 1.178281e0 (e-1) Result = %20.14e Start time = %.20s Stop time = %.20s Loop start time = %.20s Stop time = %.20s Integration test complete SYSF[PZVQSNOC^[P(Y[UPTSYS8]VF[XX-+ 0123456789ABCDEF0123456789abcdef0x0X-+ INFNAN(000)-+ .console.console.console.null.stdin.stdout.stderr.console 8HSBYTEWRKS@5h!@# ((((( H +BBw[PZVQ^[P(Y[UP 8] VF[XX ,@ DIRECT #include #include #include #include extern int errno; main() { MTStartUp(); printf("BYTE Small-C Floating-Point Coprocessor Benchmark\n"); printf(" modified by Innovative Systems to APW C\n"); printf(" 2 Sep 1988\n\n"); printf("This program consists of three tests. Please be patient\n"); printf("while they run. Using the standard SANE package, the\n"); printf("program will take about 1 hour and 30 minutes to complete.\n"); printf("Using the FPE tool set as a substitute for the SANE package,\n"); printf("the program will take about 20 minutes - with most of the\n"); printf("the time in the first test set.\n\n"); fourbang(); finteg(); printf("Press return to exit:"); getchar(); MTShutDown(); exit(0); } fourbang() { extended one, temp, ten; int i; int FCOUNT; char *time1,*time2,t1[20],t2[20]; FCOUNT = 20000; time1=&t1[0]; time2=&t2[0]; one = 1.0; ten = 10.0; temp = ten; printf("Start extended floating point basic math test\n"); printf(" 20000 iterations of eight groups of +,-,*,/\n"); printf(" Correct result = 1.000000e+1\n"); ReadAsciiTime(time1); for ( i = 0 ; i < FCOUNT ; ++i) { temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; temp = temp + one; temp = temp - one; temp = temp * ten; temp = temp / ten; }; ReadAsciiTime(time2); printf(" Result = %20.14e\n",temp); printf(" Start time = %.20s\n",time1); printf(" Stop time = %.20s\n",time2); /* check loop time */ ReadAsciiTime(time1); for ( i = 0 ; i < FCOUNT ; ++i ) ; ReadAsciiTime(time2); printf(" Loop start time = %.20s\n",time1); printf(" Stop time = %.20s\n",time2); printf(" Basic Math Test Complete\n\n"); return; } finteg() { extended two, pi2, temp, ex, sinex, accum, x; int ICOUNT, i; char *time1, *time2,t1[20],t2[20]; printf("Integration Tests -- 32,000 steps in each integration\n"); ICOUNT = 32000; time1=&t1[0]; time2=&t2[0]; two = 2.0; pi2 = pi(); pi2 = pi2/2.0; accum = 0.0; x = 0.0; temp = pi2/ICOUNT; printf("Trapezoidal rule for sin(x) 0->x->pi/2 \n"); printf(" Correct result = 1.000000e0 \n"); ReadAsciiTime(time1); for ( i = 0 ; i < ICOUNT+1 ; ++i ) { sinex = sin(x); accum = accum + sinex; if (( i != 0 ) && ( i != ICOUNT )) accum = accum + sinex; x = x + temp; } accum = accum * temp; accum = accum / two; ReadAsciiTime(time2); printf(" Result = %20.14e \n",accum); printf(" Start time = %.20s\n",time1); printf(" Stop time = %.20s\n",time2); /* calculate loop time */ ReadAsciiTime(time1); for ( i = 0 ; i < ICOUNT ; i++ ) ; ReadAsciiTime(time2); printf(" Loop start time = %.20s\n",time1); printf(" Stop time = %.20s\n",time2); /* Trapezoidal rule for e^x */ temp = ICOUNT; temp = 1 / temp; accum = 0.0; x = 0.0; printf("\nTrapezoidal rule for e^x 0->x->1 \n"); printf(" Correct result = 1.178281e0 (e-1)\n"); ReadAsciiTime(time1); for ( i=0 ; ijF>NEGXcdefgopsux{""hh|]8pI0dإ8pI0d֦sqHu)u)HH" hPeeeH{ip"- h" hR8R pIހRHeiޥ8RpI[:8pI7Hih ) )H"8)zzzu)x:8pIFwuuwHHihh )wuuw)H"8)zzz~إ8pI[:8pI7Hih0 )0)H"8)zzzP8pI0P[:8pI8HHihh ))H"8)zzz_zzzz"6zzki"<"- hiHhHH" h8"{$zz{i+k ;8[i";z{i+k ;8[i"9>zzzzHh8! # ##!HH6+"G4f" zzzzi$eH"pI0"v=zzz{iH"3zzH H "h Hh  "v=zzz{iH"3zzH H "h Hh  "v=zzz{iH"3zzH H "h Hh  ;Hh Hh{i+k ;8[i8pI0"6zzv{iH"3zz P " zzH"6zz{i+k ;8[i8pI0"6zzm{iH"3zz F6ꪠ" zzzzzH"6zz8pI0 "6zzH8{iH"3zz {iH"3zzHHH"6@hhhhfꪠ" zzzzH"6zz fLK:{i+k ;8[iH8"#z8d "L9z8pI{i+k ;8[id   |tq;7 쪧쏾"; Hh 쪧쏾Hh"; 쪧쏸"; Hhm 쪧쏸Hh"; *'mC9E_C\E_CjEEE`FF_C8f  |F{i+k ;8[i qH H " 8H"- h)  "oH H " 8H"- h)  " H"- hHh {i+k ;8[i{i+k ;8[i) "; [ Hh";  ) H !) 8pI0Р  HhHh"; A 8Hh oHohHh{i+k ;8[i3Hh& .JLJRJ8f |[J{i+k ;8[i H"- hHh {i+k ;8[i$8pI0"NPzzz$(& $8pI0}(&)f(&Hi&((hHHihh : $:$[{i+k ;8[i  HhHh"; ) L!) 8pI0ЭLdA 8Hh oHohHh{i+k ;8[i{i+k ;8[i" ;i  @ dL/M{i+k ;8[i8 )@I@>"Qzzzz+"zzHh~~"; ""zz"zz"zzHh~Hh~"; ""zz""zz"zzHh"; d Hh"; ""zz MMM(N(NM8d |NHH@{i+k ;8[i" ;i @" ;i dR" ;i ," ;i d@)@{iH"3zz  @H%)H) @gf檠쪠" zzzz檠Hh 檠 Hh{i+k ;8[id8pIGH ""h Hh ) 28Hh ")) " ") " " "8JpIC " " "{i+k ;8[id"zzHh"; )ꂡ) ))) uHh"; N)CHh"; "; F) ) "; JHh"; !Hh~~"; ""zzH{H H "h Hh   H@{i+k ,9RX[dgv}     T  "%**/(36,: >(A(D..8 \\8 8 8    P f#f'?0f4y =fAJfN [dgo8 8 8 8 3,`1c1j y,, DHP -  - eiq -   - Xlp    - '= @C-  EG"I'K,M0E3Ecr w |    P S ^ l o      , % ~, ~/ ~2 ; 6 ; ~W \ ~` -  n  ~ -  o o -  n n   # 5 "> A F J  M b h k o  r w |            0 ? v D w I \ N ^ S Z f j w p v   c e g i k c c  ' t          !> 8)-#- l%' - '- tt=u@uc#qwtwyy{{"{$(- 0- d{${ D(##LOR- z(z( $ $'#- +#K((^- )!-(I((- _((r- - 5- ]T_acNeg>ikjmoFqsu>wNy{{"] #- ) 8)58)8) 8)H -#Q - s l% 8)a!8)!8) $#$&$- ^$+%%%+ &'9&6,a&8)&#& &0&#)'-#O'- z' 'C0'- k( (n/#)n/l))0*6,H*f**+*0*8)c+m+-++ +C0U,6j,3,6, ,6$-)-.-*3-*6-/9-/<-3-9-- .T. z..- .9 //&/)/6/1K/ R/"Y/"///3//n////0/ 0000!0- 4070g0 0 1 M1C0o16,1}21L9&2622220$3)3R3w3|333332644#A46m4<q4v4z4- 464<444- 4<445-  5&5<*5/535- ;5I5Z5_5e59>565<5- 5555555 5{$!6;&6A6Q69>[6`6e6!n6#w6#6#6!666667 7747E7H7K7v=]73o77777v=738*8888v=83889;"9;'9,9k96939 96:6):3x: :6:6:3;3;6@S; q;6;K:;;#;L9r<;t<7<vz>>>>??'?T?q????@@6@@@@@AA A(AK(AK&JK&MK(SK(K$K$KKKLL LLL; L#LjLvLLLLL MMM BM/MMQMMM~M~M~M; M"MMMM~MNN~ N~N; N" N"-N9N>NENHNKN; ZNfNkNrNuNxN; N"NMNMNMN(NN(NNMNNNNNNN  OOO /O2O9O UOXO_O O3 P {PPPQ3QFQYQQQQQQQQQQ; QR,RDRIRPRSRVR; ZRxR}RRRRRR; RRRRRR; RRRRRRRRSS; SSS$S'S*S; .S3SASFS~MS~PS~SS; YS`S"fSnS|SSSS.A ,@ ~globals .U UA ,@ ~arrays Can't allocate SANE direct pageThis will take 70 seconds using normal SANE. This will take 34 seconds using the TransWarp GS. This will be somewhat faster using the FPE. start x = %6.2f done start time = %.20s stop time = %.20s SYSFNMBK\HOCSNOCLbBJFzBTSYSNDHL|JJ-+ 0123456789ABCDEF0123456789abcdef0x0X-+ INFNAN(000)-+ .console.console.console.null.stdin.stdout.stderr.console 8HS:FBYTEWRKS ((((( H +BB\@5h!@DNMBK \HOCLbB J$F(zB0N4DH8L<|J@J:F ,@ DIRECT /* Savage benchmark -- from BYTE, July 1987, page 106 */ #include #include #include #include int ILOOP = 250; int i; main() { extended x; char st[20],sp[20],*t1,*t2; t1=&st[0]; t2=&sp[0]; x = 1.0; ReadAsciiTime(t1); printf("This will take 70 seconds using normal SANE.\n"); printf("This will take 34 seconds using the TransWarp GS.\n"); printf("This will be somewhat faster using the FPE.\n"); printf("start\n"); for (i = 1 ; i <= ILOOP-1 ; i++) x = tan(atan(exp(log(sqrt(x*x))))) + 1.0 ; ReadAsciiTime(t2); printf("x = %6.2f\n",x); printf("done\n"); printf("start time = %.20s\n",st); printf("stop time = %.20s\n",sp); } asm savage.cc keep=s link 2/start s keep=savage delete s.= EXAMPLEvղ' 2''EXAMPLE"+EXAMPLE.ASM  Z; ,EXAMPLE.DATAZ.EXAMPLE.FINTEGobg -EXAMPLE.FSLOT+ 6.EXAMPLE.MACROS4 ^d/d/,EXAMPLE.MATH=Z;-EXAMPLE.PRINTNa!d7+EXAMPLE.TXTS Y4&READMEZ3 d,  ,@ (K""hHHH " ;[+hhH " H " " "* " H " " H " () "#) e "H""kJ "z " " "W "( "(I "#( "(S "Jɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS  N                                kɉ eȷ cȷa _ȷ] H " "  H " H "J "z " " " "Kɉ Qȗ OȭM KȭI NKɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI Kɉ Qȗ OȭM KȭI Kɉ [ȗ YȭW UȭS Kɉ [ȗ YȭW UȭS Kɉ Qȗ OȭM KȭI :kɉ eȷ cȷa _ȷ] H " "  H " H " "5 "\ "W " H "] Qɉ  Qɉ } _ _ ^ d   }  }Sɉ    "kɉ eȷ cȷa _ȷ]  H " H "J " " " "W " H "] Qɉ } _ _ ^ d   }  }Sɉ   9 "kɉ eȷ cȷa _ȷ]  H " H "`] "g "g " "` 1.010.0 :BYTE Magazine Small-C Floating-Point Coprocessor Benchmark4Modified by Innovative Systems to APW/ORCA Assembler February 1989/ Floating Point Operations Coding Examples. Extended Floating Point Basic Math Test1 20,000 Iterations of Eight Groups of +,-,*,/& Correct Result = 1.00000002Integration Test 1 -- Trapezoidal Rule for Sine(x)& 32,000 Steps from 0 to pi/2& Correct Result = 1.0000000.Integration Test 2 -- Trapezoidal Rule for e^x# 32,000 Steps from 0 to 1& Correct Result = 1.7182818 Basic Operations Result =  Integration 1 Result =  Integration 2 Result = 2 Example using FPE Register-to-Register Operations1 Example using Memory-to-FPE Register Operations7This series of tests takes about 60 seconds to complete3 **** Unable to locate FPE, test terminated. ****0 @CAA@̓Leȷ@̈́Le @ͅLeȷ@͆ A L7AALyA 0A`8#<BX[ehr*u*(JJz z!$.W1W>ADGJM(P(SVc(f(iIlI|##((((SSQOMKI[+Y3W<UDSeca_]*J-J7z:zDGQT^aQOMKIQOMKI [0Y8WAUISn[~YWUSQOMKI QO"M+K3IX[hYpWyUS[YWUSQO MKIBQROZMcKkI[YWUS[YWU S, Q< OD MM KU Iz Q O M K I [ Y W U S [& Y. W7 U? Sd Qt O| M K I Q O M K I [ Y W! U) SN [^ Yf Wo Uw S Q O M K I Q O M K I8 [H YP WY Ua S [ Y W U S Q O M K I" Q2 O: MC KK Ip [ Y W U S [ Y W U S QO$M-K5IZQjOrM{KI[YWUS[YWUSDQTO\MeKmIeca_]55\\(W+Wfieca_]JJ WW%9(9KeXc`ai_q]}]]gggg>CeJOeV[eal7sy ;................................................................ ; ; Example program, written in APW/ORCA macro assembly language, ; to demonstrate use of direct access calls to the MC68881 to ; perform complex or redundant floating point operations. ; ; Copyright (c) 1989, Innovative Systems ;................................................................ ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ * ;................................................................ ; ; To assemble faster, all system toolset macros required for ; for this program are combined in one macro library. See ; APW shell command MACGEN description for details. ;................................................................ mload example.macros ;................................................................ mload m16.fpe copy e16.fpe Dummy START copy 2/ainclude/e16.memory END copy 2/ainclude/e16.sane example START using FPEEqus using SANEEqus using exampledata using messages ;................................................................ ; ; Normal startup processing required to enable the toolsets used. ;................................................................ phk get correct data bank value plb _TLStartUp PushWord #0 _MMStartUp get 256 bytes from zero page pla sta myID lda #0 pha pha PushLong #$100 PushWord myID PushWord #attrBank+attrPage+attrFixed+attrLocked PushLong #0 _NewHandle phd determine zero page location tsc tcd lda [3] sta ZPPtr pld pla pla PushWord ZPPtr give it to SANE Toolset _SANEStartup ;................................................................ ; ; Output startup messages. ;................................................................ Writech #$0a Writeln msg1 Writeln msg2 Writeln msg3 Writech #$0a output a linefeed Writeln msg19 Writech #$0a jsr fslot locate FPE slot and #$00ff cmp #$00ff bne FPEfound Writeln msg20 error message brl exit no reason to continue FPEfound and #$0007 asl a shift slot number for addition asl a to $c080 asl a asl a sta x->pi/2. ; ; The correct answer should be 1.0000000. ;................................................................ ; ; Output Informational messages ; ;................................................................ Writeln msg8 Writeln msg9 Writeln msg10 Writeln msg17 Writech #$0a ;................................................................ ; ; We will get the value for pi from the ROM values in the FPE, ; and then divide it by two to get pi/2. Save the value in ; FPE register 3. (Remember previous warning if necessary). ;................................................................ a1 regregr rpi,fp3 ; divide by two ldy #command lda #val1 xba sta [x->1. ; ; The correct answer should be 0.1782818. ;................................................................ Writeln msg4 Writeln msg11 Writeln msg12 Writeln msg13 Writeln msg17 Writech #$0a ; ; We will get the value for 1.0 from the ROM values in the FPE, ; and then divide it by the number of integration steps. ; Save the value in FPE register 3. ;................................................................ d1 regregr r10t0,fp3 ; divide by number of integration steps ldy #command lda #val1 xba sta [0,.a &BL SETA L:&SYSOPR+1 .a &REST AMID "&SYSOPR",2,&BL-2 dc I1'$F4',I2'&REST' MEND MACRO &lab FDEC2X &lab FOPRF FFEXT+FOD2B MEND MACRO &lab FPSTR2DEC &lab FOPRD FOPSTR2DEC MEND MACRO &lab FOPRF &N1 &lab PEA &N1 LDX #SANEtsNum+256*FPNum JSL $E10000 MEND MACRO &lab FOPRD &N1 &lab PEA &N1 LDX #SANEtsNum+256*DecStrNum JSL $E10000 MEND MACRO &lab str &string &lab dc i1'L:&string',C'&string' MEND MACRO &lab writeln &addr &lab ANOP AIF C:&addr=0,.c lclc &char &char amid &addr,1,1 AIF "&char"="#",.a pea &addr|-16 pea &addr ago .b .a lclc &str &str amid &addr,3,L:&addr-3 bra ~b&SYSCNT ~a&SYSCNT dc I1'L:&str',C'&str' ~b&SYSCNT pea ~a&SYSCNT|-16 pea ~a&SYSCNT .b ldx #$1A0C ~c&SYSCNT jsl $E10000 MEXIT .c pea +(~c&SYSCNT+1)|-16 pea ~c&SYSCNT+1 AGO .b MEND MACRO &lab writech &SYSOPR &lab ANOP AIF C:&SYSOPR=0,.a lda &SYSOPR .a pha ldx #$180C jsl $E10000 MEND MACRO &lab FX2DEC &lab FOPRF FFEXT+FOB2D MEND MACRO &lab FDEC2STR &lab FOPRD FODEC2STR MEND MACRO &lab _WriteCString &lab ldx #$200C jsl $E10000 MEND MACRO &lab _WriteString &lab ldx #$1C0C jsl $E10000 MEND MACRO &lab writestr &addr &lab ANOP AIF C:&addr=0,.c lclc &char &char amid &addr,1,1 AIF "&char"="#",.a pea &addr|-16 pea &addr ago .b .a lclc &str &str amid &addr,3,L:&addr-3 bra ~b&SYSCNT ~a&SYSCNT dc i1'L:&str',C'&str' ~b&SYSCNT pea ~a&SYSCNT|-16 pea ~a&SYSCNT .b ldx #$1C0C jsl $E10000 MEXIT .c phy pha AGO .b MEND MACRO &L REGMEMX &INS,&FPM,&ADDR &L LDY #COMMAND LDA #$6800+(&FPM|7)+&INS XBA STA [?@ABCDEFGHIJKLM;................................................................ ; ; FPE demonstration code. ; Copyright (c) 1989, Innovative Systems ;................................................................ ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ ;................................................................ ; ; WARNING! WARNING! The FPE Tool Set uses FPE registers 0, 1, and ; 2 for most of its operations. Use any of the remaining (3-7) if ; you have data that you don't want to lose. For example, don't ; use register 0 and then do a decForm conversion because the ; data in register 0 will change. ;................................................................ mathexamples start using FPEEqus using SANEequs using exampledata using messages ;................................................................ ; ; Output informational messages. ;................................................................ Writeln msg4 Writeln msg5 Writeln msg6 Writeln msg7 Writeln msg17 ;................................................................ ; ; Convert the ASCII string "1.0" to an extended binary number. ;................................................................ lda #1 sta index PushLong #info1 PushLong #index PushLong #value1 PushLong #vp FPSTR2DEC ;convert to decform PushLong #value1 PushLong #x1 FDEC2X ;................................................................ ; ; Convert the ASCII string "10.0" to an extended binary number. ;................................................................ lda #1 sta index PushLong #info2 PushLong #index PushLong #value1 PushLong #vp FPSTR2DEC ;convert to decform PushLong #value1 PushLong #x2 FDEC2X ;................................................................ ; ; Do operations in a register-to-register mode (the fastest way ; possible). ;................................................................ ; ; Now put the values into the FPE for use. The one will go into ; registers 5 and 7, and the ten into register 6. ; ; Use the FPE macros to move the data in. ;................................................................ t1 memregx fmove,fp5,x1 t2 memregx fmove,fp6,x2 t4 regreg fmove,fp5,fp7 ;................................................................ ; ; We do all operations into and out of FPE register 7. That is, ; add fp6 to fp7, mul fp7 by fp5, div fp7 by fp5, sub fp6 from fp7 ; eight times and then loop. We loop 20,000 times. ;................................................................ ldx #looptimes use X register as counter loop_start anop nospace no-op code ; 1 t6 regreg fadd,fp6,fp7 t8 regreg fmul,fp5,fp7 t10 regreg fdiv,fp5,fp7 t12 regreg fsub,fp6,fp7 ; 2 t13 regreg fadd,fp6,fp7 t14 regreg fmul,fp5,fp7 t15 regreg fdiv,fp5,fp7 t16 regreg fsub,fp6,fp7 ; 3 t17 regreg fadd,fp6,fp7 t18 regreg fmul,fp5,fp7 t19 regreg fdiv,fp5,fp7 t20 regreg fsub,fp6,fp7 ; 4 t21 regreg fadd,fp6,fp7 t22 regreg fmul,fp5,fp7 t23 regreg fdiv,fp5,fp7 t24 regreg fsub,fp6,fp7 ; 5 t25 regreg fadd,fp6,fp7 t26 regreg fmul,fp5,fp7 t27 regreg fdiv,fp5,fp7 t28 regreg fsub,fp6,fp7 ; 6 t29 regreg fadd,fp6,fp7 t30 regreg fmul,fp5,fp7 t31 regreg fdiv,fp5,fp7 t32 regreg fsub,fp6,fp7 ; 7 t33 regreg fadd,fp6,fp7 t34 regreg fmul,fp5,fp7 t35 regreg fdiv,fp5,fp7 t36 regreg fsub,fp6,fp7 ; 8 t37 regreg fadd,fp6,fp7 t38 regreg fmul,fp5,fp7 t39 regreg fdiv,fp5,fp7 t40 regreg fsub,fp6,fp7 ; end of loop dex beq t41 brl loop_start go through again t41 regmemx fmove,fp7,x3 Writech #$0a Writestr msg14 jsr print Writech #$0a Writech #$0a ;................................................................ ; ; Repeat the test, except that only the temporary data is ; stored in a register. All the other values are moved into ; the FPE directly from memory (this will be slower than the ; previous set of operations). ;................................................................ Writeln msg4 Writeln msg5 Writeln msg6 Writeln msg7 Writeln msg18 ;................................................................ ; ; Now put the values into the FPE for use. ; ; Use the FPE macros to move the data in. ;................................................................ s4 memregx fmove,fp7,x1 ;................................................................ ; ; We do all operations into and out of FPE register 0. That is, ; add fp6 to fp7, mul fp7 by fp5, div fp7 by fp5, sub fp6 from fp7 ; eight times and then loop. We loop 20,000 times. ;................................................................ ldx #looptimes use X register as counter loop_2_start anop ; 1 s6 memregx fadd,fp7,x1 s8 memregx fmul,fp7,x2 s10 memregx fdiv,fp7,x2 s12 memregx fsub,fp7,x1 ; 2 s61 memregx fadd,fp7,x1 s62 memregx fmul,fp7,x2 s63 memregx fdiv,fp7,x2 s64 memregx fsub,fp7,x1 ; 3 s65 memregx fadd,fp7,x1 s66 memregx fmul,fp7,x2 s67 memregx fdiv,fp7,x2 s68 memregx fsub,fp7,x1 ; 4 s69 memregx fadd,fp7,x1 s70 memregx fmul,fp7,x2 s71 memregx fdiv,fp7,x2 s72 memregx fsub,fp7,x1 ; 5 s73 memregx fadd,fp7,x1 s74 memregx fmul,fp7,x2 s75 memregx fdiv,fp7,x2 s76 memregx fsub,fp7,x1 ; 6 s77 memregx fadd,fp7,x1 s78 memregx fmul,fp7,x2 s79 memregx fdiv,fp7,x2 s80 memregx fsub,fp7,x1 ; 7 s81 memregx fadd,fp7,x1 s82 memregx fmul,fp7,x2 s83 memregx fdiv,fp7,x2 s84 memregx fsub,fp7,x1 ; 8 s85 memregx fadd,fp7,x1 s86 memregx fmul,fp7,x2 s87 memregx fdiv,fp7,x2 s88 memregx fsub,fp7,x1 ; end of loop dex beq s41 brl loop_2_start go through again s41 regmemx fmove,fp7,x3 Writech #$0a Writestr msg14 jsr print Writech #$0a Writech #$0a brl finteg end OPQR; Print routine for outputting floating values ; ; Copyright (c) 1989, Innovative Systems ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ print start using SANEequs using exampledata PushLong #theForm ; convert to decform from extended PushLong #x3 PushLong #theDec FX2DEC PushLong #theForm ;convert to ASCII string PushLong #theDec PushLong #output FDEC2STR PushLong #output _WriteString pushlong #crlf _WriteCString rts crlf dc h'0a0d00' end TUVWXY; Floating Point Test Message Text ; ; Copyright (c) 1989, Innovative Systems ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ messages data msg1 STR 'BYTE Magazine Small-C Floating-Point Coprocessor Benchmark' msg2 STR 'Modified by Innovative Systems to APW/ORCA Assembler' msg3 STR ' February 1989' msg4 STR ' Floating Point Operations Coding Examples' msg5 STR ' Extended Floating Point Basic Math Test' msg6 STR ' 20,000 Iterations of Eight Groups of +,-,*,/' msg7 STR ' Correct Result = 1.0000000' msg8 STR 'Integration Test 1 -- Trapezoidal Rule for Sine(x)' msg9 STR ' 32,000 Steps from 0 to pi/2' msg10 STR ' Correct Result = 1.0000000' msg11 STR 'Integration Test 2 -- Trapezoidal Rule for e^x' msg12 STR ' 32,000 Steps from 0 to 1' msg13 STR ' Correct Result = 1.7182818' msg14 STR ' Basic Operations Result = ' msg15 STR ' Integration 1 Result = ' msg16 STR ' Integration 2 Result = ' msg17 STR ' Example using FPE Register-to-Register Operations' msg18 STR ' Example using Memory-to-FPE Register Operations' msg19 STR 'This series of tests takes about 60 seconds to complete' msg20 STR ' **** Unable to locate FPE, test terminated. ****' end [\]^_ Floating Point Example Program The example program is based on the BYTE Floating Point Coprocessor benchmark published in July 1988. It gives examples of how the FPE can be used to do floating point math in assembly language. It also demonstrates some of the tricks that are useful in speeding up calculations. The prime speedup occurs when the FPE keeps intermediate and constant values within its register space (as in first basic operations example and in both integration examples). To demonstrate the effects of not using the registers, the basic operations test includes memory to FPE register data move instructions. The two integration examples show the most speedup. In APW 'C' (and no FPE), these integration tests take over 30 minutes. Have your stop watch ready when you run this program. Note that the m16.FPE macros are not the fastest way to access the FPE registers, but they are convenient. Modify the macros to put the data directly into the FPE, rather than using indexed indirect addressing and you will gain some speed improvement. Also, if you store your data in IEEE order (MSB is the lowest location in memory), you can eliminate the requirement for the XBA instructions in moving data. The same is true if you store the FPE command codes as equates instead of generating them during assembly. WARNING. Mixing direct calls and FPE Tool Set calls can cause you trouble if you use registers 0, 1, or 2 to store temporary data. The FPE Tool Set uses these registers to do its work and so the contents may be destroyed. Note. You will get 43 linker errors when you link this example code. The m16.FPE macros cause generation of a relocatable address assembler code during assembly. The linker flags this as an invalid use of a relocatable address. The resultant code, however, is correct and will function correctly. TO ASSEMBLE and LINK: From APW/ORCA: ASML EXAMPLE.ASM KEEP=EXAMPLE. Required files: /apw.orca.fpe16/m16.FPE /apw.orca.fpe16/e16.FPE example.asm example.macros example.math example.data example.finteg example.txt example.print. The distribution disk contains an assembled and linked version of this example program. 1qp$*BAPW.ORCA.FPE16 BENCHMARKEXAMPLE5BFINDSLOT5 FPETOOL.INITS5FRACTALSUB LISA816.FPEU MERLIN.FPEFINDSLOTvղ' 2'FSLOT16b66a+FSLOT16.ASMc P5a ,@ K0 @BAA@̓LBȷ@̈́LB @ͅLBȷ@͆ A$L A) 00 "L 0 "k8FPE FOUND IN SLOT . FPE NOT FOUND!  B',B38B>IX]`jvydefghijkl;................................................................ ; ; Example program, written in APW/OCRA macro assembly language, ; to demonstrate use of the FPE id bytes to identify the slot ; which contains the FPE. ; ; Copyright (c) 1989, Innovative Systems ;................................................................ ;................................................................ ; ; This software is provided for your evaluation and to ; assist you in developing software for an Apple II ; family computer which has an iS Floating Point Engine. ; ; DISCLAIMER OF WARRANTY ; ; THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ; ANY KIND, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO ; ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR ; PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND ; PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE ; SOFTWARE PROVE DEFECTIVE, YOU (AND NOT INNOVATIVE ; SYSTEMS OR AN INNOVATIVE SYSTEMS AUTHORIZED REPRESENTATIVE) ; ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR ; OR CORRECTION. ; ; Innovative Systems does not warrant that the functions ; contained in the Software will meet your requirements ; or that the operation of the software will be ; uninterrupted or error free or that defects in the ; Software will be corrected. ; ; SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED ; WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO ; YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS ; WHICH VARY FROM STATE TO STATE. ; ;................................................................ mcopy 2/ainclude/m16.texttool mcopy 2/ainclude/m16.utility fslot start slotloc equ $40 slotROM equ $e1c00b id1loc equ 5 id byte offsets id2loc equ 7 id3loc equ $b id4loc equ $c lastslot equ $c7 phk plb sep #$30 longa off longi off ; enable slot ROM lda #0 sta >slotROM ; sta slotloc slot address low byte lda #$e1 slot address high byte sta slotloc+2 lda #$c0 slot address mid byte sta slotloc+1 ; increment thru slots starting at slot 1 loop inc slotloc+1 ldy #id1loc lda [slotloc],y cmp id1 beq s1 jmp nextslot s1 iny iny lda [slotloc],y cmp id2 beq s2 jmp nextslot s2 ldy #id3loc lda [slotloc],y cmp id3 beq s3 jmp nextslot s3 iny lda [slotloc],y cmp id4 beq s4 nextslot lda slotloc+1 get slot # data cmp #lastslot last slot? beq done yes, exit jmp loop s4 lda #1 re-enable normal slots sta >slotROM-1 lda slotloc+1 slot # here and #$0f mask off unneeded bits ora #'0' convert to ASCII sta send ; output success message rep #$30 longi on longa on PUSHLONG #success _WriteCString jmp return done lda #1 re-eanble normal slots sta >slotROM-1 ; output fail message rep #$30 longi on longa on PUSHLONG #fail _WriteCString return rtl set A,X,Y size to 16 bits ; identification bytes id1 dc i1'56' $38 id2 dc i1'24' $18 id3 dc i1'1' $01 id4 dc i1'175' $af success dc c'FPE FOUND IN SLOT ' send ds 1 dc c'.' dc h'0a 0d 00 00' fail dc c'FPE NOT FOUND!' dc h'0a 0d 00 00' end FPETOOL.INITSvܲ' 2'+FPE.INIT.S1n$  m+FPE.INIT.S2$22m+FPE.INIT.S3$89m+FPE.INIT.S4$;;m+FPE.INIT.S5$m+FPE.INIT.S6$m+FPE.INIT.S7$mFINDER.DATAbܲܲmopqrstuvwxyz{|}~ ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ᯐɉᏞᯐ +H) "hᯖk4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hᯐɉ 돜 돜 돞 돜 돞ᯐ hᯐɉ ᯜ   W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ᯐ Hᯐɉ 돜 돜 돞 돜 돞ᯐ ᯐ Hᯐɉ 돜 돜 돞 돜 돞ᯐ Pᯐɉ돜ᯐ ?Pᯐɉ돜ᯐ Hᯐɉ돜돜돞돜돞ᯐ ᯐ Hᯐɉ돜돜돞돜돞ᯐ ᯐ bPᯐɉ돜ᯐ Hᯐɉ돜돜돞돜돞ᯐ ᯐ Iᯐɉ돜돜돞돜돞ᯐ ᯐ ᯐ ᯐ ᯐ Pᯐɉ돜ᯐ Hᯐɉ돜돜돞돜돞ᯐ PᯐɉA돜ᯐ Hᯐɉ 돜 돜 돞 돜 돞ᯐ Qᯐɉ돜ᯐ Q(ᯐɉ돜ᯐ ᯐ *Hᯐɉ 돜 돜 돞 돜 돞ᯐ Pᯐɉ돜ᯐ ᯐ Hᯐɉ 돜 돜 돞 돜 돞ᯐ Hᯐɉ돜돜돞돜돞ᯐ ᯐ hᯐɉ ᯜ   y Hᯐɉ 돜 돜 돞 돜 돞ᯐ  Hᯐɉ 돜 돜 돞 돜 돞ᯐ . H`HiTD@P Hᯐɉ 돜 돜 돞 돜 돞ᯐ    H +k  c     H % +k Hᯐɉ 돜 돜 돞 돜 돞ᯐ . ^ H`Hᯐɉ돜돜돞돜돞႗Tᯐɉ돜돞돜돞_Dᯐɉ돜돞;@ᯐɉ돜돞Pᯐɉ돜ᯐ hᯐɉ ᯜ   ᯐɉ20 H02)  ) !+k+k % ] Hᯐɉ 돜 돜 돞 돜 돞ᯐ O Hᯐɉ 돜 돜 돞 돜 돞ᯐ Pᯐɉ돜ᯐ    pd& )# & &0 & 0&& &)ɀ & @&& &ᯐɉ&돜ᯐ H +k   H +k Hᯐɉ 돜 돜 돞 돜 돞ᯐ . aH`Hᯐɉ돜돜돞돜돞႗Tᯐɉ돜돞돜돞_Dᯐɉ돜돞;@ᯐɉ돜돞Pᯐɉ돜ᯐ hᯐɉ ᯜ   U*s Hᯐɉ 돜 돜 돞 돜 돞ᯐ Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hᯐɉ 돜 돜 돞 돜 돞ᯐ . H`HTD&@DPbv| Hᯐɉ 돜 돜 돞 돜 돞ᯐ h0   hhhh0H` Hᯐɉ돜돜돞돜돞ᯐ . 8H`tᯐɉ   dᯐɉ `ᯐɉ pᯐɉ ~N} . mH`HTDN@lPNTZ`f Hᯐɉ 돜 돜 돞 돜 돞ᯐ @h0   h hhhh0H` 0/kᩀ0ɉ.9돜돜돞돜돞K(돜돞돜돞  돜돜돞ᯐ 0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ᯠɉᏮᯠ +H) "h᯦k4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hᯠɉ 돬 돬 돮 돬 돮ᯠ hᯠɉ ᯬ   W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ᯠ Hᯠɉ 돬 돬 돮 돬 돮ᯠ ᯠ Hᯠɉ 돬 돬 돮 돬 돮ᯠ Pᯠɉ돬ᯠ ?Pᯠɉ돬ᯠ Hᯠɉ돬돬돮돬돮ᯠ ᯠ Hᯠɉ돬돬돮돬돮ᯠ ᯠ bPᯠɉ돬ᯠ Hᯠɉ돬돬돮돬돮ᯠ ᯠ Iᯠɉ돬돬돮돬돮ᯠ ᯠ ᯠ ᯠ ᯠ Pᯠɉ돬ᯠ Hᯠɉ돬돬돮돬돮ᯠ PᯠɉA돬ᯠ Hᯠɉ 돬 돬 돮 돬 돮ᯠ Qᯠɉ돬ᯠ Q(ᯠɉ돬ᯠ ᯠ *Hᯠɉ 돬 돬 돮 돬 돮ᯠ Pᯠɉ돬ᯠ ᯠ Hᯠɉ 돬 돬 돮 돬 돮ᯠ Hᯠɉ돬돬돮돬돮ᯠ ᯠ hᯠɉ ᯬ   y Hᯠɉ 돬 돬 돮 돬 돮ᯠ  Hᯠɉ 돬 돬 돮 돬 돮ᯠ . H`HiTD@P Hᯠɉ 돬 돬 돮 돬 돮ᯠ    H +k  c     H % +k Hᯠɉ 돬 돬 돮 돬 돮ᯠ . ^ H`Hᯠɉ돬돬돮돬돮႗Tᯠɉ돬돮돬돮_Dᯠɉ돬돮;@ᯠɉ돬돮Pᯠɉ돬ᯠ hᯠɉ ᯬ   ᯠɉ20 H02)  ) !+k+k % ] Hᯠɉ 돬 돬 돮 돬 돮ᯠ O Hᯠɉ 돬 돬 돮 돬 돮ᯠ Pᯠɉ돬ᯠ    pd& )# & &0 & 0&& &)ɀ & @&& &ᯠɉ&돬ᯠ H +k   H +k Hᯠɉ 돬 돬 돮 돬 돮ᯠ . aH`Hᯠɉ돬돬돮돬돮႗Tᯠɉ돬돮돬돮_Dᯠɉ돬돮;@ᯠɉ돬돮Pᯠɉ돬ᯠ hᯠɉ ᯬ   U*s Hᯠɉ 돬 돬 돮 돬 돮ᯠ Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hᯠɉ 돬 돬 돮 돬 돮ᯠ . H`HTD&@DPbv| Hᯠɉ 돬 돬 돮 돬 돮ᯠ h0   hhhh0H` Hᯠɉ돬돬돮돬돮ᯠ . 8H`tᯠɉ   dᯠɉ `ᯠɉ pᯠɉ ~N} . mH`HTDN@lPNTZ`f Hᯠɉ 돬 돬 돮 돬 돮ᯠ @h0   h hhhh0H` 0/kᩀ0ɉ.9돬돬돮돬돮K(돬돮돬돮  돬돬돮ᯠ 0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ᯰɉ᏾ᯰ +H) "h᯶k4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hᯰɉ 돼 돼 돾 돼 돾ᯰ hᯰɉ ᯼   W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ᯰ Hᯰɉ 돼 돼 돾 돼 돾ᯰ ᯰ Hᯰɉ 돼 돼 돾 돼 돾ᯰ Pᯰɉ돼ᯰ ?Pᯰɉ돼ᯰ Hᯰɉ돼돼돾돼돾ᯰ ᯰ Hᯰɉ돼돼돾돼돾ᯰ ᯰ bPᯰɉ돼ᯰ Hᯰɉ돼돼돾돼돾ᯰ ᯰ Iᯰɉ돼돼돾돼돾ᯰ ᯰ ᯰ ᯰ ᯰ Pᯰɉ돼ᯰ Hᯰɉ돼돼돾돼돾ᯰ PᯰɉA돼ᯰ Hᯰɉ 돼 돼 돾 돼 돾ᯰ Qᯰɉ돼ᯰ Q(ᯰɉ돼ᯰ ᯰ *Hᯰɉ 돼 돼 돾 돼 돾ᯰ Pᯰɉ돼ᯰ ᯰ Hᯰɉ 돼 돼 돾 돼 돾ᯰ Hᯰɉ돼돼돾돼돾ᯰ ᯰ hᯰɉ ᯼   y Hᯰɉ 돼 돼 돾 돼 돾ᯰ  Hᯰɉ 돼 돼 돾 돼 돾ᯰ . H`HiTD@P Hᯰɉ 돼 돼 돾 돼 돾ᯰ    H +k  c     H % +k Hᯰɉ 돼 돼 돾 돼 돾ᯰ . ^ H`Hᯰɉ돼돼돾돼돾႗Tᯰɉ돼돾돼돾_Dᯰɉ돼돾;@ᯰɉ돼돾Pᯰɉ돼ᯰ hᯰɉ ᯼   ᯰɉ20 H02)  ) !+k+k % ] Hᯰɉ 돼 돼 돾 돼 돾ᯰ O Hᯰɉ 돼 돼 돾 돼 돾ᯰ Pᯰɉ돼ᯰ    pd& )# & &0 & 0&& &)ɀ & @&& &ᯰɉ&돼ᯰ H +k   H +k Hᯰɉ 돼 돼 돾 돼 돾ᯰ . aH`Hᯰɉ돼돼돾돼돾႗Tᯰɉ돼돾돼돾_Dᯰɉ돼돾;@ᯰɉ돼돾Pᯰɉ돼ᯰ hᯰɉ ᯼   U*s Hᯰɉ 돼 돼 돾 돼 돾ᯰ Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hᯰɉ 돼 돼 돾 돼 돾ᯰ . H`HTD&@DPbv| Hᯰɉ 돼 돼 돾 돼 돾ᯰ h0   hhhh0H` Hᯰɉ돼돼돾돼돾ᯰ . 8H`tᯰɉ   dᯰɉ `ᯰɉ pᯰɉ ~N} . mH`HTDN@lPNTZ`f Hᯰɉ 돼 돼 돾 돼 돾ᯰ @h0   h hhhh0H` 0/kᩀ0ɉ.9돼돼돾돼돾K(돼돾돼돾  돼돼돾ᯰ 0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ɉ +H) "hk4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hɉ    hɉ    W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ Hɉ     Hɉ    Pɉ ?Pɉ Hɉ  Hɉ  bPɉ Hɉ  Iɉ     Pɉ Hɉ PɉA Hɉ    Qɉ Q(ɉ  *Hɉ    Pɉ  Hɉ    Hɉ  hɉ    y Hɉ     Hɉ    . H`HiTD@P Hɉ       H +k  c     H % +k Hɉ    . ^ H`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    ɉ20 H02)  ) !+k+k % ] Hɉ    O Hɉ    Pɉ    pd& )# & &0 & 0&& &)ɀ & @&& &ɉ& H +k   H +k Hɉ    . aH`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    U*s Hɉ    Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hɉ    . H`HTD&@DPbv| Hɉ    h0   hhhh0H` Hɉ . 8H`tɉ   dɉ `ɉ pɉ ~N} . mH`HTDN@lPNTZ`f Hɉ    @h0   h hhhh0H` 0/kᩀ0ɉ.9K(   0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ɉ +H) "hk4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hɉ    hɉ    W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ Hɉ     Hɉ    Pɉ ?Pɉ Hɉ  Hɉ  bPɉ Hɉ  Iɉ     Pɉ Hɉ PɉA Hɉ    Qɉ Q(ɉ  *Hɉ    Pɉ  Hɉ    Hɉ  hɉ    y Hɉ     Hɉ    . H`HiTD@P Hɉ       H +k  c     H % +k Hɉ    . ^ H`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    ɉ20 H02)  ) !+k+k % ] Hɉ    O Hɉ    Pɉ    pd& )# & &0 & 0&& &)ɀ & @&& &ɉ& H +k   H +k Hɉ    . aH`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    U*s Hɉ    Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hɉ    . H`HTD&@DPbv| Hɉ    h0   hhhh0H` Hɉ . 8H`tɉ   dɉ `ɉ pɉ ~N} . mH`HTDN@lPNTZ`f Hɉ    @h0   h hhhh0H` 0/kᩀ0ɉ.9K(   0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ɉ +H) "hk4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hɉ    hɉ    W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ Hɉ     Hɉ    Pɉ ?Pɉ Hɉ  Hɉ  bPɉ Hɉ  Iɉ     Pɉ Hɉ PɉA Hɉ    Qɉ Q(ɉ  *Hɉ    Pɉ  Hɉ    Hɉ  hɉ    y Hɉ     Hɉ    . H`HiTD@P Hɉ       H +k  c     H % +k Hɉ    . ^ H`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    ɉ20 H02)  ) !+k+k % ] Hɉ    O Hɉ    Pɉ    pd& )# & &0 & 0&& &)ɀ & @&& &ɉ& H +k   H +k Hɉ    . aH`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    U*s Hɉ    Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hɉ    . H`HTD&@DPbv| Hɉ    h0   hhhh0H` Hɉ . 8H`tɉ   dɉ `ɉ pɉ ~N} . mH`HTDN@lPNTZ`f Hɉ    @h0   h hhhh0H` 0/kᩀ0ɉ.9K(   0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts| ,@ 0 " ""(k qQ))X [dz )=;)5HHH{iH H)E{"{+\"k [ hK )*).* 2H` hK Z`k [ɉ +H) "hk4>HR\fpz [ , [ ^ [  [  ) h hhhhhh d [  [ h0     hhh0H` [ HZ [ HP [ HF [ H< [ H2 [ H( [ H [ H [ H [ Hɉ    hɉ    W . qc oro Av"?jg d R :  n > ! H + !kd! ! H + !k\ Hɉ     Hɉ    Pɉ ?Pɉ Hɉ  Hɉ  bPɉ Hɉ  Iɉ     Pɉ Hɉ PɉA Hɉ    Qɉ Q(ɉ  *Hɉ    Pɉ  Hɉ    Hɉ  hɉ    y Hɉ     Hɉ    . H`HiTD@P Hɉ       H +k  c     H % +k Hɉ    . ^ H`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    ɉ20 H02)  ) !+k+k % ] Hɉ    O Hɉ    Pɉ    pd& )# & &0 & 0&& &)ɀ & @&& &ɉ& H +k   H +k Hɉ    . aH`Hɉ႗Tɉ_Dɉ;@ɉPɉ hɉ    U*s Hɉ    Lh0   hh0H`Copyright (C) Innovative Systems 1988,89All rights reserved. Hɉ    . H`HTD&@DPbv| Hɉ    h0   hhhh0H` Hɉ . 8H`tɉ   dɉ `ɉ pɉ ~N} . mH`HTDN@lPNTZ`f Hɉ    @h0   h hhhh0H` 0/kᩀ0ɉ.9K(   0ا؀008) lᩀ ɉᅂᅄᅆᅈᅊᅌ 0)0m,i99 Ԣ襅) 09)ژ)jjjj 09) 09Ȃ 8؍; @ N400099I99M,j#80==ة09kN8Eڥeڍ=Q=H=ʆ )@ ڥ8؍; 8؍; 8;;ȷ<<=ؠȥٗ9 =9 ع9 ^:;<ڄۥ) <ۥ);ژ)jjjj/m;;ڥ)%m;ȍ;m<<`H0+kd,Xl (2HR\fpz 8BLV`jt~2 4. 68q:c < >@BoDrFoHJ L NAPvR"T?VjZg \d ^`R b d: f hn j> e        < T ^ c f p   ^ ^ ` % b ] d f i  0   'aa*csegilsv|$z88N:}<>@CKmmNoTqZs`ufxk5i<9D9GW9u99;9999j==9%=.=7=N;[;h;k;q<t<y=9=99:;<<;/;;%;;< <q@O\<EADDCAJnts|FRACTALSvղ' 2'FINDER.DATApҲ2/FRACTALS.DOC.10+ + :/FRACTALS.DOC.11 'L7,ղ +FRACTALS.GS3V ( :TEST.FRAC.DATS , -TEST.FRAC.PICA , :1qp4 FRACTALS.DOCSXT`&< FRACTALS.GSATXT TEST.FRAC.DATXT TEST.FRAC.PICXT5FGS.11.DFIX.TXT Fractals-GS Version 1.00 2/16/88 By Steven Disbrow This Program was written in TML Pascal. (c) 1987 TML Systems, Inc. Certain portions of this software are copyrighted by TML Systems, Inc. This version of this program is Public Domain. Feel free to distribute. WHAT IT DOES: Fractals-GS is a program that allows your Apple ][GS to generate pictures of the famous Mandelbrot Set. For convenience, pictures may be saved in progress and restarted later. THEORY AND CREDITS: Like most Fractal programs in the world, this one is based on one of A.K. Dewdney's articles in Scientific American. His work, in turn, is based on the work of that IBM guy, Mandelbrot (he's the one that started this mess!). For some of the theory and background on this stuff, see any of Dewdney's articles (check your library). For some serious brain damage, check out any of Mandelbrots books. (Golly, I hope I spelled his name right!) WHAT'S IN THE MENUS: APPLE MENU - The Apple Menu contains the obligatory "About Fractals-GS..." selection and any desk accessories you might have installed. FILE MENU - NEW - This selection brings up a Dialog box that allows you to specify information about the picture you want Fractals-GS to draw. The information you must specify is: X Coordinate and Y Coordinate - These values specify the BOTTOM LEFT HAND CORNER coordinates of the picture that Fractals-GS is to draw. X Range and Y Range - These range values are added to the X and Y coordinate values to specify the range of numbers that the picture is to show. Number of Iterations Per Pixel - This specifies the maximum number of times that Fractals-GS evaluates each pixel to determine its color. Lower values produce faster, less accurate, pictures. Larger values produce more detailed pictures, but they take a LONG, LONG, LONG time to finish (You have been warned!). Title - This can be an 11 character title for the picture. When the NEW Dialog box is invoked, a set of default values is shown. These defaults specify a picture giving an overview of the Mandelbrot Set. These default values are specified in scientific notation. The values you supply do not have to be in scientific notation. CLOSE - This selection closes the current window. If the picture in the window has been modified, you will be asked if you want to save the changes. LOAD PIC - This selection will allow you to load ANY picture that is in the standard, uncompressed file format (file type $C1). A picture that is loaded in this manner may only be viewed. Both 320 and 640 mode pictures may be loaded (640 mode pictures may look a bit odd though...). LOAD FGS - This is short for "LOAD a Fractals-GS Picture and its Data File". This selection actually loads two files. One is the actual picture data, the other is a text file that specifies how Fractals-GS is to go about drawing that data. The picture file has a file name extender of ".PIC" and the data file has a file name extender of ".DAT". Both of these files must be present in the same directory for the picture to be loaded. SAVE AS - This selection allows you to save an FGS Picture (i.e. a picture and its associated data file) in progress. The picture can be loaded in later (via the LOAD FGS selection) and restarted. DELETE - This selection allows you to delete any file. RENAME - This selection allows you to rename any file. EDIT MENU - The Edit Menu is not implemented in this version of Fractals-GS. WINDOWS MENU - FULL SCREEN - This allows you to see the picture without all of those silly windows and things. Press any key or click the mouse button when you have finished looking at the picture. (O.K., so its not really FULL screen. If anyone out there can tell me how to get rid of that *^^&%^% menu bar I would be most grateful!) COORDINATES - The Coordinates selection is not yet implemented. GET INFO - The Get Info selection tells you all of the important stuff about the picture you are currently viewing. Included in the Get Info selection is the option to print out the Info. (Make sure that your printer is ready!) MAGNIFY - The Magnify option allows you to "Zoom In" on a portion of an FGS picture and generate a new picture. To cancel the Magnify option press the escape ("esc") key. See the following section for more information on this option. NEXT WINDOW - The Next Window selection is not yet implemented. COLORS MENU - The Colors Menu is not implemented in this version of Fractals-GS. RUN MENU - MANDELBROT - The Mandelbrot selection tells Fractals-GS to start drawing a picture using the formulas that generate Mandelbrot set pictures. To stop the execution of this option, press the escape ("esc") key. When the current row is finished being evaluated, Fractals-GS will stop drawing the picture. JULIA - This selection is not yet implemented. EXAMPLES: CREATING A NEW PICTURE - 1) From the "FILE" menu, select "NEW". A Dialog Box containing default values will appear. To edit these values click the mouse in the appropriate box and use the arrow keys and delete keys to change the values. When you have the values you want, click on the "OK" button and an empty window will appear. If you change your mind, click the "Cancel" button. 2) Now that you have the empty window, you probably want to get the picture started! To do this, simply pull down the "RUN" menu and select the "Mandelbrot" item. At this point, Fractals-GS begins to calculate and draw your picture. Don't worry if nothing appears immediately, Fractals-GS only draws a pixel (or line of pixels) when it crosses a 'color boundary' (you should understand what I mean after you see it in action). 3) The next step is to RELAX. The ][GS is a fairly slow machine and some of these pictures can take upwards of 20 hours to draw! (An assembly language version is on the way!) 4) What's that you say? You don't want your computer tied up for 20+ hours drawing a stupid picture? Neither did I! That's why Fractals-GS has the ability to save a picture in progress! To save it however, you must stop it. To stop a picture that is being drawn, press the escape ("esc") key. Fractals-GS will stop drawing the picture when it reaches the end of the current line (this in itself can take up to 10 minutes!). 5) To save the picture as it now stands, pull down the "FILE" menu and select the "Save As..." item. This brings up a Dialog Box that prompts you for a name to save the file under. Only 11 characters are allowed for the file name because the last 4 characters are reserved for the ".PIC" and ".DAT" extenders. Remember, ".PIC" and ".DAT" are stuck on the end of the file name by Fractals-GS. When you have the name that you want, click on the "SAVE" button and Fractals-GS will save your picture and its associated data file. 6) Now that your picture is saved, you can close it and start or load another picture, or you can restart the picture you just saved. To restart the picture, just select the "Mandelbrot" item from the "RUN" menu. LOADING AND RESTARTING A SAVED PICTURE - 1) From the "FILE" menu, select "LOAD FGS...". This brings up a Dialog Box that prompts you for the name of a file to load. Only ".PIC" files are shown. When you find the file you want, double-click on its name or click on its name once and then click the "OPEN" button. Fractals-GS will then load your picture and its associated data file. If the data file can not be found, Fractals-GS will tell you so and the load operation will be aborted. 2) Once you have loaded the picture, you may restart it by selecting the "Mandelbrot" item from the "RUN" menu. 3) To stop and save the picture, follow steps 4-6 under CREATING A NEW PICTURE (above). USING THE MAGNIFY OPTION - 1) Once you have a picture drawn (or almost drawn) you can "Zoom In" on bits of it that look interesting. First, load in a previously drawn picture (the picture does not need to be completely finished) via the "LOAD FGS..." option as described above. 2) Pull down the "WINDOWS" menu and select the "Magnify" item. This will place the picture in (almost) FULL SCREEN mode so that you can see all of it. 3) Place the cursor at or near the point of interest and press and hold the mouse button. While STILL HOLDING DOWN on the mouse button, begin to drag the mouse. A box is drawn to show the area that will be magnified. You can drag the mouse in any direction. When you have the area you are interested in selected, release the mouse button. 4) When you have released the mouse button, a Dialog Box identical to the "NEW" Dialog Box will appear and show you the specifications for the area you have just selected. Change them as you would if you were specifying a new picture. 5) When the specifications are to your liking, click the "OK" button. The picture that you were working with previously will be closed (if changes were made to it, you will be asked if you want to save those changes), and a new, empty window will be opened. This window will eventually contain the drawing of the zoomed area. To begin drawing this picture, follow steps 2-6 under CREATING A NEW PICTURE (above). 6) If you do not like the specifications for the area you have chosen, click the "CANCEL" button. This will place you back in Magnify mode and you can try again. If you do not want to try again or you did not want to try in the first place, press the escape key and Magnify mode will be turned off. HINTS - 1) When in magnify mode try to get the X and Y ranges about the same. If they are very different, the resulting picture will look stretched or smashed. This is because that, on the ][GS, pixels are taller than they are wide. So, when you are boxing in the area you want to magnify, make the vertical sides a bit longer than the horizontal sides. 2) When in magnify mode and when specifying a new picture, the values for the X and Y coordinate represent the lower left hand corner of the picture. 3) When you are zooming in really 'deep', make the iteration limit larger. Otherwise the picture may end up being all black. 4) An iteration limit of 100 is more than enough for really well detailed pictures. 5) Run these things at night or when you are at work or school. If you live in an area that has a lot of electrical storms or power outages, do NOT run these things unattended. I'm NOT going to be held responsible for fried or otherwise damaged ][GS's. (To quote Dave: "Oh, yeah? How much did you pay to get into the show tonight?") I hope you like this program and find it useful. If you have ANY questions, criticisms, compliments or CASH you would like to throw my way, please do so. I would especially like to hear about ANY bugs you find in it. This is my first attempt at a full blown ][GS application and I would really love some feedback. My GEnie address is S.DISBROW and my home address is: Steven Disbrow 1421 O'Neal Rd. Hixson, TN. 37343  !"#$%&'()*+,-./012Fractals-GS Version 1.1 12/15/88 Documentation updated 1/23/89 By Steven W. Disbrow (c) 1987-89 By EGO Systems. This Program was written in TML Pascal. (c) 1987 TML Systems, Inc. Certain portions of this software are copyrighted by TML Systems, Inc. This version of this program is Public Domain. Feel free to distribute. WHAT IT DOES: Fractals-GS is STILL a program that allows your Apple ][GS to generate pictures of the famous Mandelbrot Set. For convenience, pictures may be saved in progress and restarted later. THEORY AND CREDITS: Like most Fractal programs in the world, this one is based on one of A.K. Dewdney's articles in Scientific American. His work, in turn, is based on the work of that IBM guy, Mandelbrot (he's the one that started this mess!). For some of the theory and background on this stuff, see any of Dewdney's articles (check your library). For some serious brain damage, check out any of Mandelbrots books. (Golly, I hope I spelled his name right!) There are four reasons that I did this update to Fractals-GS: 1) Ed Finney wrote me a letter (USnail) and told me how much he liked the program . 2) Frank Krol asked me if he could include it as a demo with a new hardware product his company is about to release. I said yes. 3) Garry M. Delong sent me some MONEY. 4) I am getting really sick of my job programming IBM PC's and Mainframes. So if any of you Apple ][GS programming shops out there need good people... BUGS IN THIS VERSION - 1/23/89 1) Due to a bug in AppleWorks GS, the documentation file was screwed up. This file fixes that. 2) The only program bug I know of at this point is the fact that when entering a title for a picture via the "NEW" or "MAGNIFY" options, you can only enter eleven charaters. To get around this, use the "SAVE AS..." menu selection to specify a title for the picture. Or, you could close the picture, rename it and then reload it. FIXES TO BUGS AND 'FEATURES' IN VERSION 1.00: 1) I figured out how to get rid of the *&^%& menu bar! (And boy did I) 2) Pictures were saved incorrectly in Version 1.00. This made it difficult (but not impossible) to use Fractals-GS generated pictures with programs such as DeluxePaint ][ and PaintWorks. This has been fixed. In fact, this version will fix all of your old pictures if you want it to. For more info see the detailed discussion at the end of this document. 3) While I claimed that Version 1.00 painted it's pictures in 16 colors the more observant of you (i.e. not blind) will no doubt have noticed that there were only about 8 colors in any picture that you drew. This was a STUPID mistake and it won't happen again. Thanks to Noreen for spotting this one. 4) Pictures and their data are now stored in 1 file. The use of a '.Pic' and a '.Dat' file was a 'Feature' that really began to bug the #&!! out of me after about 20 pictures. 5) Also included in this version is a Fractals-GS Icon. Copy it into the Icons folder of either your startup disk or your Fractals-GS disk. THE FRACTALS-GS MENU BAR: The menu bar in Version 1.10 of Fractals-GS behaves a bit differently than in Version 1.00 or just about any other ][GS program. When you first start the program, the menu bar appears at the top of the screen just as you would expect. After you open a picture (using either "LOAD PIC..." or "LOAD FGS...") however, the picture fills the entire screen and the menu bar disappears (finally)! To get the menu bar back, move the cursor to the top of the screen. To make the menu bar disappear again move the cursor away from the menu bar. We here at EGO Systems call this the Phantom Menu Bar (PMB) because we could not think of anything dirty to call it. This PMB is why the "FULL SCREEN" option has been taken out of the WINDOWS menu. Activating a menu choice by using a command key combination will cause the menu bar to appear briefly and the command will be carried out. If you close the current picture the menu bar reappears and stays put until you open another picture. The only other programs that I know of that use a PMB are Instant Music and The King Of Chicago (a great game). If anyone else wants to know how to get rid of the menu bar, let me know and I'll be glad to tell you. WHAT'S IN THE MENUS? APPLE MENU: The Apple Menu contains the obligatory "About Fractals-GS..." selection and any desk accessories you might have installed. FILE MENU: NEW - This selection brings up a Dialog box that allows you to specify information about the picture you want Fractals-GS to draw. The information you must specify is: X Coordinate and Y Coordinate - These values specify the BOTTOM LEFT HAND CORNER coordinates of the picture that Fractals-GS is to draw. X Range and Y Range - These range values are added to the X and Y coordinate values to specify the range of numbers that the picture is to show. Number of Iterations Per Pixel - This specifies the maximum number of times that Fractals-GS evaluates each pixel to determine its color. Lower values produce faster, less accurate, pictures. Larger values produce more detailed pictures, but they take a LONG, LONG, LONG time to finish (You have been warned!). Title - This can be a 15 character title for the picture. When the NEW Dialog box is invoked, a set of default values is shown. These defaults specify a picture giving an overview of the Mandelbrot Set. These default values are specified in scientific notation. The values you supply do not have to be in scientific notation. CLOSE - This selection closes the current picture. If the picture has been modified, you will be asked if you want to save the changes. LOAD PIC - This selection will allow you to load ANY picture that is in the standard, uncompressed file format (file type $C1). A picture that is loaded in this manner may only be viewed. Both 320 and 640 mode pictures may be loaded (640 mode pictures may look a bit odd though...). LOAD FGS - This is short for "LOAD a Fractals-GS Picture and its Data". If you try to load in a plain picture file, Fractals-GS will give an error message and the operation will be aborted. For more information, see the discussion at the end of this document. SAVE AS - This selection allows you to save an FGS Picture (i.e. a picture and its associated data) in progress. The picture can be loaded in later (via the LOAD FGS selection) and restarted. The resulting pictures can be loaded into DeluxePaint ][ and (I hope) other paint programs. Use the "Import File..." option when loading Fractals-GS pictures into AppleWorks GS. DELETE - This selection allows you to delete any file. RENAME - This selection allows you to rename any file. EDIT MENU: The Edit Menu is not implemented in this version of Fractals-GS. WINDOWS MENU : COORDINATES - The Coordinates selection brings up a small window showing the current position of the cursor 'in' the complex plane. The coordinates window can be moved anywhere you want. This option can be very handy when you are in the Magnify mode (be sure to select Coordinates before you select Magnify). GET INFO - The Get Info selection tells you all of the important stuff about the picture you are currently viewing. The Get Info Dialog now includes a 'Total Time' entry. This tells you how much time (in Hours, Minutes and Seconds) you have wasted drawing a particular picture. If the picture was generated with Version 1.00, the Total Time is set to 0 hours, 0 minutes and 0 seconds. Also included in the Get Info selection is the option to print out the Info. (Make sure that your printer is ready!) MAGNIFY - The Magnify option allows you to "Zoom In" on a portion of an FGS picture and generate a new picture. When you select Magnify, the cursor changes into a Magnifying Glass (well, that's what it's SUPPOSED to be!). To cancel the Magnify option press the escape ("esc") key. See the following EXAMPLES section for more information on this option. PREFERENCES - The preferences option brings up a dialog box which allows you to set the following options: 1) Screen Saver - If you turn the screen saver on, the screen will turn black when you select an option from the RUN menu (Mandelbrot or Julia). This option is included because I figure that most pictures will be run at night and your monitor will be off anyway and the pictures get drawn a bit faster that way. How much faster? It depends on the number of color breaks in the picture. 2) Color Cycling Direction - This can be either IN (towards the black areas) or OUT (away from the black areas). If neither button is selected, the program defaults to OUT. 3) Color Cycling Speed - How fast the color cycle goes. Drag the scroll bar to set the speed. I can't quite get the other areas of the scroll bar to behave correctly just yet (give me a break, I still have Christmas shopping to do) so this will have to do for now. Click the 'OK' button when you are done. There is no cancel button because none of this stuff is really that important, is it? COLORS MENU: SET - This is not yet implemented. DEFAULT - This is not yet implemented. CYCLE - Select this item to start the colors cycling. If the Coordinates window is open, it will be closed and the cycling will begin. While in Cycling mode you can set the direction and speed of the cycle using the PREFERENCES item or by pressing the following keys: 'D' - Pressing 'D' reverses the direction of the cycle. '-' - Pressing '-' slows down the speed of the cycle. '+' - Pressing '+' increases the speed of the cycle. Note that you do not have to have Shift or Caps Lock pressed for these keys to work. To hide the cursor, press the Space Bar. To get the cursor back, move the mouse. RUN MEN: MANDELBROT - The Mandelbrot selection tells Fractals-GS to start drawing a picture using the formulas that generate Mandelbrot set pictures. The cursor will change into the wristwatch and the picture will start drawing. If you have the Screen Saver turned on, the screen will go black. To stop the execution of this option, press the escape ("esc") key. When the CURRENT ROW is finished being evaluated, Fractals-GS will stop drawing the picture. JULIA - This selection is not yet implemented. SPECIAL KEYS: The following keys (upper or lowercase) do the following things in the following modes: AT ANY TIME - 'Space Bar' - Pressing the Space Bar at any time hides the cursor. Move the mouse to make the cursor reappear. CYCLE MODE - 'D' - Pressing 'D' reverses the direction of the cycle. '-' - Pressing '-' slows down the speed of the cycle. '+' - Pressing '+' increases the speed of the cycle. MAGNIFY MODE - 'esc' - Pressing 'esc' (the escape key) ends magnify mode. RUN MODE - 'esc' - Pressing 'esc' (the escape key) ends run mode when Fractals-GS has finished evaluating the current line of the picture. EXAMPLES: CREATING A NEW PICTURE - 1) From the "FILE" menu, select "NEW". A Dialog Box containing default values will appear. To edit these values click the mouse in the appropriate box and use the arrow keys and delete keys to change the values. When you have the values you want, click on the "OK" button and an empty window will appear. If you change your mind, click the "Cancel" button. 2) Now that you have the empty window, you probably want to get the picture started! To do this, simply pull down the "RUN" menu and select the "Mandelbrot" item. At this point, Fractals-GS begins to calculate and draw your picture. Don't worry if nothing appears immediately, Fractals-GS only draws a pixel (or line of pixels) when it crosses a 'color boundary' (you should understand what I mean after you see it in action). 3) The next step is to RELAX. The ][GS is a VERY slow machine and some of these pictures can take upwards of 20 hours to draw! 4) What's that you say? You don't want your computer tied up for 20+ hours drawing a stupid picture? Neither did I! That's why Fractals-GS has the ability to save a picture in progress! To save it however, you must stop it. To stop a picture that is being drawn, press the escape ("esc") key. Fractals-GS will stop drawing the picture when it reaches the end of the current line (this in itself can take up to 30 minutes!). 5) To save the picture as it now stands, pull down the "FILE" menu and select the "Save As..." item. This brings up a Dialog Box that prompts you for a name to save the file under. When you have the name that you want, click on the "SAVE" button and Fractals-GS will save your picture and its associated data in the file. 6) Now that your picture is saved, you can close it and start or load another picture, or you can restart the picture you just saved. To restart the picture, just select the "Mandelbrot" item from the "RUN" menu. LOADING AND RESTARTING A SAVED PICTURE - 1) From the "FILE" menu, select "LOAD FGS...". This brings up a Dialog Box that prompts you for the name of a file to load. When you find the file you want, double-click on its name or click on its name once and then click the "OPEN" button. Fractals-GS will then load your picture and its data. If the Fractals-GS data can not be found in the file, Fractals-GS will tell you so and the load operation will be aborted. 2) Once you have loaded the picture, you may restart it by selecting the "Mandelbrot" item from the "RUN" menu. 3) To stop and save the picture, follow steps 4-6 under CREATING A NEW PICTURE (above). USING THE MAGNIFY OPTION - 1) Once you have a picture drawn (or almost drawn) you can "Zoom In" on bits of it that look interesting. First, load in a previously drawn picture (the picture does not need to be completely finished) via the "LOAD FGS..." option as described above. 2) Pull down the "WINDOWS" menu and select the "Coordinates" item. Please note that this step is ENTIRELY OPTIONAL and is not really necessary when magnifying a picture. 3) Pull down the "WINDOWS" menu and select the "Magnify" item. The cursor will change into a "Magnifying Glass". This tells you that you are now in Magnify mode. 4) Place the cursor at or near the point of interest and press and hold the mouse button. While STILL HOLDING DOWN on the mouse button, begin to drag the mouse. A box is drawn to show the area that will be magnified. You can drag the mouse in any direction. When you have the area you are interested in selected, release the mouse button. 5) When you have released the mouse button, a Dialog Box identical to the "NEW" Dialog Box will appear and show you the specifications for the area you have just selected. Change them as you would if you were specifying a new picture. 6) When the specifications are to your liking, click the "OK" button. The picture that you were working with previously will be closed (if changes were made to it, you will be asked if you want to save those changes), and a new, empty window will be opened (if the Coordinates window was open, it too will be closed). This window will eventually contain the drawing of the zoomed area. To begin drawing this picture, follow steps 2-6 under CREATING A NEW PICTURE (above). 7) If you do not like the specifications for the area you have chosen, click the "CANCEL" button. This will place you back in Magnify mode and you can try again. If you do not want to try again or you did not want to try in the first place, press the escape key and Magnify mode will be turned off. HINTS - 1) When in magnify mode try to get the X and Y ranges about the same. If they are very different, the resulting picture will look stretched or smashed. This is because that, on the ][GS, pixels are taller than they are wide. So, when you are boxing in the area you want to magnify, make the vertical sides a bit longer than the horizontal sides. 2) When in magnify mode and when specifying a new picture, the values for the X and Y coordinate represent the lower left hand corner of the picture. 3) When you are zooming in really 'deep', make the iteration limit larger. Otherwise the picture may end up being all black. 4) An iteration limit of 100 is more than enough for really well detailed pictures. 5) Run these things at night or when you are at work or school. If you live in an area that has a lot of electrical storms or power outages, do NOT run these things unattended. I'm NOT going to be held responsible for fried or otherwise damaged ][GS's. (To quote Dave: "Oh, yeah? How much did you pay to get into the show tonight?") CONVERTING VERSION 1.00 PICTURES TO VERSION 1.1: Like I said earlier, Version 1.00 saved it's pictures incorrectly. I have corrected this problem so that Version 1.10 saves pictures correctly. Since it was not YOUR fault that I screwed up Version 1.00, I have included the ability to load Version 1.00 pictures and save them out in the correct format. The process to do this is simple: 1) Load in the old picture using "LOAD FGS...". 2) Save the picture to the same (or a different) name using the "SAVE AS..." option. 3) Delete the pictures old ".Dat" file. You may want to verify that the pictures attributes are intact before deleting the ".Dat" file. To do this, close the picture file, rename the ".Dat" file to something without ".Dat" on the end of it, reopen the picture file and use the Get Info option to verify that the pictures attributes are OK. TECHNICAL NOTE - Version 1.00 pictures are identified via the fact that the Auxiliary Type of the ".Pic" file SHOULD be zero (0). Version 1.10 files have an Auxiliary Type of 257 (hexadecimal $0101, just like Apple uses to specify version numbers of the ][GS tool sets). If you have trouble converting Version 1.00 pictures, use a utility such as my NoDOS Desk Accessory to check the Auxiliary Type and change it back to 0 if necessary. Convert your pictures now. I plan on removing this conversion ability from the next version. Also, as I stated earlier, pictures and their data are now saved in the same file. This means that a Fractals-GS picture file will be 33K. This scheme saves directory space since you don't have to have the ".Dat" file along for the ride. I hope you like this program and find it useful. If you have ANY questions, criticisms, compliments or CASH you would like to throw my way, please do so. I would especially like to hear about ANY bugs you find in it. This was my first attempt at a full blown ][GS application and I would REALLY love some feedback. My GEnie address is "S.DISBROW", my AppleLink name is "Obnoxio" and my home address is: Steven Disbrow 1421 O'Neal Rd. Hixson, TN. 37343 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~;] ,@ main ] """") ;8[iťåɥ{iH "{i+;ik ;8[iݩ۩6}HH{iH "hݩP۩_{iH H "8"HH"hՆ"<:"" #:"" 2:""<:""F:""P:""Z:"mm"H"h٥ "բ"{i+kby TML Systems, Inc.software are copyrightedCertain Portions of this(c) 1987 TML SoftwareWritten in TML Pascal.%By Steven Disbrow (c) 1987-88 DizSoft--- FractalsGS v1.0 ---Okay ;8[iF :"IIHH{iH"{iH":"99{iHHiH"h{iH{iH"{iH"2:")){iHHi H"h{iH{iH"{iH"F:"{iHHiH"h{iH{iH"{iH"Z:"{iHHi"H"h{iH{iH"{iH"n:"{iH0H"h{iH{iH"{iH":"{iH.H"h{iH{iHH"h{iH{iH"{iH"{i+;ik of Number of rows computed: !Number of Iterations per Pixel: Y Range: X Range: Y Coordinate: X Coordinate: Info On ;8[i6 " "6=H{iH"{iH"h " "{i+k!I am about to close this picture. ;8[iHH"hن{iH 6J"HH{iH "h߆ߢ"HH" 2n H"  H" ߢ8"H"hݥ H "h " "" HH{iH"{iH""} } {iHHiH"h{iH{iH"{iH""m m {iHHi H"h{iH{iH"{iH""b b {iHHiH"h{iH{iH"{iH""W W {iHHi"H"h{iH{iH"{iH""5 5 {iH0H"h{iH{iH"{iH""  {iH.H"h{iH  {iHH"h{iH{iH"{iH""HH" HH" ߢ "٢"{i+;ik of Number of rows computed: !Number of Iterations per Pixel: Y Range: X Range: Y Coordinate: X Coordinate: Info On printer:"Make sure your printer is ready...OkayPrint ;8[i t HH"hՆ{iH 6J"HH{iH "hۆۢ"{iHHiH"h{iH{iH"{iHHi H"h{iH{iH"{iHHiH"h{iH{iH"{iHHi"H"h{iH{iH"{iH0H"h{iH{iH"H"#{iH"'H"#'{iH"(2H"7F{iH"(2'H"7F'{iH" KUH" Zi{iH" KU'H" Zi'H" 2n H" H"ۢ8"H"h٥ق {iH"{iH"{iH"{iH" {iH" {iH"{iH{iH"hHiH{iH "{iH{iH"hHi H{iH "{iH{iH"hHiH{iH "{iH{iH"hHi"H{iH "H{iH"h0HH{iH"08pIuu"7) 8pIPP"   ۢ "բ"{i+  ;ik$Title must be 11 characters or less.#Iteration limit must be 16 or more.OkayCancelTitleIteration LimitY RangeX Range Y Coordinate X Coordinate ;8[iHHUU "KկMׯOٯQۯS{iH "HiH{iH "AկCׯEٯGۯI{iH "Hi H{iH "HiH77 "Hi"H-- "@,.d0HHHH"I HH"{i+  ;ik@@?@untitled ;8[iHH4H2H>"h݆ߥ߅ӥ݅ѥ  67! 4H2H?" H"h"ddש٩@۠4H2H"{iH4H2H8"4H2H'""4H2H"{i+;ik ;8[i9" 4H2H""4H2H"dddd{iH4H2H8"4H2H"*"{i+;ik ;8[iHH"H"hH "hHH"{i+;ik ;8[imHH"h d ˆͥ˅˅ͅͅH"h{iH "Ϧ8pI ˅υυ˅8pI ͅххͅ6"7"."{iHS"{iHS"#6"7"."{iHS"եӥ٥ץHiH{izH "{izH{ipHHiH "{ipH "prtvxHiH{izH "{izH{ipHHi"H "{ipH "pråtťvǥxɥHH "{iH{izH "{iH{izH "{izH "HiH{izH "HiH{izH "Hi"H{izHHi H "{izH "{iH{ipH "{iH{ipH "{ipH "{ipH{izH "Hi H{izH "Ip{ipH{izH "{iH{izH "HiH{izH "{izH{ipHHiH "{ipH "{ipH "HiH{ipH "Hi"H{izHHi H "{izH "In{inH{ipH "{iH{ipH "{ipH{izH "{izH{ipHHi H "{ipH "{ipH "Hi"H{ipH "@,.00HH{iH"I"I*"IHHHHK" HH"!0"Y0"[0"0"\0"  1"1"1" 6 {i+ ;i kuntitled ;8[iߥHH"hنۥ,f" {iH"I!0"Y0"[0"0"\0"  1"1"1" 6 F!1"[1"Y1"1"0" {iH"މv!1"Y0"[1"0"1"1"1" 6  " {iH"މ.8pI!0"Y0"[0"0"0"\0"  1"1"1" 6  "" """ 6 ".8pI0!1"0"""",1"1"1"X1"1" 1" &6"6HHI"I"{iH"{iH"h" $  " $  " nk-ɑɒ@ɓɔ4ɕ/ɖ4ɗ3ɘYq[v\{! ߢ,"{i+;ik!I am about to close this picture. ;8[iH{iH"hͥ͂.+( /h, 0"0"0"X0"0" 0"" I"zw"TQN"G8>06 #H`""""#.#1##4#7#:######W#=##Z#}### {i+k ;8[i""  " ""I""{i+kH;i{HH ;[ H "H"hHHH "hhH "HHHH "hhe: "k ;[HH"HH"""k"k ;[ 0 1 :T+  ;i k ;[ k l e:e::D+  ;i k ;[   :0 )   h)+H   ;i(k HH;[H"h H "  hh+;ik ;[HH""+;ik ;[0  +  ;i k ;[0  +  ;i k ;[0   +  ;ik ;[  Ȁ +  ;ik ;[  Ȁ +  ;ik ;8 [  d) e )e     ;e i ;[907301 )80'e     +  ;ikHH ;[ d0b) W  gF @ e )e)8 0  ):  +;ik HH;[ F0D @0>)8 04  8 8  e :e   hh+  ;ik H;[d 8 2 )    8 ) h+  ;ik {cH;[hh+hk {cH;[ JJJ -)0 0 0 0 0 0 0  hh+hhk {cH;[  :JJJ 1)0 0 0 0 0 0 0  hh+;ik{cH ;[ +;ik{cH ;[ I7+;ik{cH ;[ 7+;ik ;[   (+;i (k ;[I7   (+;i (k ;[ I7  (+;i (k ;[ jjjjjjjj +;ik ;[JJJ+)0 0 0 0 0 0 0 7    (+;i(k H;[IIʩ FeI+k H;[ I Iʀ f  8 F F I+kcck8k H;[IIIIʀFf ee&IIhhhh+k H;[ I I IIʀ&&ff !  8  FfFfͥ  IIzzzzzz+kIIkIIk##kkCCkIIk8 # zz(k *kJjkjjjk***k;8 ;[  {iH "{iH{i H " +;ik;8 ;[  {iH "{iH{i H " +;ik;8 ;[H({iH "h+;ik;8 ;[H({iH "h)+;ik ;[:"hH "h::H:"+;ik;8 ;[{iH "{iHU""+;ik;8  ;[{i H)" 8   {iHU"+;i k;8 ;[{i H)" 8d  "zH"HHg"h{iH ~"h"+;ik;8 ;[{i H)" 8d  "zH"HHg"h{iH~"h"+;ik ;[) eH0"+;ikHHH ;[ HHHHH &"  Ȁ8: ))e:  +  ;ikHHH ;[H HHH HH '"  Ȁ 8: ))e:  +  ;i k;8% ;[$ &{i$H-H+H{iH "{i$H{iH1H/H "+'+&*;i)k ;[HHH)H ("h +;ik ;[HHHH)H )"h h +;ik;8& ;[.H,H{iH{iH{iH "{iH2H0H "+(,'+;i*kHHH ;[ )f A [8Ai a {8ai 80))  J ) J) +  ;i k""""""""""""""""""""""""""""""""33333333333333333333333333333333DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ;[HH "h h +k ;[HH "h h +k ;[;8 ")) )))));i+k ;[ H HHHHH "+k ;[;8")) ;i+k ;[;8" ;i+k ;[;8+" ;i+k;8 ;[.0*, & ( "$ ;iH"+;ik ;[;8 " ;i+k ;[;8 " ;i+k ;[;8 " ;i+k}xsn i d _ZUPKFA<72-(# "#'( )*";i(k;8  ;[dd\:"hi ) A[i     + ;ik;8 ;[$&{iH"Z P$&") d d dd{iH"$&{iH"(+$#;i"k;8$ ;[HH,*"hH,*."h222202 2 2 22 2.)aHHH" "h!#%#2%2# {iH" 22+&2%1;i0k;8 ;[$$D$dd{iH"$$$$$ $$ + $#;i"k;8( ;[HH0."h! " "666646 6 6 66 62)AHHH" "h!#!%!'%6'6 66H0.2"h)6)66646 6 6 66 62)\HHH" "h!#!%!'%6'6) {iH" 666dd{iH"+*6)5;i4k;8 ;[  $ dd{iH"   + ;ik;8 ;[$$>${iH"$$HH""+ $#;i"k;8 ;[$& " {iH"+$#;i"k;8 ;[ "{iH"+ ;ikk;8 ;[  9 $& d {iH"L  +$#;i"k;8 ;[  9 $& d {iH"L  +$#;i"k;8 ;[$$?$$H ""h{iH"M $+$#;i"k;8 ;[  / {iH" H"zz$&+ ;ik ;[) +;ik;8 ;[$$$$$) d {iH"L $+ $#;i"k;8  ;[&&& d {iH"!&&  &!L &+"&!%;i$k ;[) +;ik ;[ HH"+;ik ;[ HH"+;ikHH ;[   ȥ  "+ ;i kHH ;[  )   "+;ikHH ;[  | ~ ȯ w y ȯ{   "+ ;i ktruefalseHHHHH ;[HHHHH &"  Ȁ 8 : ) )e:   "+  ;ikHHHHH ;[HHHH HH '"  Ȁ 8 : ) )e:   "+  ;ik;8) ;[//3 (3*(5 *{i(H9H7H{iH "{i(H{iHHH "5/1"++7*6;i)kHZHH ;[ 80,* )e)     HH"%  ȷ ȷ HH" +kHH ;[   ") "+  ;ikHH ;[   "  ) "+ ;i kHHHH ;[":e   Ȁ :    +  ;ikHH ;[   "%HHeHژ8 ("h "+ ;i kHH ;[   " ,HHHeHژ8 )"hh "+ ;i k;8* ;[0002"LHH{iH{i H{i H "{i H6H4H "02"+,4+3;i*kZHH ;[ "N)   Ș "Ȁػȷ)  Ȁ阠+hhhhkZ ;[ )? HH"% ȷȷ HH"+kZ ;[ ) )   +k;8 ;[d)  : H"h{i H)"{i H "H{i H{i HO"h)HH:" HH")j{i H)"H i H:" @HHg"{i HHH H H~"h"H 8 H:"HH "h)5HH "h)!HH ") PP "+;ikg;8< ;[BBH"h{i H)"{i1H "H{i H{i1HO"h)HH:"d{i H)"  i{iHV"᩼ {iHV"᩼ H({iH "hͥ) {iHU" H i H:"႑v8pI=) {i H)"H H"8hH H:" 8 i{iHU"H"  B5 HHg"{i1HHH H H~"h"H 8 H:"Ⴋd;HHH "hhh=H ""h9) 4;Ȅ;  "= "BN&; " " ";;Ȅ;  9 ";f) B +>B=A;i@kc;8 ;[d)  : HH " " +;ikprinter: console: keyboard: ;8[iHH"h)dߥHiH{iH "{iH{iHHi"H "{iH "{iH{iH "HiH{iH "{iH{iHHiH "{iH "{iH{iH "Hi"H{iHHi H "{iH "{iH{iH "٩@8pI0:H "hi-{iH{iH "{iH{iH "HiH{iH "{eH{iH "قtש8pI0:H "hi{iH{iH "{iH{iH "{iH{iH{iH "{iH "{eH{iH "ׂ\,:H "hi-{iH{eH ",:H "hi{iH{eH "d{iH{iH{iH "{iH "{iH{iH{iH "{iH "{iH{iH "{i-H{iH "{iH{iH "{iH{iH{iH "{iH "{iH{iH ":H "hi{eH{iH "{iH{iH "ͅυхӅՅ{iH{iH{iH "{iH "{iH{iH{iH "{iH "{iH{iH "{iH{iH "{iH{iH " p ݠ0  ݠ0 %݂dݢ7". d ٥:H "hi-{iH{eH ":H "hi{iH{eH " {iH{iH{iH "{iH "{iH{iH "{iH{iH{iH "{iH "{iH{iH "{iH{iH{iH "{iH "{iH{i H "{iH{i H " p ۠0 / {iH{iH{iH "{iH ":H "hi-{eH{iH "{iH{iH "{iH{iH{iH "{iH "{iH{iH ":H "hi{eH{iH "{iH{iH "ͅυхӅՅۂ ۠0 %ۂdۥ  @ 8 @   % IHGH"6"ݢ7"ߥ:H:"8H="4H2HM"ݢ7"ߥ:H:"8H="ۅݥم IHGH"6"ۢ7"ߥ:H:"8H="4H2HM"ۢ7"ߥ:H:"8H="ۅd 8@pIH"h5H"h  -z z {i-H"8pIF ,"נ.٠,{i+;ik ;8[i<<,"33{iH"{iH"HH&&{iH"{iH"{iH"{iH"pp``{iH"{iH"000""HHH-"hH "HHH-"hH "HHH-"hH "HHH-"hH "HHH-"hH "HHH-"hH ""H"h*"{i+k/>> Run \N800==Mandelbrot\N801D==Julia\N802D.==Cycle\N703D./>> Colors \N700==Set...\N701D==Default\N702D3Ii==Magnify...\VN604D*Mm==Next Window\N605D*Ww..E\N600==Full Screen\N601D*Ff==Coordinates\N602D==Get Info...\N603D* >> Windows !0==Paste\N504D*Vv==Clear\N505D.@\N500D==Undo\N501D*Zz==-\N999D==Cut\N502D*Xx==Copy\N503D*Cc\>> Edit ==Quit\N408*Qq.?==Save As...\N405D*Ss==Delete...\N406*Dd==Rename...\VN407*Rr==Load FGS...\N404*Ll7\N400==New\N401*Nn==Close\N402D*Kk==Load PIC...\N403>> File +>>@\XN300==About Fractals-GS...\VN301*?/.d$# '%b"7HLOYjnq{mm%7Sb>BIEIZq'n99V2q'))V2q'(9=@VV2qq'V2q' }1'q';LPSe}1tw}1q'_qk;n;q& x;{;~8qq' ;;88;;8 Fez$  !  !   ) , 5 8 ;A;E H K7AO R UAY \ qq'  tA  A} } V2q'  tA  Am m  V2! q'1  4  7 tA;  >  A AE b H b ^ V2y q'     tA     A W  W  V2 q'     tA     A 5  5  }1% q'5  8  ; tA?  B  E AI  L  ^ }1m  p   }1 q'     tA     A $ $    5 J a V2| % V2 % V2 % V2 %% }1@ %Z ] n ! !   ! !*!Z!tw!!!!03D!p!!!$?Zu3%3%%3A%W3s%2%uuPP(7UU%K MOQSL%PAVC\EbGhI%77%--% "BY]t  +W^\I/j%%Xft:%%%]%%%%%%%%  R!87W%`9lz788Q{]9c;f;r78q)7ES^9d;g;v8q8; ; 89; ;/=iBQZhv78q88 ; ; 8 R ; ; & #  * %6 q< ;? ;B NF iK Qc q x ;{ ;~ D ; ;  ; ; ^       7 q!; !;!& !q!I""!I"1!q'>! K!;N!;Q!8Z!:k!:o!8|!;!;!8!:!8!;!;!80"""7"7"""###!#;$#;'#?#7R#\#7h#;k#;n#q#x##R###"#"#"#"###.##1####4##7##:############W##=####Z##}######:## Y $:$6$ $#$+$61$4$7$8B$F$:U$k"Y$+g$l$u$%z$!%$$#%$#%$%$%$#%$%$%%%%/%%4%!%?%%D%%P%%U%%f%%%n%%%w%%%|%%%%%%%%%%c/%/+/+0/0+,0/1+,1/]14`14n88t88z8888fN8+8hN8hNB9897989@989'99@:8:,8:@Q;8b;Ni;N9<'9@<@<8=68U=68Y=@="8=@ >7>@<>7@>@T>@>8>@>8?@#?@G?,Z?,8n?@?18?@?"-2@8F@@@8@@A7A$A7AaACACABABABABABABBCBCCCCCD?(DBD/DCD6DDDBD DdDFwDJGDFDJGDFOEyF~EJGEyFEJGFyFfFJGFFFFGY@)GCG0GDG7GEGCG!GHHHHH@HGHIL@LJLMSN@xNNNGNJN O%8O%xO%O%O%O%P+P%P+Q%FQ%aQ+Q%Q+Q%Q% R%mR%R%R+S%=S%rS%IT+iT%tT+T%T%T% U%7U%YU%U%V+UV%wV%V+V%XI/Xq/XYXYX%-Y00Y03Y\]6Y\] @B,DFHJLHH "h2Ȋ """ѩ"hHHϢHH "hӆՠIHGH"4H2H"{iH"Hi7H{iH"ӪӠ9ȊѠ=?@CAEIHGH"Hi7H"6","dשd٩{iHW"ߢ"{i+;ik ;8[i{iH""HHH"hݥ   {i+  ;ikCancelOKPlease Insert The Disk: ;8[ii"H"h"HHH "hkkH"kiH@H" moqsuwy{d}dddd:"""" {imH"E{ijH" dj jI  H"9"HkiH"kiHH"H"HkiH""HkiH""{i+k%Loading RAM tools, go get some sun... ;8[i """"""""""""H""{i+k%&, 2 8=@Sey%%%% %~~#%3f6f<%LJOJU%e5h5n%~%%3FLR X ^hkqt".4 : @EH[o    /@Q)%>JP V \adw      /5 ;EHNQiz8j ;j ZU U  ? ? = = q' =  <  <  ) ' , ' 8 % ; % J q'W a  d  p s  q'                  q'  !> ! $ ' 1 4 @ C R q'_ i l x {  q'    3 9Q T o  % % 9   q' %   q'% %- 0 < )V )z ( (   q' % q' %7G7d8h88"89q'%&)8q'Q%Uj Xj jA;nj j 0Cj j Aj j 0Cj j Aj j  Bj j Aj j  Bj j Aj j 0Cj j A3j 6j 90C=j @j CAPj Sj V BZj ]j `Amj pj s Bwj zj }Aj j  Bj j A%j j = &e)e,6U9U<03Vfi8888#1"8? B LR U _lz}))((q'%2q'K%O R d9iS>  E  LD  E  LD  7E  LD  7E  LD  E    LD   E$ ' *LD8 ; >7EB E HLDV Y \7E` c fLDt w z7E~  LDuu  =%YY8 = =8om rr-Nj)6CS`e7ty8      6   " $ & ( * , .   0  2  4 6 8 : !< '> -@ 3B 9D ?F BH EJ HL KN NP QR TT WZ]V `X fZ l\ r^ x` ~b d f h       +0+ATm%55 N^8Ycforux0016294<2?4R0]v0 :/2F:I:L8j0u000000 ;[ ):  +;ik;8 ;[     : !! ie H  HH H"+ H) H1 H" :    A+;ik;8" ;[(@**d-2.000000000e+0 -1.250000000e+0 320 200 2.500000000e+0 2.500000000e+0 320 46 100 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUWwwwwUUUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUywyUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUWwy󹝷wUUUUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUwwwwwuUUUUUUUUUUUUUUUUS333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUwwwٙwwwwuUUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUwwwwwwwwwUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUwwwy}ݹwwwwwwwuUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUWwwwy0wwwwwwuUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUWwwwywu9wwwwuUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUWwwwyٗwUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUWwwwyݙ[wuUUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwywuUUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwy?ջwwwUUUUUUUUUUUUUUUUS333333333333333333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwq7۹wwwwuUUUUUUUUUUUUUUUUS333333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwݻwwwwuUUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwy7ۻwwwwwUUUUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwww[ۻwwwwUUUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwy]۹wwwwUUUUUUUUUUUUUUUUUUUS3333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwww?9wwwuUUUUUUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwy;{p_=wwuUUUUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwy7pۻwwUUUUUUUUUUUUUUUUUUUUS333333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwww?Y ۻwwuUUUUUUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwyݷSpSswwUUUUUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwSSYQ1ۙwwuUUUUUUUUUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwwww;3 3wwwUUUUUUUUUUUUUUUUUUUUS33333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwyy=wwwuUUUUUUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwy5P?ݹwwwwuUUUUUUUUUUUUUUUUUUUS333333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUWwwwwwwwwwwwy7QwwwwwuUUUUUUUUUUUUUUUUUUU33333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwwSQwwwwwwwUUUUUUUUUUUUUUUUUUS3333333333333333333333333333333333333333333333333333333335UUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwwwySwwwwwwwuUUUUUUUUUUUUUUUUU333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwwww{?ۙwwwwwwwwwuUUUUUUUUUUUUUUUS3333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUWwwwwwwwwwwwwwwwy۹wwwwwwwwwwwwuUUUUUUUUUUUU3333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUWwwwwwwwwwwwwwwwyװqwwwwwwwwwwwwwwwuUUUUUUUUS33333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwww՗swwwwwwwwwwwwwwws33333333333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUwwwwwݹݻwwwwwwwwwwwwWwuUUUUUU3333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUww{ߙwY{QۻYwwwwwwwwwywuUUUUU333333333333333333333333333333333333333333333333333UUUUUUUUUUUUUUUUUUUUUUUUUWww==Qۻ5uwwwwwwwwywwUUUUUn. ProDOS cataloggerK038 PACKERS.BNY BIN 00004 02Min. PBH v2.1 & DDD v2.7 disk packersConvert files plL037 WORD.SEARCH.BNY BIN 00004 01Min. Search for words in a word puzzle..on. G036 PIC.PACKER.BNY BIN 00002 01MiwA,p   wA,p   A,p   A,p   A,p   A,p   A,p   aaH _@&'LISA816.FPEvղ' 2 ')M16.68881/T2P7@ # ö  Ͳͱͳ  б ͱ DZDz      абвгдежз ̱̲ ̱βαұ԰ұԱұԲұԴұԸұԱұԳұԶ ұԱ ұԲ ұԵ ұԱ ұԲ ұԴ  ر ز ڱ ̱ ̱ IJ IJ IJ IJ EGEMLPLP FPEOMMAND EGEM EGEM EGEM EMEG EMEG EGEM EMEG EMEG EMEGEGEGOMEG INS ET UT OVEOMEG庠ͱ111ḱ堠1ӠŠӠ11㩠󠠪1䠠11)öö7נ報7̠堳=Ӡ=Ġ?ؠ7נ報7̠堳=Ӡ=Ġ?ؠ6砠2砠͠(󠠠Ӡ3ҠүҠ3ҠүҠ%@=嬠C?䠶)@?ö>Š?ð.>@Š󠭠ö@3& 078@ ö=öŠ3Š&Ӡ;󠠠ö D D D$ DDDΨةDؠ D D D D D D D D D D D籰 DD DD D!D"D#D $D! %D"&D#'D$(D%Š)D&*D'+D(&,D0-D8 .D:ŠDĠ/DĠ1DĠ2DĠ DĠ0D ĠD Ǡ!3Dö 4Dö%5D!6D!7D!8D!9D!:D!;D!<D!=D*>D\͠ ?D@D 籰 AD BD 粨CD籰 DDED0ΨFD1Ψ GD2ް HD3ޱ ID4޲ JD5޴ KD6޸ LD7ޱ MD8޳ ND9޶OD:ޱPD;޲QD<޵RD=ޱSD>޲TD?޴0ö/1=堰婠UDVDWD XD@YDB報婠ZD[D\D]D^D_D `D@:堲婠ĠaD*堳bDcDdDeD*堰fDgDhD iD0#jD!kD@!lD.報)Ҡ報&󠲠䠳󠠠%נ"報)䠽#/#)s.no4> >KJ-p 4> n>n4> L4> oӦo/no%̠"堳)䠽#/#)q.no4> >KJ-` 4> n>n4> L" L4> oӦo/no%Ӡ*)䠽#/#)m.no4> >KJ-d 4> n>n4> L" L4> oӦo/no%Ġ*)䠽#/#)v.no4> >KJ-t 4> n>n4> L& L$4> L" L4> oӦo/no%ؠ,)䠽#/#)r.no4> >KJ-h 4> n>n4> L(4> L& L$4> L" L4> oӦo/no%נ")䠽#/#)u.no4> >KJ-P 4> n>n4>L 4> oӦo/no%̠.堳)䠽#/#)t.no4> >KJ-@ 4> n>n4>L" L 4> oӦo/no%Ӡ0Р)䠽#/#)w.no4> >KJ-D 4> n>n4>L" L 4> oӦo/no%Ġ0Р)䠽#/#)x.no4> >KJ-T 4> n>n4>L& L$ 4>L" L 4> oӦo/no%ؠ2Р)䠽#/#)y.no4> >KJ-H 4> n>n4>L( > 4>L& L$ 4>L" L 4> oӦo/no(&&͠)䠽#)z.o4> >KLJ 4> oӦo/o%%͠Р)䠽#).o4> >KL> 4> oӦo/o,Ӡ)䠽#)|.o4> >JLK, 4> oӦo/o,ö ,Ҡ򠠠Ҡ,Ҡ򠠠Ҡ)}.no4> >J-  4> n>n4> K" K4> oӦo/no-ö,Ҡ򠠠Ҡ,Ҡ򠠠Ҡ)~.no4> >J 4> n>n4>K" K 4> oӦo/noMERLIN.FPEvղ' 2 ')E16.FPE.S IP FINDER.DATA^ Ų)M16.FPE.S 0IRESTORE.EXES  RESTORE.L RESTORE.LNK.SGRESTORE.S' TEST.EXE|;TEST.L^ :TEST.LNK.S=;&TEST.SN/[. 砍 ààؠ젶 ̍ Ů é Ӎ ö ӍŠՠōԠՠҠԍȠՠȍڠՠҠԠĠϠϩԠՠŠԍбՠΨةͱՠŪةȠՠȍΠՠ΍Πՠà΍ȠՠĠȍΠՠŠōΠՠƠԍؠՠŪ؍ؠՠ؍ؠՠ؍Πՠ΍DZՠDZDzՠDzӠՠŠōȠՠȍǠՠōӠՠĠԍРՠŠԠԍΠՠƠԠ֠ՠōĠՠϠҍĠՠč̠ՠٍ֠ՠŠō͠ՠŠҍŠՠŠԍ̠ՠŠٍ ՠԍӠՠŠŠٍРՠōԠՠԍĠՠ̠ՠŠՠĠՠÍΠՠŠՠŠՠ̠ՠö̠ҍӠՠöӠҍӠՠΠӠҍаՠǠԠҠбՠвՠгՠдՠеՠжՠзՠ ͍͠ՠàŠԠ͠͠ύ ҍɠՠɍ̱ՠ DZРՠàō̲РՠĠDzũ̱РՠŠDZũϠՠƠβՠΨαՠΨұ԰ՠްұԱՠޱұԲՠ޲ұԴՠ޴ұԸՠ޸ұԱՠޱұԳՠ޳ұԶՠ޶ұԱՠޱұԲՠ ޲ұԵՠà޵ұԱՠĠޱұԲՠŠ޲ұԴՠƠ޴ ö ҍ ΍ Ǎ Ӯ ݍՠՠՠՠՠՠŠՠŠՠ ݍرՠՠزՠՠڱՠՠ̱ՠՠ̱ՠՠՠՠՠՠ΍ ݍՠՠ􍪍 婍ՠՠՠՠՠՠՠՠ卪 ö ҍ Ǻ ō ö ύ Ӯ ō Ӯ 婍 󍪍 婍 󍪍IJՠՠIJՠՠ IJՠՠ IJՠՠ 捪ՠՠՠՠ ՠՠ 卪 䍪-$m|9 RESTORE.EXE.S689 RESTORE.LNK.S689 RESTORE.LSACS689TEST.EXE.SACS68 TEST.LNK.SACS68 RESTORE.S.CCS68TEST.LE.S.CCS68< M16.FPE.S.CCS68.< E16.FPE.S.CCS68TEST.S.CC.CCS68 ō ɮ é Ӎ ӬͬҨ Ω ō ҍ ө ö ͍ Ӎ Ҭ ͍ ŭ ׍ ԍ Э ͍ӠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čöݬٍݳٍٍöݬ٠ čݳ٠ōͲöݬٍ̍ӠͲ͍ ͍̠Í٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čöݬٍݳٍٍöݬٍݳ٠ōͱöݬٍ̍Ӡͱ͍ ٍנÍ٠čݲݱöݬٍ٠ōͱöݬٍРѠͱ٠čöݬٍݳ٠ōͳöݬٍ̍Ӡͳ͍ ٍĠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čöݬٍݳٍٍöݬٍݳ٠čöݬٍݳٍٍöݬٍݳ٠ōͲöݬٍ̍ӠͲ͍ ٍؠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čöݬٍݳ٠ ġٍöݬٍ٠čöݬٍݳٍٍöݬٍݳ٠čöݬٍݳٍٍöݬٍݳ٠ōͲöݬٍ̍ӠͲ͍ ǍנÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čݳöݬٍ٠ōͲöݬٍ̍ӠͲ͍ ЭǍ̠Í٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čݳöݬٍٍٍݳöݬٍ٠ōͲöݬٍ̍ӠͲ͍ ЭǍӠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čݳöݬٍٍٍݳöݬٍ٠ōͲöݬٍ̍ӠͲ͍ ŭ ЭǍĠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čݳöݬٍٍٍݳöݬٍ٠čݳöݬٍٍٍݳöݬٍ٠ōͲöݬٍ̍ӠͲ͍ ЭҍؠÍ٠čݲݱöݬٍ٠ō͠öݬٍРѠ͍٠čݳöݬٍ٠Šġٍٍöݬٍ٠čݳöݬٍٍٍݳöݬٍ٠čݳöݬٍٍٍݳöݬٍ٠ōͲöݬٍ̍ӠͲ͍ Э ЭǍ ͬ ͬج ΍ǠÍ٠čݲݳݱöݬٍ٠ō͠öݬٍ̍Ӡ͍͍ ̍ ҍӠÍ٠čݱݲݳӍöݬٍ٠ō͠öݬٍ̍Ӡ͍͍ ö ύ ΍ ҍ ҍҠÍݱ٠čöݬٍ٠ō͠öݬٍРѠ͍٠čöݬٍݲ٠īöݬٍݲ٠ōͱöݬٍ̍Ӡͱ͍ ö ҍ ΍ҠÍݱ٠čöݬٍ٠ō͠öݬٍРѠ͍٠čݲöݬٍ٠īݲöݬٍ٠ōͱöݬٍ̍Ӡͱ͍ ōŠÍ٠ōöݬٍöݬٍ͍S ,@restore.exrestore.ex ᯶k᯶k֠󍍠썍ⵍؠÍÍ썍̍ⶠ ㍍ᠣᠾ占ᠾ卍|  ,@test.exe test.exe KHɉ ȗ ȭ  ȭ Hɉ ȗ ȭ  ȭ  hɉ ȷ ȷ ȷ k?$4n@Apti?ɚ>L>Ay>ȱ>ޭ@ ?Eв>=?@HJJJ)8jXXh?`FL-LL  #Š۬ݍR8)]SU UP`W)h Ʌ0:6L0) (U  U)U8`f,1:`/8`湲:`LԦƹƸ/  HHԡԟԝHں6 (d8ϐ*IEʼnJ ހL妉*Di@ei^ e^h킰3$0'H /2`F*ƹƸLd Lvݠh($0h킐hJhhhhhhE`湀\湀p:;. " D0+vhhLLTL!Ұ{  ),(Rڨd𠲸A[ddd I0 I0 ^_ 0^^ ^d`^L湀  H ΰ |LL HLF# J}NbRVZ^deFZyy{z{t} PTFNddULP袊 +륪 #쩊  UZ N { bhJL`   XL ̢#0H0륥! ddd)i~?렉-0H00륝1 ddd)i~?)-h Ji-~@ ~>d8`L tdd蛰/)J  ހ+-fE(.D㥧d`륥 e )ef ހ+-$I:8妅0L- !5#I2F!0 \-- ؠ0  dd ^ ʅ̅&0*8&*e̅ee̅ʅ8dd .襥0 I }j`-:NUUUU,O,O110(MޏlvJ}NbRVZ^zt 3N={@bޏޏ^}Š䮍庠ɠ󮍍䮠䮬ʠŠĠ嬠殠卨ũ󮍍Ӡᠯ򠯯ᠶ䮍ᠶ򠶵ð嬠󺍍ŠŢ􍠠ԠҤŢŠŠŬ㮠占ԠҤŢ堢䢠ŬĠԠ󮩠Š䮍Š䬍殍άӬάά٬ǬЬҬ ﬍ɠԠ宍쮠򮠠ԨĨ堰婮砠Ĩ㮠䠱䠠ĨĨĨة؍ĠĮ򠴠򮍍宍󮠠宠򠪠䠯䢠箍䬠宠𮍍Š䠠䍭ΠӠΠΠǠРҠޠܠĠ堢墠묠ﬠ􍲲Ů󺠠ŠŠŮᠢ ͮЍ󮠠䮍ɠŠ䬠󺍍ЮϮĠŠ󮍍ĠŮICONSvղ' 'FINDER.DATA=%6FPE.ICONS40Y@$*B FPE.ICONSn FPE.SYSTEMUU__UUU_U_UUUUUUUU______U_UUU_________UU U__UU___UU_UU___Uontents of this disk have been reorganized and some of the files have been renamed. * All Apple IIGS-related software is now located in the FPE.IIGS folder. * All Apple II, II+, and //e-related software is now located in the FPE.6502 folder. * The Appleworks Classic modification software is located in the APPLEWORKS.FPE8 folder. Also included is a sample spreadsheet that takes a while to run if you aren't using the FPE. In the FPE.IIGS folder: * The FPE tool set has been renamed FPE.INIT.Sx in the FPETOOLS.INIT folder. * The EXAMPLE folder contains a 65816 assembly language file which demonstrates the use of FPE register-to-register operations to significantly improve floating point operations speed. This file will run with the FPE installed in any valid slot. * The BENCHMARK folder contains an ORCA/PASCAL version of the SAVAGE benchmark and an APW C version of the Byte Magazine floating point coprocessor benchmark. (The program "EXAMPLE" is an assembly language adaptation of this coprocessor benchmark). * The APW.ORCA.FPE, LISA816, and MERLIN.FPE folders contain macros and equates files for use in assembly language programming. These macros are intended to be very basic uses of the FPE, but they are very flexible (see "EXAMPLE"). To use them or to generate your own, please refer to chapters 6, 7, and 8 of the Owner's Manual. * A freeware version of a patch to APPLESOFT for using the FPE. This software was written by Glen R. Bredon. In the FPE.6502 folder, we have included the APW.ORCA.FPE8 and MERLIN.FPE8 macro folders. Note: A new set of 6502 macros and an object file for use with them is included. Because of the way the 6502 addresses the Apple bus when doing an indirect or direct indexed mode, the FPE will generate an invalid procedure error if you put data into the Operand register using these modes. To avoid this problem you must use direct addressing to the Operand register. The macros provide this capability by calls to the object file. The object file is ORG'd to run in memory starting at $4000. It also uses direct page locations $cc-$d1 (Note: these DP locations would also be used by the 6502 version of SANE; however, there is not a conflict if both are used and the memroy location is above SANE). The binary file name is FPESUBS.OBJ To use it with ORCA/M V4.1, copy FPESUBS.A into the /Libraries directory (note, FPESUBS.A does not contain an ORG statement). The APPLEWORKS.FPE8 folder contains the Appleworks Classic modification. ;................................................................ ; ; The FPE has always had hardware ID bytes available to the user. ; ; The bytes are: location value ; $cx05 $38 ; $cx07 $18 ; $cx0c $01 ; $cx0d $af ; ; The programs "FSLOT8.ASM" and "FSLOT16.ASM" are examples of how to ; access these bytes, and "EXAMPLE" is just one way to use them to ; define the slot location. ; ;................................................................ *** Innovative Systems is dedicated to providing you, the user, with system products that make your tasks easier and faster. Please send us any comments and criticisms at any time so that we take them into account and serve you better with our future products. IMPORTANT: Please send in the registration form, along with your phone number, so that we make keep you informed of further iS products and FPE updates/upgrades. We thank you for your support, both now and in the future. Innovative Systems, the Systems People. BONUS: We have also included a SHAREWARE fractal program, written in TML PASCAL by Steve Disbrow, to show what the FPE can help you do. This program is included in the FRACTALS folder in FPE.IIGS. If you like the program, please send Steve a contribution because he spent a good deal of time developing it. Manual Error: The sample code shown on page 22 of the Owner's Manual contains several errors. "E16.COPROCESSOR" and "M16.COPROCESSOR" should be "M16.FPE" and "E16.FPE." Also, the code is meant to be a subroutine with the address of the FPE slot (e.g., $c090 for slot 1) passed to the subroutine on the stack (use a PUSHWORD to put the 16-bit address on to the stack). '(>?@ABCDEFGHIJKLMNOPQRSTUVWXYZL !C_" %k"l" (#M8( % ) L*"m"n" (_7, )7(P0 ( @X p 8  u"!_"f"0 ~&f"0 %o"p" (,) &q"r" ( %L*")0I0hx H( + %Щ ߩu"L! )L! 8'  )ɀ)4,- U JNT) u"Ls"t" ( !` ^"M)Fi/ b"3 h"i"j" e" iL X>"L;"ίΠ`v""""""*$ Fk%YeQP!/RB}QBiBB}\ }FEL,#> ȏ6 . ) ɘ"    L:#:#ŠϠĠԠ  m# m# J Qڨ)̰}] нȱ ̀𩠙 i V N c ɘ\ *+,-./0123456789:;<=0:XX / r Cp  ,L` "L`  $ XL]  p 0 XL] p 4DL. X ei  X --Innovative Systems --Floating Point Engine --Software Installation V. V. V. V. --&&Copyright (c) 1989, Innovative Systems V. --%%Innovative Systems, FPE, and Floating --Point Engine are trademarks of --Innovative Systems. V. --!!ProDOS, Apple IIGS, and GS/OS are --registered trademarks of Apple --Computer, Inc. --$$AppleWorks is a registered trademark --$$of Apple Computer, Inc., licensed to --Claris Corporation. V. V. --Hit any key to continue X`p ) 0p )$ V. -- FPE in slot -,$ V. V. --!!Please enter operation selection: V. --''1 Install FPE Toolset (Apple IIGS only) --%%2 Install Classic Appleworks FPE Code --3 Test Floating Point Engine V. V. V. --0 Quit V. --Enter operation number: $$ V.$8鰍$ L$ V. --Invalid entry: --##Input value must be between 0 and 3 --Please reenter selection. --Hit any key to continue. XL"`& X --((FPE.INIT for ProDOS 16 and GS/OS Systems V. V. V. V. &L% V. --%%Insert the FPETOOLS distribution disk -- into a drive. --Hit any key to exit, --hit return to continue. &ɍL&L% & ? ' &Lb& V. --%%Insert ProDOS 16 or GS/OS System disk -- into a drive. --Hit any key to exit, --hit return to continue. &ɍL&L% ? >L& ? n)G ? --FPE.INIT installed. --Hit any key to continue. &` /fpetools/fpe.iigs/fpetool.inits&'?'+)?3 V. --Enter the Volume Name of the --target system disk. --Use the form '/xxxx' j'''''Lu''`/system/system.setup/p Z)Z) R)#W)g) f)L(W)Y) X)l'`' --%%Unable to open FPE.INIT source file. -,' --Hit any key to continue. '`' --&&Unable to close FPE.INIT source file. -,' --Hit any key to continue. '`' --%%Unable to read FPE.INIT source file. -,' --Hit any key to continue. 'L(Z)H fpe.init.sxP@p + +L)' V. -- Unable to create FPE.INIT file. -,' --Hit any key to continue. 'L+ ,Lf*' V. --((Unable to open FPE.INIT file on target. -,' --Hit any key to continue. 'L+,,,,l) ,m) , ,L*' V. --))Unable to write FPE.INIT file on target. -,' --Hit any key to continue. ' ,Lj+' V. --Unable to flush FPE.INIT data. -,' --Hit any key to continue. ' ,L+' V. --))Unable to close FPE.INIT file on target. -,' --Hit any key to continue. '` FPE.INIT.Sx++HP X --FPE not installed. --Please install FPE and run --program again. Thank you. V. V. --Hit any key to continue. ፋ-ɀw-}--LI---t--u----~-8ЅЩх [.-- 0~---ҝ--нv- [.Н-Ὁ-0-0~--8-- -~- V.̅-`' -327688 -iАѠ V.` V.`U.hhQ.iЅ©íS.JJJJS.) /©âT.JJJJJJ /S.)@P©âT.JJJJ) / N.S.)  V.U.llQ. l6 /` .ЅҥхөЅ`!&&&8᪥҅Ј*8eЈҥ 8ЅЩх`Ӆҥ8ЅЩх8`L/ M/L/  `  ` ȹ`ˆ`///,OK/ i `/ /`// ie`ȱ( ȱi/` 0` 0 8qȪ LEvaluation Stack Overflow  Software InteruptInvalid OperationDivision by ZeroOverflow UnderflowInexact` X1 --((Classic AppleWorks FPE Installation Menu ?L1 X --((Classic AppleWorks FPE Installation Menu V. V. -- FPE in slot 1) 011 V. V. V. 1 ?1H 4L1 ? --One moment please... :3L1 RBL11 3L1 Z8L1 :`?2222+)3 --Enter the directory name of the --AppleWorks Startup disk. --Use the form '/xxxx' j22 V. --Enter the directory name of the --AppleWorks Program disk. --Use the form '/xxxx' j22` 3L383 V. --%%Please insert Appleworks Startup disk -- into a drive. --Hit any key to exit, --hit return to continue. 63ɍL4L:3`2 Ɣ4L4 V. --%%Please insert Appleworks Program disk -- into a drive. --Hit any key to exit, --hit return to continue. 63ɍL4L3`2 Xhh` 8L5 V. --&&Insert FPETOOLS distribution disk into --a drive. --Hit any key when ready. 8L4 ?h8h8h>8Y88H8H B5LA5 6`8 $8f8 V. --Unable to open seg.el file. -,8 --Hit any key to continue. 8L6)8+83858 *8c8 V. --Unable to read seg.el file. -,8 --Hit any key to continue. 8 28 48^8 V. --Unable to close seg.el file. -,8 --Hit any key to continue. X8`8 ?8L78 V. --Unable to open seg.23 file. -,8 --Hit any key to continue. 8L7D8F8N8P8 E8L78 V. --Unable to read seg.23 file. -,8 --Hit any key to continue. 8 M8 O8L78 V. --Unable to close seg.23 file. -,8 --Hit any key to continue.8` 8/fpetools/appleworks.fpe868JPseg.el.xQ8z`seg.23.x8 o:r:o: o: ȁ:L88 V. --Unable to open SEG.EL file. -,8 --Hit any key to continue. 8Ld::::::08::18::: ·: ˑ:L98 V. --!!Unable to write new SEG.EL file. -,8 --Hit any key to continue. 8L9 Ќ:L98 V. -- Unable to truncate SEG.EL file. -,8 --Hit any key to continue. 8 ͙: ̙:^8 V. --Unable to close SEG.EL file. -,8 --Hit any key to continue.8`seg.el h:h:JP=8=LD; === = = ==>L;;8 V. --Unable to read SEG.M1 file. -,8 --Hit any key to continue. 8L= =L; === = = ==>L;8 V. --Unable to read SEG.AW file. -,8 --Hit any key to continue. 8L= = >LK<8 V. --Unable to read SEG.XX file. -,8 --Hit any key to continue. 8L<>== >P=P=P= =I8 >J8 > >L<8 V. -- Unable to write to SEG.XX file. -,8 --Hit any key to continue. = =X X --!!AppleWorks modification complete. --Hit any key to continue. L=8 V. --Unable to close SEG.XX file. -,8 --Hit any key to continue. 88`seg.m1seg.aw = ==J=JEXP` ,?FLQ? &?FLQ? )?FLQ?2:?F? &?FLQ? )?FLQ?3:?F? &?FLQ? )?FLQ?4:?F? &?FLQ? )?FLQ?5:?F? &?FLQ? )?FLQ?6:?F? &?FLQ? )?FLQ?7:?F? &?FLQ? )?FLQ?L?/?;?G? fpe.init.s1 sane.init.1 sane.init? --$$Unable to delete old FPE.INIT file. -,? --Hit any key to continue. ` X` V. --WARNING: --##This modification will destroy your V. --&&original AppleWorks files. Please use V. --''only copies of your distribution disks. V. --''This is NOT required for AppleWorks GS. V. --&&You must know the volume names of your --%%Appleworks Startup and Program disks, --if you have 5.25 inch media. V. --$$If you have 3.5 inch media, you need --##just the name of your Program disk; --$$however, you must enter it each time --you are asked for a disk name. V. V. --Hit return to continue, --any other key to quit. QBɍQB XQB`C CLBC V. --$$Unable to open APLWORKS.SYSTEM file. -,C CLCCCC CL/CC V. --$$Unable to read APLWORKS.SYSTEM file. -,C --Hit any key to continue. CL5CC CLCC V. --%%Unable to close APLWORKS.SYSTEM file. -,C --Hit any key to continue.LCCLCC`aplworks.systemCJ @CAA@0DLDȱ@1DLD @2DLDȱ@3D ALCAL*D `8CB) iA@i F X -- Floating Point Engine Board Test V. V. V. --((This test takes about 15 seconds to run. --Please wait...@@ȩ@@ȱ@ F@ȱ@ @@ȩ"@@ȱ@ F@ȱ@ `@ȩ@@ȱ@ @F @F@F@F@ȱ@ B8BCCLEBLEF FLF V. V. --""Floating Point Engine failed test. --""Please contact Innovative Systems.L,=?BC8 é&'112`HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDLآ <B*IBGF08Lé'+8H <,``h(`@ڍL3hh@ihAiH(ؠȱ@JJJJq@)@qvȱ@Hȱ@Ah@@cqe J) LL LJiB LJ) BxNhHHHHL(  ްƠx@BEOD  ް(`( C)CJJJl`B g-`J,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h ߐ( ߐ ߐ  0 HϭߍLпllllhh8` Q)T'P#) ɺiL? )?      `l@Hȱ@IױHXATȱH ɯȩ׍̎5H)/@a)_ .0 :A[8@`,뎎׮Б` L ` @>O)I38 I`aם`K8`@Nȱ@O@ IiNȽבN)/ȩ/N`@[ WHJjjjhA D'KI؍0JHi 뎁`C8` @ 3N@) K莭 ⭪i`0 ]; 뮁ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّNΨ0NN` G8`F@ 0 H LK8`6 7I8`FHGH hGhF܌ բFܽܕF芝ܝ 밶67 8܅I m9IHHyHȘI Lܝ` @_@ g@Ю׍O)mיOʈ@mȱ@_ȱ@iklbJtKuO)5OI0ܢܽ eL'A* 7`aFG (CD Lz܅IN mAIH` pm mI0LM AOHJFKG 밳JK 밨C%܈@" T)Ii)܍N*܍A'ܮ( 4 䭐 $H %HFFHGHG 됬`R8`)` AHO` 'Q'܅IHHOOЍO@`8 ` ͉% ΉQ8`܅I `L܍MN h8D`F` alH)HFȍJHGK $%܍&܍!ܢ8* J8` L ܝ:)I 'ܝ6`B8iNFLGM`B܅IH3H ( )ȱHΨ`Ί8AeHI SB60I ٙGٙEFJCʈ h猪`8m0`,0H hi PȽΨhٍ0GF8yאFG  $0 K01 E8`1ݺ00 ] 0ʩ 谼 谷`12)1`0`Ȏi 0U`)8`Ψ` W |G 4A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`R ꍌvw zNمFمG < Ό0 FGL鮁0 ٭w٭vٽ8`H8`  ,v w 8` vw `ٽJJJJ`H͌hn)NjNjNjN. GH͌ z;٭ *Nۙ۰ڙک `Z8` G# ,`w .w .w .w8۰*Jv۩ ٰvw`JJJJ;i z묁͖ zٍ0  `H8` `ٍyٍiB0H0FG h0`FG `ϩBxED0C ް(`(8`ؑ@`M8`8@ؐʈI묂)v8vv L} LةC8`؍)@ i)v8vyJ ^ ؅F Ls) +%J(a .FإGؐ.` .JHIH IL3FHGI ҭJjHIHB>IؙJJ [: IL}HIHI`JKJK`FHIG ( Ȣ؝}؈JL)eKM`)` J vJ͛ $0 ΊJFJL8`JGBJ T FإG`BH TFإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` zL+J  :"L zH  : 9ؙ` @ P8`K8`B8` H؈OJJJJحm) ) )Ю ЪG `F $ ᭔ع+ؠ 6H  Rh8` 䮁ٽ ٬ؠ@` ( H )8`)i п` H h)N$% LL L L 6 &pJ덟 )@።NJOK 6iKKΞΞ IJΟ JФ̭JjHFIH HIGxKE ް((H hH h8`8@ȭ@L6쬂8NNO 8 ؍JL`RΞʱLN1MOMEKP/MEKΞL;L-M O,p莝eNNO(`JNKOL 6/ &P L8 } [ؑJ`L@ȱ@ `@Nȱ@O`؝}}vIvؐ` jzؽ}؝v j ) j؝zv؈` ` H Th)N@ ;; L  6$ )bJ ] ) H 8hL )  )حJjIwHIvH؊ PLKΞʱNLMO MЈMEKݸP%MEKΞL( O, PeNNO J(` C  7 2JvHIwHI؊ LI  .` A Hv ع Hw ؙ؊ؠIhHIhH  iع `  عiعi` )؍0CGHFHBFGx ް(8hFhG`@4͔ L @Ai ׭2` . R#ع؍0 ]讁)`.@+ i 8` L )߹0 )p )@ ) ȩ ؝H0JK 방 LMJKFG 嬂؍b؍c؝d ؝_ vO) vO )حI͖ z`H@h`h``N8`  ) ;⬂Ȣ؝z@zݚ@ʈLJ KIJHȢݚ h魚)Jn 8 δ ؍ ؍ \H8 ع)ꭱJJJJ Ȣ؝I؈ 6h(8H = h(8Hh(`ؑ@`@ȱ@ ` B@8ZO h鮁ٍٍٍoHٍn8bhcOJJJJO)O@` %I -m) 0@O)N8` @LL =@ /ȹP8` i` =ם0 /B =)( ȹ`8m8m@8` G8`F Pm)@N8`O)@J /טyרםOO)׍O`a 밑 LȹL@ȅH@IL,0` G קּ= ]H.m)N 0 H`aO)@LP8` \᮰ ֩OCDC z L䬁yٙ٭yٙ٩`K GE`FaG 6%&N    ܮ `J HH hh` 0 @ LGL r`̴Yܝ ݝ0̴ȩFG   0` ܅F݅G ` { rͬ 밽܅F݅G ` {* r% L`L뮰HH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 {9X(K {XXK تKo`V8`no` D on {I9XX`)HJJJh`OeNeO࿰ {9XАO`@ȭ@` ON aNJKO`HхhꭋILhH),fx8 (8` ԍ`@Ae J m00[roIIJK,-NOPQRSu' @   !"#$Ԡ͠(C)1983-87APPLELKL`BLL ެެެެެެެެެެެެެެެ(C)APPLE'83xLLM Mh@8nЍLޭ 0J @,,LRP׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3QZYXXWV[HEVhEhH)IWHPHHHAHHHLaVEWLӿ`` ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  0h)ύh0HHHH " ׍hhhhhhh .hh8`JIMJAYKERRY&MIKE 􍍠썍欳栠 ፠󠱰O6v$* BFPE.FPE.DOC'gf$*5ICONS5B APPLESOFTBFPE.6502APPLEWORKS.FPE8FPE.IIGS5 RELEASE.NOTESUB FPE.SYSTEMUPRODOSH