• sumacc.mail - May 10, 1985

    From D Finnigan@dog_cow@macgui.com to comp.sys.mac.vintage on Thu Feb 22 15:23:35 2024
    From Newsgroup: comp.sys.mac.vintage

    Date: Tue 19 Jun 84 12:43:24-PDT
    From: Joseph I. Pallas <PALLAS@SU-SCORE.ARPA>
    Subject: QD and QDVar
    To: croft@SUMEX-AIM.ARPA
    cc: sumacc@SUMEX-AIM.ARPA

    The pascal programs don't explicitly allocate a struct QDVar and
    assign QD to point at it. Is there some reason that you don't have a statically allocated struct QDVar and statically initialized global
    QD pointing at it in the library?

    Such a scheme would still allow you to modify QD if you wanted to, and
    save one extra step that's VERY easy to forget.

    joe
    -------
    21-Jun-84 12:18:10-PDT,3333;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Thu 21 Jun 84 12:18:01-PDT Date: Thu, 21 Jun 84 12:20:55 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: using MACSBUG with SUMACC
    Cc: croft, sumacc@sumex

    ----
    Date: 20 Jun 1984 20:27-EST
    From: David.Anderson@CMU-CS-G.ARPA

    I picked up my copy of the SUMacC disk today, and it included MacsBug
    and Disassembler. I can't figure out what they do -- can someone
    enlighten me? They sound terribly useful.

    ----
    David,

    Your SUMACC disk as distributed has MACSBUG named xMACSBUG, this prevents
    it from being loaded at boot time. If you want to debug something you
    should follow these steps:

    Ensure that Macsbug is NOT loaded; i.e. the name in the system
    folder should read "xMACSBUG". If this is not true, then rename it,
    attempt eject (to flush), and reboot. MacTerminal and the Finder don't
    work well when the large MACSBUG and DISASSEMBLER are loaded; Finder
    runs out of space and MacTerminal crashes.

    AFTER you have downloaded and/or converted your program, then
    rename "xMACSBUG" to "MACSBUG", eject, and reboot. This will load
    the debugger/disassembler at the top of memory.

    Make sure that you have an ASCII terminal connected to the
    "printer" port at 9600 baud.

    Double click your program, pause a half-second, then hold down
    the mouse button. When you hear a beep, release the mouse button.
    What this does is: (1) load your program, (2) tells the "C runtime
    startoff" (lib/crtmac.s, the first part of your program to
    get control after loading) to "pause" before entering your main
    program. This will give you time to set breakpoints or alter
    memory before your program starts.

    The "beep" means crtmac is waiting in a tight loop for register
    D0 to become zero. It will just sit there forever. Now on
    the side of your Mac, carefully press the "INTERRUPT" (not the
    "RESET") button once. The debugger should print out a register
    dump on your terminal.

    I assume you have read the section "ROM 7.0 MacsBug Summary" in
    your Inside Macintosh. This is located somewhat behind the "Misc"
    tab in my copy. Other sections that are helpful are "Pascal Program
    Debug Strategy" and "Toolbox Names"; the latter is useful for setting breakpoints on toolbox calls.

    To MACSBUG, type "d0 0"; this clears register D0 and will allow
    the program to proceed. Now you might want to set a breakpoint on
    a location or a trap; use the appropriate "br" or "at" command.
    You will probably want to have an assembler listing of your
    program; use the "-S" switch of cc68. After you are ready to
    proceed, type "g" or "t". This will go to the next breakpoint
    or trace each instruction before execution.

    When finished debugging you will (unfortunately) need to rename
    MACSBUG back to xMACSBUG and reboot if you want to use MacTerminal.

    BETTER DEBUGGERS: Soon Apple will be releasing their two-Mac debugger/ assembler system. Instead of an ascii terminal on the printer port, you
    use another Mac with a nice window based debugging package. And instead
    of MACSBUG/DISASSEMBLER there is just a tiny "stub" that lives on the
    system heap which interfaces to the "remote" window debugger. This idea
    is very similar to David Bogg's old "TeleSwat" protocol on the Alto.
    21-Jun-84 12:38:44-PDT,1064;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Thu 21 Jun 84 12:38:41-PDT Date: Thu, 21 Jun 84 12:41:47 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: utilities on SUMACC disk
    Cc: sumacc@sumex

    Date: Wed 20 Jun 84 00:37:38-EDT
    From: BERGER@CMU-CS-C.ARPA
    Subject: SetFile and resource mover questions

    I can't get SetFile to set the creator field of a file. Am I
    doing something wrong, or is it just broken?

    Also, how do you get the Resource Mover to do anything?

    Robert Berger
    Berger@CMU-CS-C

    Somewhere in the Monitor/Workshop/Inside Mac document set was a "hint"
    on how to use SETFILE. There is a bug in SETFILE and you have to use
    the "tab" key (rather than the mouse) to select the text field(s) that you
    want to edit. After changing all the stuff you are interested in, then
    you mouse "SET IT" and exit.

    For a discussion of the Resource Mover, see the section "Working with
    Resource Files on the Macintosh" in the "Putting Together an Application" document dated 1/13/84.
    22-Jun-84 16:49:10-PDT,1566;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Fri 22 Jun 84 16:49:06-PDT Date: Fri, 22 Jun 84 16:51:41 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: debugging new icons
    Cc: croft, mikes@cit-vax, sumacc@sumex

    The finder has a "cache" of the icon information that it gleans
    from your application resource file when it is installed for the first
    time. This means that the finder runs faster, but there is also
    a finder bug here: there is currently no way to tell the finder
    to refresh his cached icon pictures.

    This situation where this is most painful is when you are debugging
    the icon for your application. Even though you change the icon in
    your program's resource file, the finder won't see the change.
    Currently the only solution is to force the finder to rebuild his
    DeskTop file by rebooting with command-option held down. (Since this
    cache is indexed by filetype/creator, you should also ensure that
    ALL your applications on the disk have the new definition in their
    resource file's because you don't know which one the finder will
    encounter first to make his cache entry).

    One solution might be to have the finder compare the date when he
    made his cache entry to the "modified" date of the file being
    considered. If the file is newer than the cache, that entry in
    the cache should be rebuilt.

    When I mentioned this to Bruce Horn, he said that he had once
    considered checking the (SETFILE) "init" bit for this purpose, but
    didn't have time at the moment to implement it.


    Date: 1 Jul 84 (Sun) 11:59:06 EDT
    From: Dave Johnson <ddj%Brown@csnet-relay.arpa>
    To: Bruce.Lucas@cmu-cs-ius.arpa, info-mac@sumex-aim.arpa
    Subject: Re: debugging icons

    I tried using the Resource Mover to edit bad icons out of the Desk Top,
    as was suggested, with only partial success. At first I was using a new author-identifier for each new try at an icon, but this seems wasteful
    and would probably require eventually building a new desktop when it
    becomes too full.

    My original strategy for using rmover was to throw away the application with the old icon, or turn off the bundle bit using Set File if the application already had the new icon (but was showing the previous version), then go
    into rmover on the Desk Top, and cut out the resource named by the author string (ie, CCOM, or safer, TEST). When the bundle bit was turned back on,
    the new icon did appear, but unfortunately the previous mask was still
    there.

    I believe removing one of the ICN# resources would solve the problem, but
    don't have any idea which one to remove (there were about 16 ICN# resources
    on the disk I was playing with). I did try cutting out all of them (pasting them in a handy MacTerminal document), but this resulted it a "Ghost Disk" where all of the fancy icons had vanished, and I couldn't get them to come
    back using the usual Bundle Bit trick. They did return when I pasted the resources back into the desk top, but it still gave me the bad mask . . .
    back where I started. (the folder, generic document, and generic
    application
    or "hand" icons are probably in the System file -- only they survived
    without
    any ICN# resources in the DeskTop). The disk was also in bad shape after
    this
    ordeal; with a messed up free list, it eventually had to be erased.

    Until someone figures out how the Finder maps reference idents, the best way might be to debug icons on a scratch disk with no folders and only MacTerm, SetFile, and the application being worked on, so you could blow away the DeskTop any time without much pain. Then once the icon is finished, move it
    to a more stable disk.

    Nicer would be a version of the icon editor that could install the icon directly into the application's resource (and the finder?), so we don't
    have to muck about sending the icon to the VAX, installing it in the .rc
    file, rebuilding the application, and sending it back to the Mac again.
    Even a utility that would do nothing but install icons into applications
    would be better than the current situation.

    Dave Johnson
    -------
    3-Jul-84 15:47:10-PDT,1282;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Tue 3 Jul 84 15:46:56-PDT
    Date: Tue, 3 Jul 84 15:49:34 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: new macsbug uses window instead of tty
    Cc: sumacc@sumex

    Apple has given us a new version of Macsbug that interacts through a
    window at the bottom of the screen. As you recall, the Macsbug distributed with the Workshop 2.0 requires an external tty on the line printer port.

    The new Macsbug is archived on SUMEX (FTP login: anonymous) on <info-mac>macsbug.data. You must retrieve it with "tenex" or "type l 8"
    FTP mode, since it is an 8 bit file. After transfering it to your local
    UNIX, download it with "macput -d macsbug". Note that this is a program,
    but it's in the data fork (not resource fork). I assume you have read the previous note on info-mac concerning use of Macsbug.

    After downloading, you should remove or rename any older debuggers
    ("xMacsbug"
    or "Disassembler") that you had on your disk. The new Macsbug has the disassembler built in, so it is wasteful to load Disassembler twice.
    The new Macsbug is probably slightly larger than the old
    Macsbug+Disassembler,
    and it can't be split off from the disassembler if you're really tight on space.
    3-Jul-84 15:58:43-PDT,1077;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Tue 3 Jul 84 15:58:26-PDT
    Date: Tue, 3 Jul 84 16:01:05 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: StartupScreen and ScreenMaker
    Cc: sumacc@sumex

    Apple has also given us their ScreenMaker program. This program reads
    the upper left corner of a MacPaint document and converts it to a 20K byte
    file called StartupScreen. If this file is present at boot time, it is displayed instead of the "Welcome to Macintosh" message you normally
    see. (If you are using Macsbug AND StartupScreen, a tiny line lights up
    at the top of screen, in place of the "Macsbug loaded" message).
    A disadvantage of StartupScreen: it takes up space on your disk and
    causes startup to be about a half-second longer than normal.

    The ScreenMaker is archived on SUMEX (FTP login: anonymous) on <info-mac>screenmaker.rsrc. You must retrieve it with "tenex" or "type l 8" FTP mode, since it is an 8 bit file. After transfering it to your local
    UNIX, download it with "macput -r screenmaker".
    10-Jul-84 11:27:08-PDT,3543;000000000000
    Mail-From: CROFT created at 10-Jul-84 11:27:04
    Date: Tue 10 Jul 84 11:27:04-PDT
    From: Bill Croft <CROFT@SUMEX-AIM.ARPA>
    Subject: [Mike Schuster <MIKES@CIT-20.ARPA>: Hacking the Text Edit scrap]
    To: sumacc@SUMEX-AIM.ARPA, croft@SUMEX-AIM.ARPA

    Return-Path: <MIKES@CIT-20>
    Received: from CIT-20.ARPA by SUMEX-AIM.ARPA with TCP; Tue 10 Jul 84 11:03:21-PDT
    Date: 10 Jul 1984 1104-PDT
    Subject: Hacking the Text Edit scrap
    From: Mike Schuster <MIKES@CIT-20.ARPA>
    To: info-mac@SUMEX-AIM.ARPA

    The Text Edit routines use a scrap whose length and handle are located
    in the low memory global area. The length of the scrap is a short at
    absolute 2736. The handle to the scrap is a long at absolute 2740.
    Here is a useful C structure:

    typedef struct
    {
    short length; /* length of text edit scrap */
    short filler; /* what is this for? seems to be -1 always */
    Handle handle; /* handle to text edit scrap */
    } TEGloRec;
    typedef TEGloRec *TEGloPtr;
    TEGloPtr TEGlo;

    The variable TEGlo is initialized via

    TEGlo = (TEGloPtr) 2736;

    The routine TEInit initializes TEGlo.length to 0 and TEGlo.handle to NewHandle(0). The routines TECut and TECopy set TEGlo.length to the
    length of the selected text and set TEGlo.handle to point to a copy of
    the selected text.

    If you are using the TE scrap as a private scrap, here are some things
    to remember:
    1) Be sure to squirrel away a copy of the TE scrap before opening a
    dialog box containing editable text, since the scrap might be
    modified (for example, SFPutFile).
    2) Be sure to establish a convention on the location of the 'true'
    clipboard. Here is one that seems to work:
    When an application window is active, the clipboard is contained
    in TE scrap. When a system desk accessory window is active, or
    when no windows are open, the clipboard is contained in the
    Scrap Manager scrap.
    With this convention, I perform the following TE scrap -- SM scrap
    transfers:
    a) when no windows are open, and an application window is opened
    (SM scrap -> TE scrap).
    b) when an application window is closed leaving no opened windows
    (TE scrap -> SM scrap).
    c) when an application window is deactivated or closed and a desk
    accessory window is activated or opened (TE scrap -> SM scrap).
    d) when a desk accessory window is deactivated or closed and an
    application window is activated or opened (SM scrap -> TE scrap).
    e) when an application window is active upon ExitToShell
    (TE scrap -> SM scrap)
    You can use the changeFlag in the modifiers field of the next
    event to catch some of the cases c) and d). Be aware that no
    deactivation event, and hence no changeFlag occurs when a window is
    closed. I have been forcing the clipboard scrap to disk to avoid
    multiple copied during these operations. Be sure to check for
    SM errors (such as disk locked or write protected, etc).
    3) Be careful with cutting and pasting long selections. I have seen
    cases where a TERecord was left in an inconsistent state after a
    TEPaste. I suspect that TE routines fail to handle MemError
    conditions. On the other hand, it maybe a bug in my program.
    I'm currently reverse engineering TE to find out whats going on.
    Preliminary results support my conjecture.

    Mike
    (mikes@cit-20, mikes@cit-vax)
    -------
    -------
    11-Jul-84 10:28:48-PDT,1778;000000000000
    Mail-From: CROFT created at 11-Jul-84 10:28:45
    Date: Wed 11 Jul 84 10:28:45-PDT
    From: Bill Croft <CROFT@SUMEX-AIM.ARPA>
    Subject: [Mike Schuster <MIKES@CIT-20.ARPA>: Optimizing the TextBox routine] To: sumacc@SUMEX-AIM.ARPA, croft@SUMEX-AIM.ARPA

    Return-Path: <MIKES@CIT-20>
    Received: from CIT-20.ARPA by SUMEX-AIM.ARPA with TCP; Wed 11 Jul 84 10:07:58-PDT
    Date: 11 Jul 1984 1008-PDT
    Subject: Optimizing the TextBox routine
    From: Mike Schuster <MIKES@CIT-20.ARPA>
    To: info-mac@SUMEX-AIM.ARPA

    The TextBox(text, length, box, j) routine evidently operates by first
    calling EraseRect to erase the box, then calling TENew to allocate a
    TERecord, then calling TESetText to stuff the text into the TERecord,
    then calling TEUpdate to draw the text, and finally calling TEDispose
    to deallocate everything. Unfortunately, TESetText creates a copy of
    the text.

    So, TextBox should not be used as is to draw your private scrap into a 'clipboard' window, especially if your scrap is long. As an alternative,
    you can write your own TextBox that first stuffs the handle to your
    private scrap into the hText field of the TERecord, then stuffs the
    length of the handle into the TELength field, and finally calls
    TECalText to recalculate the lineStarts array, as suggested in Inside
    Mac.

    The problem with this alternative is that the lineStarts array can get
    long. As a second alternative, you might figure out how many lines will
    fit into the box by using information returned by GetFontInfo, and then
    scan down your private scrap to find an upper bound on the number of characters that will be drawn, by counting end-of-line characters.
    Finally, you supply this upper bound as the TElength field.

    Mike
    (mikes@cit-20,mikes@cit-vax)
    -------
    -------
    13-Jul-84 10:17:22-PDT,623;000000000000
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Fri 13 Jul 84 10:17:16-PDT Date: Fri, 13 Jul 84 10:21:09 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: disk spinning during macsbug
    Cc: croft, sumacc@sumex

    Since the disk drive motor is shut off with a software timeout,
    it can remain on "forever" if you hit a breakpoint in macsbug
    while it's spinning. Bruce Horn offers this advice:

    Yep, you're right, it's timed in software.
    The address to kill the motor is the IWM, DFF1FF.
    Just do a DM DFF1FF in the debugger and it should turn the thing off.

    Bruce
    13-Jul-84 10:28:28-PDT,1645;000000000001
    Mail-From: CROFT created at 13-Jul-84 10:28:25
    Date: Fri 13 Jul 84 10:28:24-PDT
    From: Bill Croft <CROFT@SUMEX-AIM.ARPA>
    Subject: [Mike Schuster <MIKES@CIT-20.ARPA>: wordBreak hook in Text Edit]
    To: croft@SUMEX-AIM.ARPA, sumacc@SUMEX-AIM.ARPA

    Mail-From: PATTERMANN created at 13-Jul-84 08:51:16
    Return-Path: <MIKES@CIT-20>
    Received: from CIT-20.ARPA by SUMEX-AIM.ARPA with TCP; Thu 12 Jul 84 22:56:22-PDT
    Date: 12 Jul 1984 2256-PDT
    Subject: wordBreak hook in Text Edit
    From: Mike Schuster <MIKES@CIT-20.ARPA>
    To: info-mac@SUMEX-AIM.ARPA
    ReSent-date: Fri 13 Jul 84 08:51:16-PDT
    ReSent-From: Ed Pattermann <PATTERMANN@SUMEX-AIM.ARPA>
    ReSent-To: info-mac: ;

    You can change the set of word delimiting characters used by the Text
    Edit routines for word wrap calculations and double click selections
    by installing a non-zero address of a routine in the field 'wordBreak'
    of a TERecord. The default set of delimiting characters is /00 thru
    /20, inclusive. The routine is passed the address of the first
    character of the text in a0, and an offset to the character in
    question in d0. The routine returns with d0 nonzero if the character
    is a delimiter. Also, the status register should be set reflecting
    the value in d0. As a sample, this routine defines delimiters to be
    /00 thru /2f, inclusive.

    .text
    .globl wdbreak
    wdbreak:
    cmpb #/2f,a0@(0,d0:w)
    sls d0
    tstb d0
    rts

    One thing to remember: defining a period '.' to be a delimiter might
    be great for editing C programs, but lousy when word wrapping causes a
    period at the end of a sentence to appear on the next line all by
    itself.
    -------
    -------
    17-Jul-84 00:42:22-PDT,2537;000000000001
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Tue 17 Jul 84 00:42:07-PDT Date: Tue, 17 Jul 84 00:46:01 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: additional macsbug commands
    Cc: croft, sumacc@sumex

    The "new" macsbug (that uses a window at the bottom of the Mac screen)
    that was posted to info-mac a few weeks ago, has some new command syntax.
    Here is a note from Bruce Horn explaining the new commands:
    ----

    Here's a summary of the new Macsbug commands:

    CL a -- clears the breakpoint at location a. If a is omitted, all
    breakpoints
    are cleared.

    BR a c -- sets a breakpoint at location a for count c. This allows you to
    say
    "Stop after this location is hit 6 times."

    GT a -- is Go Till a. (i.e. sets temporary breakpoint at a and goes.)

    T n -- Traces n instructions.

    S n -- Steps through n instructions This is just like the old trace, where
    it will actually step into the dispatcher. Now T, the previous command,
    will
    step OVER a trap. No more tracing through the dispatcher when you just want
    to get back to the main procedure.

    MR n -- Looks n bytes down the stack and replaces the longword there
    (usually
    a return address) with a magic address in the debugger. Instead of
    returning
    normally, this returns control to the debugger which puts back in the real address. This is a good way to step across subroutines which you know are good--just trace one instruction into the routine and type MR.

    WH x -- if x<512, prints out the address corresponding to the A-Trap
    numbered
    x. If >=512, the A-Trap "nearest" the address X will be printed. This is useful for finding out what trap was executing when an error occurred.

    RX -- Toggles the display mode so that the registers are or are not dumped during a trace command. The disassembly at PC will always occur.

    I think that's all of the new or changed routines in the improved Macsbug.

    Parsing is slightly different, however. Gone is the DH command, replaced by the prefix @ for indirect. So the command DH 4200 is replaced by DM @4200.
    An additional symbol, TP (thePort) is also supported. This is useful for looking at the Quickdraw globals.

    You can reference addresses relative to a given location just by using the + operator. You can also use ".", last address referenced, to temporarily
    have
    an anchor from which to reference relative addresses. For example, DM 14000 will set . to 14000, and then you can say DM .+200, DM .+400, etc.

    Bruce
    -------

    18-Jul-84 20:02:41-PDT,1457;000000000001
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Wed 18 Jul 84 20:02:37-PDT Date: Wed, 18 Jul 84 20:06:31 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: non local returns in SUMacC using setjmp/longjmp
    Cc: sumacc@sumex

    The "libc.a" provided on the SUMacC distribution contains a setjmp/longjmp.
    The calling sequence is the same as for 4.2BSD (and most other UNIXes).
    Your program must declare a "type" jmp_buf:

    typedef int jmp_buf[13];
    jmp_buf environ;
    ...
    if (setjmp(&environ) != 0) { /* abort */ }
    ...
    longjmp(&environ,1); /* return to toplevel */

    Here's the assembler in case you're curious:

    |setjmp, longjmp
    |
    | longjmp(a, v)
    |causes a "return(v)" from the
    |last call to
    |
    | setjmp(v)
    |by restoring all the registers and
    |adjusting the stack
    |
    |jmp_buf is set up as:
    |
    | _________________
    | | pc |
    | -----------------
    | | d2 |
    | -----------------
    | | ... |
    | -----------------
    | | d7 |
    | -----------------
    | | a2 |
    | -----------------
    | | ... |
    | -----------------
    | | a7 |
    | -----------------

    .globl setjmp, longjmp
    .text

    setjmp:
    movl sp@(4.),a0 |pointer to jmp_buf
    movl sp@,a0@ |pc
    moveml #/FCFC,a0@(4.) |d2-d7, a2-a7
    clrl d0 |return 0
    rts

    longjmp:
    movl sp@(4.),a0 |pointer to jmp_buf
    movl sp@(8.),d0 |value returned
    moveml a0@(4.),#/FCFC |restore d2-d7, a2-a7
    movl a0@,sp@ |restore pc of call to setjmp to stack
    rts
    20-Jul-84 21:04:44-PDT,1700;000000000001
    Mail-From: CROFT created at 20-Jul-84 21:04:36
    Date: Fri 20 Jul 84 21:04:35-PDT
    From: Bill Croft <CROFT@SUMEX-AIM.ARPA>
    Subject: [INTMET@BBNA.ARPA: Update events]
    To: sumacc@SUMEX-AIM.ARPA

    Mail-From: PATTERMANN created at 20-Jul-84 18:47:00
    Return-Path: <INTMET@BBNA.ARPA>
    Received: from BBNA.ARPA by SUMEX-AIM.ARPA with TCP; Thu 19 Jul 84
    12:52:51-PDT
    Date: Thu 19 Jul 84 15:53:28-EDT
    From: INTMET@BBNA.ARPA
    Subject: Update events
    To: info-mac@SUMEX-AIM.ARPA
    ReSent-date: Fri 20 Jul 84 18:47:00-PDT
    ReSent-From: Ed Pattermann <PATTERMANN@SUMEX-AIM.ARPA>
    ReSent-To: info-mac: ;

    It seems that the window manager does not generate an update event for the
    desk top. Since the desk top isn't realy a window it isn't clear how it
    would refer to it. A comment in the work shop pascal sources that were included in sumacc annotates a check if the update is on a window who's
    pointer is null says "Whats this for?" And the awnser seems to be... if
    it was ever decided to generate update events for the desk top then it
    might be reffered to by using a null pointer in the event message.
    I presume that finder updates its "desk top" by slipping a real window
    over the entire desk, sort of a table cloth I guess.
    The manual suggests that if you recieve an update event for a desk
    accessory that you ignore it, it also says that it should neve happen.
    It realy isn't a good idea ever to ignore an update event, the event
    manager checks for windows which need updating often, if you don't call BeginUpdate and EndUpdate on the window once you get the update event then
    the event manager will keep throwing the event at you with a passion.
    Ben Hyde
    -------
    -------
    23-Jul-84 13:41:09-PDT,808;000000000001
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Mon 23 Jul 84 13:41:03-PDT Date: Mon, 23 Jul 84 13:45:16 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: GetCursor
    Cc: sumacc@sumex

    Date: Sun, 22 Jul 84 22:45:24 edt
    From: chavez@harvard.ARPA (R. Martin Chavez)
    Subject: Cursors

    Does anyone out there have rmaker.c definitions for
    the watch and shadow-"+" cursors? If not, I'll just paste in
    some cursor resources from the system file.
    Thanks,
    R. Martin Chavez

    Actually, look at the "file" example program, the normal way to pick
    up these other cursors IS from the system resource:

    CursHandle watchH;
    watchH = GetCursor(4); /* Apple should put these magic numbers
    in an interface file somewhere */
    SetCursor(*watchH);
    23-Jul-84 18:17:46-PDT,1043;000000000001
    Return-Path: <croft@safe>
    Received: from safe by SUMEX-AIM.ARPA with TCP; Mon 23 Jul 84 18:17:42-PDT Date: Mon, 23 Jul 84 18:22:01 pdt
    From: Bill Croft <croft@safe>
    To: info-mac@sumex
    Subject: decoding uploaded lisa sources
    Cc: sumacc@sumex

    By using maccom to write Lisa .text files onto a Mac disk, you can
    upload these sources quickly to your UNIX using "macget -u".
    At this point the files still contain some funny Lisa control
    sequences. You can use the program below (unlisa.c) to deconvert
    the compressed spaces. (Even after conversion you may need to delete
    some funny characters from the beginning of the file, these are
    probably Lisa Editor cookies).
    ----
    #include <stdio.h>
    /* Lisa format to normal format converter */
    main ()
    {
    int c;

    while ( (c=getchar()) != EOF) {
    if (c == 16) {

    for (c=getchar(); c>32; c--)
    putc(' ',stdout);
    }
    else
    if (c != 0) putc((char) c, stdout);
    }
    }
    ----
    Program above is from jw-peterson@utah-20; thanks, John.
    17-Sep-84 14:52:15-PDT,865;000000000001
    Return-Path: <Douglass.GENCOM@MIT-MULTICS.ARPA>
    Received: from MIT-MULTICS.ARPA by SUMEX-AIM.ARPA with TCP; Mon 17 Sep 84 14:52:04-PDT
    Posted-Date: 17 Sep 84 17:43 EDT
    Date: Mon, 17 Sep 84 17:42 EDT
    From: Douglass@MIT-MULTICS.ARPA
    Subject: SUMacC MountVol and Offline question
    To: info-mac@SUMEX-AIM.ARPA
    cc: sumacc@SUMEX-AIM.ARPA
    Message-ID: <840917214208.883700@MIT-MULTICS.ARPA>

    I am using SUMacC and have encountered a problem trying to use the routines MountVol and Offline. They are defined using the routines _mountvol and _offline which (except that _mountvol is called _mountvo) are in the file /usr/sumaccs/lib/io.s (on my system) but are commented out. _offline has
    the
    additional notation "removed 12 apr 84". Does anyone know why they are commented out and if they would work? Thanks.
    --scott


    --- Synchronet 3.20a-Linux NewsLink 1.114