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.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Tokkun Studio unveils alpha trailer for...
We are back on the MMORPG news train, and this time it comes from the sort of international developers Tokkun Studio. They are based in France and Japan, so it counts. Anyway, semantics aside, they have released an alpha trailer for the upcoming... | Read more »
Win a host of exclusive in-game Honor of...
To celebrate its latest Jujutsu Kaisen crossover event, Honor of Kings is offering a bounty of login and achievement rewards kicking off the holiday season early. [Read more] | Read more »
Miraibo GO comes out swinging hard as it...
Having just launched what feels like yesterday, Dreamcube Studio is wasting no time adding events to their open-world survival Miraibo GO. Abyssal Souls arrives relatively in time for the spooky season and brings with it horrifying new partners to... | Read more »
Ditch the heavy binders and high price t...
As fun as the real-world equivalent and the very old Game Boy version are, the Pokemon Trading Card games have historically been received poorly on mobile. It is a very strange and confusing trend, but one that The Pokemon Company is determined to... | Read more »
Peace amongst mobile gamers is now shatt...
Some of the crazy folk tales from gaming have undoubtedly come from the EVE universe. Stories of spying, betrayal, and epic battles have entered history, and now the franchise expands as CCP Games launches EVE Galaxy Conquest, a free-to-play 4x... | Read more »
Lord of Nazarick, the turn-based RPG bas...
Crunchyroll and A PLUS JAPAN have just confirmed that Lord of Nazarick, their turn-based RPG based on the popular OVERLORD anime, is now available for iOS and Android. Starting today at 2PM CET, fans can download the game from Google Play and the... | Read more »
Digital Extremes' recent Devstream...
If you are anything like me you are impatiently waiting for Warframe: 1999 whilst simultaneously cursing the fact Excalibur Prime is permanently Vault locked. To keep us fed during our wait, Digital Extremes hosted a Double Devstream to dish out a... | Read more »
The Frozen Canvas adds a splash of colou...
It is time to grab your gloves and layer up, as Torchlight: Infinite is diving into the frozen tundra in its sixth season. The Frozen Canvas is a colourful new update that brings a stylish flair to the Netherrealm and puts creativity in the... | Read more »
Back When AOL WAS the Internet – The Tou...
In Episode 606 of The TouchArcade Show we kick things off talking about my plans for this weekend, which has resulted in this week’s show being a bit shorter than normal. We also go over some more updates on our Patreon situation, which has been... | Read more »
Creative Assembly's latest mobile p...
The Total War series has been slowly trickling onto mobile, which is a fantastic thing because most, if not all, of them are incredibly great fun. Creative Assembly's latest to get the Feral Interactive treatment into portable form is Total War:... | Read more »

Price Scanner via MacPrices.net

Early Black Friday Deal: Apple’s newly upgrad...
Amazon has Apple 13″ MacBook Airs with M2 CPUs and 16GB of RAM on early Black Friday sale for $200 off MSRP, only $799. Their prices are the lowest currently available for these newly upgraded 13″ M2... Read more
13-inch 8GB M2 MacBook Airs for $749, $250 of...
Best Buy has Apple 13″ MacBook Airs with M2 CPUs and 8GB of RAM in stock and on sale on their online store for $250 off MSRP. Prices start at $749. Their prices are the lowest currently available for... Read more
Amazon is offering an early Black Friday $100...
Amazon is offering early Black Friday discounts on Apple’s new 2024 WiFi iPad minis ranging up to $100 off MSRP, each with free shipping. These are the lowest prices available for new minis anywhere... Read more
Price Drop! Clearance 14-inch M3 MacBook Pros...
Best Buy is offering a $500 discount on clearance 14″ M3 MacBook Pros on their online store this week with prices available starting at only $1099. Prices valid for online orders only, in-store... Read more
Apple AirPods Pro with USB-C on early Black F...
A couple of Apple retailers are offering $70 (28%) discounts on Apple’s AirPods Pro with USB-C (and hearing aid capabilities) this weekend. These are early AirPods Black Friday discounts if you’re... Read more
Price drop! 13-inch M3 MacBook Airs now avail...
With yesterday’s across-the-board MacBook Air upgrade to 16GB of RAM standard, Apple has dropped prices on clearance 13″ 8GB M3 MacBook Airs, Certified Refurbished, to a new low starting at only $829... Read more
Price drop! Apple 15-inch M3 MacBook Airs now...
With yesterday’s release of 15-inch M3 MacBook Airs with 16GB of RAM standard, Apple has dropped prices on clearance Certified Refurbished 15″ 8GB M3 MacBook Airs to a new low starting at only $999.... Read more
Apple has clearance 15-inch M2 MacBook Airs a...
Apple has clearance, Certified Refurbished, 15″ M2 MacBook Airs now available starting at $929 and ranging up to $410 off original MSRP. These are the cheapest 15″ MacBook Airs for sale today at... Read more
Apple drops prices on 13-inch M2 MacBook Airs...
Apple has dropped prices on 13″ M2 MacBook Airs to a new low of only $749 in their Certified Refurbished store. These are the cheapest M2-powered MacBooks for sale at Apple. Apple’s one-year warranty... Read more
Clearance 13-inch M1 MacBook Airs available a...
Apple has clearance 13″ M1 MacBook Airs, Certified Refurbished, now available for $679 for 8-Core CPU/7-Core GPU/256GB models. Apple’s one-year warranty is included, shipping is free, and each... Read more

Jobs Board

Seasonal Cashier - *Apple* Blossom Mall - J...
Seasonal Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Seasonal Fine Jewelry Commission Associate -...
…Fine Jewelry Commission Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) Read more
Seasonal Operations Associate - *Apple* Blo...
Seasonal Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Read more
Hair Stylist - *Apple* Blossom Mall - JCPen...
Hair Stylist - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.