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
$556.97
Apple Inc.
-4.31
MSFT
$29.76
Microsoft Corpora
+0.01
GOOG
$600.80
Google Inc.
-13.31
MacTech Search:
Community Search:

Gourmet Pixel and Virgin Limited Edition...
Virgin Limted Edition and Gourmet Pixel have just released an iPad app for guests staying at Richard Branson’s private game reserve. The game reserve borders on Kruger National Park in South Africa’s Mpumalanga province and, while the vast majority... | Read more »
Emerge, A Kickstarter Project For A Plat...
Kickstarter is a great place to find new, upcoming games for iOS but sometimes it’s hard to sort through all the projects to find one really worth pledging those hard earned dollars. We think Emerge by independent developer, Lucas Best, could be one... | Read more »
Quick Discreet Text Review
Quick Discreet Text Review By Jennifer Allen on May 22nd, 2012 Our Rating: :: TIME SAVINGiPhone App - Designed for the iPhone, compatible with the iPad An app that will save regular SMS users some time.   | Read more »
Tivoli Releases Free Tivoli Radio App
Tivoli Audio has just released an iPhone app, Tivoli Radio, for listening to high quality radio stations chosen by the listeners of their popular audio equipment. | Read more »
Rabbit Journey Review
Rabbit Journey Review By Rob Rich on May 22nd, 2012 Our Rating: :: FIX THE JUMPINGiPhone App - Designed for the iPhone, compatible with the iPad Rabbit Journey has more than a few cool concepts but the controls really drag it down... | Read more »
The Portable Podcast, Episode 138
The most hirsute iOS podcast in the world! On This Episode: Carter and guest co-host/beard-enthusiast Jared Nelson discuss the recent Sonic 4: Episode 2 release, and just what kept it from being a truly great game. Carter and Jared discuss games... | Read more »
Rage of Bahamut Review
Rage of Bahamut Review By Rob Rich on May 22nd, 2012 Our Rating: :: BETTER THAN IT LOOKSiPhone App - Designed for the iPhone, compatible with the iPad It’s got one heck of an ugly and not very intuitive interface, but Rage of... | Read more »

Price Scanner via MacPrices.net

Apple iPhone Charger’s Secrets And Engineering Sup...
Blogger Ken Shirriff’s has posted a thoroughgoing Apple iPhone charger teardown and analysis, the one-line takeaway being: “quality in a tiny expensive package.” Shirriff says that disassembling... Read more
iPhone 5 To Get Bigger Display, LTE Support, And i...
WebProNews’s Shaylin Clark says that Apple’s new iPhone will get a larger display and a metal rear panel like the iPad’s instead of glass panel backs like the iPhone 4 and iPhone 4S have. Clark cites... Read more
weeSteady KickStarter Project Launched: Tiny Stabi...
Designer and entrepreneur Jack Campbell says his weeSteady gadget is a tiny little stabilizer for shooting video with your iPhone, small camera, or other smartphones. Campbell observes that tiny... Read more
Tablets Drive 3x More Mobile Data Traffic, 160% Mo...
Bytemobile, Inc. has published its quarterly Mobile Analytics Report for May 2012. Now in its third year, the Mobile Analytics Report provides insight into subscriber behavior and related factors... Read more
MacBook Pros bundled with discounted AppleCare, sa...
MacConnection has MacBook Pros bundled with discounted AppleCare Protection Plans yielding savings up to $180 off full MSRP: - 13″ 2.4GHz MacBook Pro w/AppleCare: $1378.99 MSRP $1448 - 13″ 2.8GHz... Read more
MacBooks up to $200 off at Apple Store for Educati...
Purchase a new MacBook Pro or MacBook Air at The Apple Store for Education and take up to $200 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount.... Read more
AppleCare on sale for up to $105 off MSRP
B&H Photo has AppleCare Protection Plans for Macs on sale for up to $105 off MSRP including free shipping and NY sales tax only: - AppleCare Mac laptops 15″ and above: $244 MSRP $349 - AppleCare... Read more
27″ iMacs on sale for up to $130 off MSRP
  Apple resellers have 27″ iMacs on sale for up to $130 off MSRP. Each model below includes free shipping – B&H charges NY sales tax only, while Adorama charges sales tax in NY and NJ only: - 27... Read more

Jobs Board

*Apple* Retail - Sales - Apple Inc. (Un...
…other. As a Specialist, you're the essence of a customer's experience at the Apple Retail Store. You enrich people's lives through meaningful dialogue about the coolest Read more
Create an app for Iphone - Iphone app de...
I would like to develop an APP for the Iphone that would act as an on/off button for a device that would be plugged into ... be the picture of a flame that you would press and it would activate the... Read more
iOS Developer (iPhone and iPad) at Mahal...
Mahalo is on a mission to help the world quotLearn Anythingquot by creating high quality educational content available on mobile devices. Were looking to disrupt the education industry in a big way.... Read more
iPhone App at Elance.com (Plano, TX)
Create an iPhone App to do the following: 1. Take a picture at a default resolution 2. Identify the location street ... 5. email the picture, address, text notes and voice notes to an email address.... Read more
Iphone/Ipad App Development at Elance.co...
We are in need of an Iphone/Ipad app that will do the following: - Login and provide functionality to our Jomsocial 2.6 ... done ASAP. Job needs to be started quickly. Please provide time estimates... Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.