TweetFollow Us on Twitter

Sep 85 Mousehole
Volume Number:1
Issue Number:10
Column Tag:Mousehole Letters

Mousehole Report, Letters

By Rusty Hodge, Sys Op & Contributing Editor, Mousehole BBS

Program bombs Lisp

MICRO GHOUL

I have been having a problem with a consistent bomb in ExperLisp that I was wondering whether anyone else was having. The following, though a terrible little routine is a perfect way to get to the bomb (which I was finally able to isolate trying to make a nice routine, that a later version of this piece of trash was working towards). Well, enough about that, here it is:

(SETQ MYWIND (NEWGRAFWINDOW '(100 100 300 350)))
(MYWIND 'SETWTITLE "GONNA BOMB!!")
(DEFUN COORDINATES ()
    (GETMOUSE))
(WHILE
    (NOT (BUTTON))
    (MYWIND 'SELECTWINDOW)
    (APPLY
         FILLOVAL '(50 50 (CAR (COORDINATES)) (CADR (COORDINATES)) MYWIND)))

Please excuse any typos or forgotten "(" or ")" or "'", if I forgot them here does not mean that I forgot them in the actual code, more important is the fact that though Lisp tries to give me an error it bombs with the ID #2 everytime. In fact the first time rather than just a bomb it added the desire to have a disk swap (though both disks where in their respective drives!)

Contest Winner

THE CATCHER

The Catcher (alias Steve Yaeger) wins the Mousehole printing contest sponsored by MacTutor, with this assembly entry to mimic the BASIC statement: PRINT "HELLO":END on the Macintosh. Steve wins a check for $50 and a MacTutor thank you. DON L also submitted an excellent answer that we will print next month.

; Print "hello" on the printer.
;       Written by Steve Yaeger
; If the printer is off-line, this will hang the Mac
;       until it is put back on line
; If there is no Printdriver file it just Beeps and exits
;
; The Linker file looks like this
;
;       HELLO.REL
;       ]
;
; These are the Equates Notice that the iPrReset, iPrLineFeed, 
; and  iPrPageEnd are Longwords and not words as in 
; PREQU.TXT from Counsulair.

 XREF START

; These are the PrDrvr constants.
 
iPrDrvrRef  EQU      $FFFD  ; Driver's RefNum = NOT ResID
iPrIOCtl       EQU      5              ; The Raw Byte IO Proc's ctl # 

PrDevCtl       EQU      7               ; The PrDevCtl Proc's ctl  # 

iPrReset       EQU      $00010000  ; The CParam for res
iPrPageEndEQU      $00020000  ; The CParam for end
iPrLineFeed EQU      $00030000   ; The CParam for pap 
lParam1 EQU      0                 ; the three printer parameters
lParam2 EQU      4
lParam3 EQU      8
 
; These are the standard call parameters
csCode  EQU      $1A      ;control dependent command 
csParam EQU      $1C             ;control dependent param.
ioCompletion  EQU     $C         ;pointer to async notifier routine
ioResult         EQU      $10      ;returns operation results
ioFileNameEQU      $12      ;pointer to name of driver
ioRefNum  EQU      $18      ;driver reference #
ioPermssn   EQU      $1B  ;read/write permission

; Traps used in this program
    .TRAP       _InitGraf                    $A86E
    .TRAP       _InitFonts                   $A8FE
    .TRAP       _FlushEvents       $A050
    .TRAP       _InitWindows       $A912
    .TRAP       _InitMenus                   $A930
    .TRAP       _InitDialogs                 $A97B
    .TRAP       _InitCursor                  $A850
    .TRAP       _TEInit                      $A9CC
    .TRAP       _Open                        $A000
    .TRAP       _Control                     $A004
    .TRAP       _SysBeep                     $A9C8
 
START
;Initialize Managers
PEA     -4(A5)            ;Space Created For Quickdraw's Use
_InitGraf                 ;Init Quickdraw
_InitFonts                ;Init the Font Manager
MOVE.L  #$0000FFFF,D0   ;This Mask Is For All Events
_FlushEvents              ;Flush All Of These Events
_InitWindows              ;Init the Window Manager
_InitMenus                ;Init the Menu Manager
CLR.L    -(SP)            ;restart procedure
_InitDialogs              ;Init the Dialog Manager
_InitCursor               ;Init to arrow cursor
_TEInit                   ;Init Text Edit
 
;------- OPEN THE PRINT DRIVER -------
LEA   '.Print',A1    ;Get a Pointer to the Drivers Name
LEA     IOPARMS,A0 ;Get the Parameter base addres
MOVE.L  A1,ioFileName(A0)     ;Store the Drivers Name addr
CLR.B    ioPermssn(A0)    ;fsCurPerm (whatever we got)
_OPEN
 LEA      IOPARMS,A0 ;Get the Parameter base address
 MOVE.W ioResult(A0),D0          ;Check for an error
 CMP.W  #0,D0                    ;is result ok?
 BEQ      @0                       ;Yes skip the error bell
 MOVE.W #30,-(SP)                ;beep length
 _SYSBEEP                          ;beep to indicate error
 BRA      @4

@0
;------ RESET THE PRINTER TO DEFAULTS -------
LEA     IOPARMS,A0               ;Get the Parameter base addr
MOVE.W  #iPrDevCtl,csCode(A0)   ;Set up a control type call
MOVE.L  #iPrReset,csParam+lParam1(A0)   ;only 1 (Reset)
CLR.L   csParam+lParam2(A0)
CLR.L   csParam+lParam3(A0)
_CONTROL
LEA     IOPARMS,A0 ;Get the Parameter base address
MOVE.W  ioResult(A0),D0   ;Check for an error
CMP.W   #0,D0                    ;is result ok?
 BEQ      @1                       ;Yes skip the error bell
 MOVE.W #30,-(SP)                ;beep length
 _SYSBEEP                          ;beep to indicate error
 BRA      @4
 
@1
;------ ACTUALLY PRINT THE WORD HELLO -------
LEATEXT_STRING,A1;Get address of string to pr
LEA     IOPARMS,A0 ;Get the Parameter base addres
MOVE.W  #iPrIOCtl,csCode(A0)  ;Set up a text streaming call
MOVE.L  A1,csParam+lParam1(A0)  ;Parameter one is a            
 ;pointer to the text
MOVE.L  #(TEXT_STRING_END-TEXT_STRING),                        csParam+lParam2(A0)
;Parameter two is the length of the text
CLR.L csParam+lParam3(A0)    ;No third Parameter
_CONTROL
 LEA      IOPARMS,A0         ;Get the Parameter base address
MOVE.W  ioResult(A0),D0   ;Check for an error
CMP.W   #0,D0                    ;is result ok?
BEQ     @2                         ;Yes skip the error bell MOVE.W
 #30,-(SP)                ;beep length
_SYSBEEP                           ;beep to indicate error
 BRA     @4

@2
;------ PRINT A CR+LF JUST FOR THE FUN OF IT --------
LEA   IOPARMS,A0            ;Get the Parameter base addres
MOVE.W  #iPrDevCtl,csCode(A0)   ;Set up a control type call
MOVE.L  #iPrLineFeed,csParam+lParam1(A0) 
 ;only 1? parameter (CR+LF)
CLR.L   csParam+lParam2(A0)     ;Parameter 2 undetermined
CLR.L    csParam+lParam3(A0)
_CONTROL
LEA     IOPARMS,A0         ;Get the Parameter base address
MOVE.W  ioResult(A0),D0          ;Check for an error
CMP.W   #0,D0                    ;is result ok?
BEQ     @3                         ;Yes skip the error bell
MOVE.W  #30,-(SP)                ;beep length
_SYSBEEP                           ;beep to indicate error
BRA     @4

@3
;---- EJECT A PAGE SO THAT WE CAN SEE WHAT HAPPENS
LEA     IOPARMS,A0          ;Get the Parameter base address
MOVE.W  #iPrDevCtl,csCode(A0)   ;Set up a control type call
MOVE.L  #iPrPageEnd,csParam+lParam1(A0) 
 ;only 1 parameter (eject)
CLR.L   csParam+lParam2(A0)
CLR.L   csParam+lParam3(A0)
_CONTROL
LEA     IOPARMS,A0          ;Get the Parameter base address
MOVE.W  ioResult(A0),D0          ;Check for an error
CMP.W   #0,D0                    ;is result ok?
 BEQ.S    @4                       ;Yes skip the error bell
 MOVE.W  #30,-(SP)                 ;beep length
_SYSBEEP                           ;beep to indicate error
@4
 RTS
 ;        Data Structures
TEXT_STRING      DC.B    'HELLO'
TEXT_STRING_END
.ALIGN  2
 
IOPARMS          DCB.L    20,0
; ------------------   end of program -------------------------------

Letters

First off, I want you to know that I really enjoy reading MacTutor, especially the articles on assembly language. Second I want to report a slight error on page 37 of the June issue. In figure 1 of that issue, a Pascal string is shown as 'fName: String[63]' with it's assembly equivalent as 'DCB.B 63,0'. This could be very misleading. A pascal string is always preceded by a one byte length byte. Thus STR[63] is rendered by DCB.B 64,0. Since using this structure as it was shown could cause an odd alignment of the next data structure, watch out for the 'ole length byte. It could be a difficult bug to track down! Thanks again for an interesting and informative publication.

Made my Day with Modula-2

Terri Wiles, President

Compu-Craft

Thank you for "making my day". We have just recieved the back issues we ordered. It is utterly exciting to see so many articles of substance, especially after months of searching through the pages and pages of the fluff of which certain other Mac magazines are comprised. It is particularly encouraging to me to see articles about Modula-2. I certainly want to express my most sincere hope that this will become a regular column, with particular emphasess on the task of interfacing with the Macintosh.

 
AAPL
$111.78
Apple Inc.
-0.87
MSFT
$47.66
Microsoft Corpora
+0.14
GOOG
$516.35
Google Inc.
+5.25

MacTech Search:
Community Search:

Software Updates via MacUpdate

LibreOffice 4.3.5.2 - Free Open Source o...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
CleanApp 5.0.0 Beta 5 - Application dein...
CleanApp is an application deinstaller and archiver.... Your hard drive gets fuller day by day, but do you know why? CleanApp 5 provides you with insights how to reclaim disk space. There are... Read more
Monolingual 1.6.2 - Remove unwanted OS X...
Monolingual is a program for removing unnecesary language resources from OS X, in order to reclaim several hundred megabytes of disk space. It requires a 64-bit capable Intel-based Mac and at least... Read more
NetShade 6.1 - Browse privately using an...
NetShade is an Internet security tool that conceals your IP address on the web. NetShade routes your Web connection through either a public anonymous proxy server, or one of NetShade's own dedicated... Read more
calibre 2.13 - Complete e-library manage...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Mellel 3.3.7 - Powerful word processor w...
Mellel is the leading word processor for OS X and has been widely considered the industry standard since its inception. Mellel focuses on writers and scholars for technical writing and multilingual... Read more
ScreenFlow 5.0.1 - Create screen recordi...
Save 10% with the exclusive MacUpdate coupon code: AFMacUpdate10 Buy now! ScreenFlow is powerful, easy-to-use screencasting software for the Mac. With ScreenFlow you can record the contents of your... Read more
Simon 4.0 - Monitor changes and crashes...
Simon monitors websites and alerts you of crashes and changes. Select pages to monitor, choose your alert options, and customize your settings. Simon does the rest. Keep a watchful eye on your... Read more
BBEdit 11.0.2 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
ExpanDrive 4.2.1 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more

Latest Forum Discussions

See All

Make your own Tribez Figures (and More)...
Make your own Tribez Figures (and More) with Toyze Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
So Many Holiday iOS Sales Oh My Goodness...
The holiday season is in full-swing, which means a whole lot of iOS apps and games are going on sale. A bunch already have, in fact. Naturally this means we’re putting together a hand-picked list of the best discounts and sales we can find in order... | Read more »
It’s Bird vs. Bird in the New PvP Mode f...
It’s Bird vs. Bird in the New PvP Mode for Angry Birds Epic Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Telltale Games and Mojang Announce Minec...
Telltale Games and Mojang Announce Minecraft: Story Mode – A Telltale Games Series Posted by Jessica Fisher on December 19th, 2014 [ permalink ] | Read more »
WarChest and Splash Damage Annouce Their...
WarChest and Splash Damage Annouce Their New Game: Tempo Posted by Jessica Fisher on December 19th, 2014 [ permalink ] WarChest Ltd and Splash Damage Ltd are teaming up again to work | Read more »
BulkyPix Celebrates its 6th Anniversary...
BulkyPix Celebrates its 6th Anniversary with a Bunch of Free Games Posted by Jessica Fisher on December 19th, 2014 [ permalink ] BulkyPix has | Read more »
Indulge in Japanese cuisine in Cooking F...
Indulge in Japanese cuisine in Cooking Fever’s new sushi-themed update Posted by Simon Reed on December 19th, 2014 [ permalink ] Lithuanian developer Nordcurrent has yet again updated its restaurant simulat | Read more »
Badland Daydream Level Pack Arrives to C...
Badland Daydream Level Pack Arrives to Celebrate 20 Million Downloads Posted by Ellis Spice on December 19th, 2014 [ permalink ] | Read more »
Far Cry 4, Assassin’s Creed Unity, Desti...
Far Cry 4, Assassin’s Creed Unity, Destiny, and Beyond – AppSpy Takes a Look at AAA Companion Apps Posted by Rob Rich on December 19th, 2014 [ permalink ] These day | Read more »
A Bunch of Halfbrick Games Are Going Fre...
A Bunch of Halfbrick Games Are Going Free for the Holidays Posted by Ellis Spice on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »

Price Scanner via MacPrices.net

Kodak Returns to CES With New Consumer Produ...
Former photography colossus Kodak is returning to CES for the first time in three years where the Kodak booth (#21818 South Hall 1) will showcase a wide range of innovative, imaging-related products... Read more
Invaluable Launches New Eponymously -Named A...
Invaluable, the world’s largest online live auction marketplace, hhas announced the official launch of the Invaluable app for iPad, now available for download in the iTunes App Store. Invaluable... Read more
IDC Reveals Worldwide Mobile Enterprise Appli...
International Data Corporation (IDC) last week hosted the IDC FutureScape: Worldwide Mobile Enterprise Applications and Solutions 2015 Predictions Web conference. The session provided organizations... Read more
Hello Vino Wine App Launches “Safe Ride Home”...
Hello Vino has announced addition of a new “Get a Safe Ride Home” feature in its Food & Drink app with a direct connection to Uber, the technology platform that connects users with rides. The... Read more
DEVON-technologies Releases DEVONthink To Go...
Coeur d’Alene, Idaho based DEVON-technologies, LLC has updated DEVONthink To Go, its mobile companion to DEVONthink, to version 1.5. The update includes an iOS 8 extension, compatibility with the... Read more
The Apple Store offering free next-day shippi...
The Apple Store is now offering free next-day shipping on all in stock items if ordered before 12/23/14 at 10:00am PT. Local store pickup is also available within an hour of ordering for any in stock... Read more
It’s 1992 Again At Sony Pictures, Except For...
Techcrunch’s John Biggs interviewed a Sony Pictures Entertainment (SPE) employee, who quite understandably wished to remain anonymous, regarding post-hack conditions in SPE’s L.A office, explaining “... Read more
Holiday sales this weekend: MacBook Pros for...
 B&H Photo has new MacBook Pros on sale for up to $300 off MSRP as part of their Holiday pricing. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $1699... Read more
Holiday sales this weekend: MacBook Airs for...
B&H Photo has 2014 MacBook Airs on sale for up to $120 off MSRP, for a limited time, for the Thanksgiving/Christmas Holiday shopping season. Shipping is free, and B&H charges NY sales tax... Read more
Holiday sales this weekend: iMacs for up to $...
B&H Photo has 21″ and 27″ iMacs on sale for up to $200 off MSRP including free shipping plus NY sales tax only. B&H will also include a free copy of Parallels Desktop software: - 21″ 1.4GHz... Read more

Jobs Board

*Apple* Store Leader Program (US) - Apple, I...
…Summary Learn and grow as you explore the art of leadership at the Apple Store. You'll master our retail business inside and out through training, hands-on experience, Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.