CALL -151 What did it do on the APPLE ][
Asked Answered
D

5

26

A long time ago I had an apple ][ .

I remember the command call – 151 But I can not remember what it did ?

Dalpe answered 27/9, 2008 at 10:31 Comment(1)
good old days! I was only 7 when I started playing with the call -151 command. Never really knew what I was doing but it still was great fun! :-)Congruity
D
26

CALL -151

Enter the machine code monitor -

http://www.skepticfiles.org/cowtext/apple/memorytx.htm

Update:

That link appears to be dead, here's a Wayback Machine alternative:

http://web.archive.org/web/20090315100335/http://www.skepticfiles.org/cowtext/apple/memorytx.htm

Here's the full article just in case Wayback goes away:

APPLE CALL, PEEK, POKE LIST CALL 144 SCAN THE INPUT BUFFER CALL 151 ENTER THE MONITOR NORM

            APPLE  CALL, PEEK, POKE LIST

------------------------------------------------------------------------------
CALL  -144     SCAN THE INPUT BUFFER
CALL  -151     ENTER THE MONITOR NORMALLY
CALL  -155     ENTER THE MONITOR & SOUND BELL
CALL  -167     ENTER MONITOR AND RESET
CALL  -198     RING BELL (SIMULATE CONTROL G)
CALL  -211     PRINT "ERR" AND RING BELL
CALL  -259     READ FROM TAPE
CALL  -310     WRITE TO TAPE
CALL  -321     DISPLAYS A, S, Y, P, & S REGISTERS
CALL  -380     SET NORMAL VIDEO MODE
CALL  -384     SET INVERSE VIDEO MODE
CALL  -415     DISASSEMBLE 20 INSTRUCTIONS
CALL  -458     VERIFY (COMPARE & LIST DIFFERENCES)

CALL  -468     MEMORY MOVE AFTER POKING   60,61 OLD START - 62,63 OLD END
                          64,65 NEW END   - 66,67 NEW STAR

CALL  -484     MOVE
CALL  -517     DISPLAY CHARACTER & UPDATE SCREEN LOCATION
CALL  -531     DISPLAY CHARACTER, MASK CONTROL CHAR., & SAVE 7 REG. & ACCU
CALL  -550     DISPLAY HEX VALUE OF A-REGISTER (ACCUMULATOR)
CALL  -656     RING BELL AND WAIT FOR A CARRIAGE RETURN

CALL  -657     GET LINE OF INPUT, NO PROMPT, NO L/F, & WAIT(COMMA,COLON OK
CALL  -662     GET LINE OF INPUT, WITH PROMPT, NO L/F, & WAIT
CALL  -665     GET LINE OF INPUT, WITH PROMPT, LINE FEED, & WAIT
THE ABOVE 3 CALLS (-657, -662, -665) REFER TO THE INPUT BUFFER FROM 512-767

CALL  -715     GET CHARACTER
CALL  -756     WAIT FOR KEY PRESS
CALL  -856     TIME DELAY (POKE 69,XX TO SET TIME OF DELAY)
CALL  -868     CLEARS CURSOR LINE FROM CURSOR TO END OF LINE
CALL  -912     SCROLLS TEXT UP 1 LINE
CALL  -922     LINE FEED
CALL  -936     CLEAR SCREEN (HOME)
CALL  -958     CLEAR SCREEN FROM CURSOR TO BOTTOM OF SCREEN
CALL  -998     MOVES CURSOR UP 1 LINE
CALL  -1008    MOVES CURSOR BACKWARD 1 SPACE
CALL  -1024    DISPLAY CHARACTER ONLY
CALL  -1036    MOVES CURSOR FORWARD 1 SPACE
CALL  -1063    SEND BELL TO CURRENT OUTPUT DEVICE
CALL  -1216    TEXT & GRAPHICS MODE
CALL  -1233    MOVE CURSOR TO BOTTOM OF SCREEN
CALL  -1321    CONTROL E
CALL  -1717    MOVES CURSOR DOWN 5 LINES
CALL  -1840    DISASSEMBLE 1 INSTRUCTION
CALL  -1953    CHANGE COLOR BY +3
CALL  -1994    CLEAR LO-RES SCREEN (TOP 40 LINES)
CALL  -1998    CLEAR GRAPHIC SCREEN (LO-RES)
CALL  -2007    VERTICAL LINE
CALL  -2023    HORIZONTAL LINE
CALL  -2458    ENTER MINI ASSEMBLER
CALL  -3100    TURNS ON HIRES PAGE 1, WITHOUT CLEARING IT
CALL  -3776    SAVE INTEGER
CALL  -3973    LOAD INTEGER
CALL  -6090    RUN INTEGER
CALL  -8117    LIST INTEGER
CALL  -8189    ENTER BASIC & CONTINUE
CALL  -8192    ENTER BASIC AND RESET (INTEGER BASIC KILL)
CALL  -16303       TEXT MODE
CALL  -16304       GRAPHICS MODE
CALL  -16336       TOGGLE SPEAKER
CALL   42350       CATALOGS DISK
CALL   54915       CLEANS STACK, CLEARS THE "OUT OF MEMORY" ERROR
CALL   64166       INITIATES A COLD START (BOOT OF THE DISK)
CALL   64246       BRAND NEW-YOU FIGURE IT OUT

CALL   64367       SCANS MEMORY LOC 1010 & 1011 & POKES VALUE INTO LOCATIONS
           1012 THAT IS EQUAL TO (PEEK(1011)-165)

------------------------------------------------------------------------------
PEEK   33      WIDTH OF TEXT WINDOW (1-40)
PEEK   34      TOP EDGE OF TEXT WINDOW (0-22)
PEEK   35      BOTTOM OF TEXT WINDOW (1-24)
PEEK   36      HORIZONTAL CURSOR POSITION (0-39)
PEEK   37      VERTICAL CURSOR POSITION (0-23)
PEEK   43      BOOT SLOT X 16 (AFTER BOOT)
PEEK   44      END POINT OF LAST HLIN, VLIN, OR PLOT
PEEK   48      LO-RES COLOR VALUE X 17

PEEK   50      TEXT OUTPUT FORMAT: 63=INVERSE   255=NORMAL
           127=FLASH ( WITH PEEK 243 SET TO 64)

PEEK   51      PROMPT CHARACTER
PEEK   74,75       LOMEM ADDRESS (INT)
PEEK   76,77       HIMEM ADDRESS (INT)
PEEK   103,104     FP PROGRAM STARTING ADDRESS
PEEK   104     IF 8 IS RETURNED, THEN FP IS IN ROM
PEEK   105,106     FP VARIABLE SPACE STARTING ADDRESS
PEEK   107,108     FP ARRAY STARTING ADDRESS
PEEK   109,110     FP END OF NUMERIC STORAGE ADDRESS
PEEK   111,112     FP STRING STORAGE STARTING ADDRESS
PEEK   115,116     FP HIMEM ADDRESS
PEEK   117,118     FP LINE NUMBER BEING EXECUTED
PEEK   119,120     FP LINE WHERE PROGRAM STOPPED
PEEK   121,122     FP LINE BEING EXECUTED ADDRESS
PEEK   123,124     LINE WHERE DATA BEING READ
PEEK   125,126     DATA LOCATION ADDRESS
PEEK   127,128     INPUT OR DATA ADDRESS
PEEK   129,130     FP LAST USED VARIABLE NAME
PEEK   131,132     FP LAST USED VARIABLE ADDRESS
PEEK   175,176     FP END OF PROGRAM ADDRESS
PEEK   202,203     INT PROGRAM STARTING ADDRESS
PEEK   204,205     INT END OF VARIABLE STORAGE
PEEK   214     FP RUN FLAG (AUTO-RUN IF >127)
PEEK   216     ONERR FLAG (>127 IF ONERR IS ACTIVE)
PEEK   218,219     LINE WHERE ONERR OCCURED
PEEK   222     ONERR ERROR CODE
PEEK   224,225     X-COORDINATE OF LAST HPLOT
PEEK   226     Y-COORDINATE OF LAST HPLOT
PEEK   228     HCOLOR VALUE  0=0   85=2  128=4  213=6
                42=1  127=3  170=5  255=7
PEEK   230     HI-RES PLOTING PAGE  (32=PAGE 1   64=PAGE 2   96=PAGE 3)
PEEK   231     SCALE VALUE
PEEK   232,233     SHAPE TABLE STARTING ADDRESS
PEEK   234     HI-RES COLLISION COUNTER
PEEK   241     256 MINUS SPEED VALUE
PEEK   243     FLASH MASK (64=FLASH WHEN PEEK 50 SET TO 127)
PEEK   249     ROT VLAUE
PEEK   976-978     DOS RE-ENTRY VECTOR
PEEK   1010-1012   RESET VECTOR
PEEK   1013-1015   AMPERSAND (&) VECTOR
PEEK   1016-1018   CONTROL-Y VECTOR
PEEK   43140-43271 DOS COMMAND TABLE
PEEK   43378-43582 DOS ERROR MESSAGE TABLE
PEEK   43607       MAXFILES VALUE
PEEK   43616,46617 LENGTH OF LAST BLOAD
PEEK   43624       DRIVE NUMBER
PEEK   43626       SLOT NUMBER
PEEK   43634,43635 STARTING ADDRESS OF LAST BLOAD
PEEK   43697       MAXFILES DEFAULT VALUE
PEEK   43698       DOS COMMAND CHARACTER
PEEK   43702       BASIC FLAG (0=INT  64=FP ROM   128=FP RAM)
PEEK   44033       CATALOG TRACK NUMBER (17 IS STANDARD)
PEEK   44567       NUMBER OF CHARACTERS MINUS 1 IN CATALOG FILE NAMES
PEEK   44611       NUMBER OF DIGITS MINUS 1 IN SECTOR AND VOLUME NUMBERS
PEEK   45991-45998 FILE-TYPE CODE TABLE
PEEK   45999-46010 DISK VOLUME HEADING
PEEK   46017       DISK VOLUME NUMBER
PEEK   46064       NUMBER OF SECTORS (13=DOS 3.2   16=DOS 3.3)
PEEK   49152       READ KEYBOARD (IF >127 THEN KEY HAS BEEN PRESSED
PEEK   49200       TOGGLE SPEAKER (CLICK)
PEEK   49248       CASSETTE INPUT (>127=BINARY 1, 127 IF BUTTON PRESSED)
PEEK   49250       PADDLE 1 BUTTON (>127 IF BUTTON PRESSGD)
PEEK   49251       PADDLE 2 BUTTON (>127 IF BUTTON PRESSED)
PEEK   49252       READ GAME PADDLE 0 (0-255)
PEEK   49253       READ GAME PADDLE 1 (0-255)
PEEK   49254       READ GAME PADDLE 2 (0-255)
PEEK   49255       READ GAME PADDLE 3 (0-255)
PEEK   49408       READ SLOT 1
PEEK   49664       READ SLOT 2
PEEK   49920       READ SLOT 3
PEEK   50176       READ SLOT 4
PEEK   50432       READ SLOT 5
PEEK   50688       READ SLOT 6  (162=DISK CONROLLOR CARD)
PEEK   50944       READ SLOT 7

PEEK   64899       INDICATES WHICH COMPUTER YOU'RE USING
           223=APPLE II OR II+, 234=FRANKLIN ACE OR ?, 255=APPLE IIE

POKE   33,33       SCRUNCH LISTING AND REMOVE SPACES IN QUOTE STATEMENTS
POKE   36,X    USE AS PRINTER TAB (X=TAB - 1)
POKE   50,128      MAKES ALL OUTPUT TO THE SCREEN INVISIBLE
POKE   50,RANDOM   SCRAMBLES OUTPUT TO SCREEN
POKE   51,0    DEFEATS "NOT DIRECT COMMAND", SOMETIMES DOESN'T WORK
POKE   82,128      MAKE CASETTE PROGRAM AUTO-RUN WHEN LOADED
POKE   214,255     SETS RUN FLAG IN FP & ANY KEY STROKES WILL RUN DISK  PROGRA
POKE   216,0       CANCEL ONERR FLAG

POKE   1010,3      SETS THE RESET VECTOR TO INITIATE
POKE   1011,150    A COLD START (BOOT)

POKE   1010,102    MAKE
POKE   1011,213    RESET
POKE   1012,112    RUN

POKE   1014,165    SETS THE AMPERSAND (&) VECTOR
POKE   1015,214    TO LIST YOUR PROGRAM

POKE   1014,110    SETS THE AMPERSAND (&) VECTOR
POKE   1015,165    TO CATALOG A DISK

POKE   1912+SLOT,1 ON APPLE PARALLEL CARD (WITH P1-02 PROM) WILL ENABLE L/F'S
POKE   1912+SLOT,0 ON APPLE PARALLEL CARD (WITH P1-02 PROM) WILL ENABLE L/F'S

POKE   2049,1      THIS WILL CAUSE THE FIRST LINE OF PROGRAM TO LIST REPEATEDLY
POKE   40514,20    ALLOWS TEXT FILE GREETING PROGRAM
POKE   40514,52    ALLOWS BINARY FILE GREETING PROGRAM

POKE   40993,24    THIS ALLOWS
POKE   40994,234   DISK COMMANDS IN
POKE   40995,234   THE DIRECT MODE

POKE   42319,96    DISABLES THE INIT COMMAND

POKE   42768,234   CANCEL ALL
POKE   42769,234   DOS ERROR
POKE   42770,234   MESSAGES
POKE   43624,X     SELECTS DISK DRIVE WITHOUT EXECUTING A COMMAND (48K SYSTEM)

POKE   43699,0     TURNS AN EXEC FILE OFF BUT LEAVES IT OPEN UNTIL A FP, CLOSE
POKE   43699,1     TURNS AN EXEC FILE BACK ON.      INIT, OR MAXFILES IS ISSUE

POKE   44452,24    ALLOWS 20 FILE NAMES (2 EXTRA)
POKE   44605,23    BEFORE CATALOG PAUSE

POKE   44505,234   REVEALS DELETED FILE
POKE   44506,234   NAMES IN CATALG

POKE   44513,67    CATALOG WILL RETURN ONLY LOCKED FILES
POKE   44513,2     RETURN CATALOG TO NORMAL
POKE   44578,234   CANCEL CARRIAGE
POKE   44579,234   RETURNS AFTER CATALOG
POKE   44580,234   FILE NAMES

POKE   44596,234   CANCEL
POKE   44597,234   CATALOG-STOP
POKE   44598,234   WHEN SCREEN IS FULL

POKE   44599,234   STOP CATALOG AT EACH FILE
POKE   44600,234   NAME AND WAIT FOR A KEYPRESS

POKE   46922,96    THIS ALLOWS DISK
POKE   46923,234   INITIALATION
POKE   46924,234   WITHOUT PUTTING
POKE   44723,4     DOS ON THE DISK

POKE   49107,234   PREVENT LANGUAGE
POKE   49108,234   CARD FROM LOADING
POKE   49109,234   DURING RE-BOOT

POKE   49168,0     CLEAR KEYBOARD
POKE   49232,0     DISPLAY GRAPHICS
POKE   49233,0     DISPLAY TEXT
POKE   49234,0     DISPLAY FULL GRAPHICS
POKE   49235,0     DISPLAY TEXT/GRAPHICS
POKE   49236,0     DISPLAY GRAPHICS PAGE 1
POKE   49237,0     DISPLAY GRAPHICS PAGE 2
POKE   49238,0     DISPLAY LORES
POKE   49239,0     DISPLAY HIRES
------------------------------------------------------------------------------

                48K MEMORY MAP

   DECIMAL    HEX            USAGE
------------------------------------------------------------------------------
    0-255    $0-$FF     ZERO-PAGE SYSTEM STORAGE
  256-511      $100-$1FF    SYSTEM STACK
  512-767      $200-$2FF    KEYBOARD CHARACTER BUFFER
  768-975      $300-$3CF    OFTEN AVAILABLE AS FREE SPACE FOR USER PROGRAMS
  976-1023     $3D0-3FF     SYSTEM VECTORS
 1024-2047     $400-$7FF    TEXT AND LO-RES GRAPHICS PAGE 1
 2048-LOMEM    $800-LOMEM   PROGRAM STORAGE
 2048-3071     $800-$BFF    TEXT AND LO-RES GRAPHICS PAGE 2 OR FREE SPACE
 3072-8191     $C00-$1FFF   FREE SPACE UNLESS RAM APPLESOFT IS IN USE
 8192-16383   $2000-$3FFF   HI-RES PAGE 1 OR FREE SPACE
16384-24575   $4000-$5FFF   HI-RES PAGE 2 OR FREE SPACE
24576-38999   $6000-$95FF   FREE SPACE AND STRING STORAGE
38400-49151   $9600-$BFFF   DOS
49152-53247   $C000-$CFFF   I/O HARDWARE (RESERVED)
53248-57343   $D000-$DFFF   APPLESOFT IN LANGUAGE CARD OR ROM
57344-63487   $E000-$F7FF   APPLESOFT OR INTEGER BASIC IN LANGUAGE CARD OR ROM
63488-65535   $F800-$FFFF   SYSTEM MONITOR


PEEK:  TO EXAMINE ANY MEMORY LOCATION L, PRINT PEEK (L), WHERE L IS A DECIMAL
NUMBER 0-65535.  TO PEEK AT A TWO-BYTE NUMBER AT CONSEQUTIVE LOCATIONS L AND
L+1, PRINT PEEK (L) + PEEK (L+1) * 256

POKE:  TO ASSIGN A VALUE X (0-255) TO LOCATION L; POKE L,X.  TO POKE A TWO-BYT
NUMBER (NECESSARY IF X>255), POKE L,X-INT(X/256)*256, AND POKE L+1,INT(X/256).

CALL:  TO EXECUTE A MACHINE LANGUAGE SUB ROUTINE AT LOCATION L, CALL L.


JUST FOR FUN TRY THIS: POKE 33,90.  THEN TRY LISTING YOUR PROGRAM.  OR TRY:
0,99 OR POKE 50,250 OR POKE 50,127.  USE RESET TO RETURN TO NORMAL.

FOR TRUE RANDOM NUMBER GENERATION TRY THIS:X= RND(PEEK(78)+PEEK(79)*256)

TO LOCATE THE STARTING ADDRESS OF THE LAST BLOADED FILE USE: PEEK(-21902)+PEEK
(-21901)*256 (RESULT IS IN HEX)

TO DETERMINE THE LENGTH OF THE LAST BLOADED FILE USE: PEEK(-21920)+PEEK(-21919
*256 (RESULT IS IN HEX)

TO DETERMINE THE LINE NUMBER THAT CAUSED AN ERROR TO OCCUR, SET X TO: PEEK(218
+PEEK(219)*256

------------------------------------------------------------------------------

E-Mail Fredric L. Rice / The Skeptic Tank

Deciliter answered 27/9, 2008 at 10:37 Comment(3)
Yup, Call -151 entered the machine code monitor all right, but what was the difference between using PR#6 and IN#6 to boot the floppy then?Bestow
If You type PR#6 that would load the bootstrap code for Slot 6, which was the disk drive, if you were already in the assembler, then you could type C600G, which would start loading the same bootstrap code as PR#6. source the book “Beneath Apple DOS”Dalpe
I think 'Elite' is what you're after.Metathesize
D
12

Call -151 enters the monitor, 3D0G brings you back to BASIC, and typing a slot # in the monitor followed by Ctrl-P will boot that device. Amazing what one remembers after 20 years!

Dingbat answered 29/3, 2010 at 1:55 Comment(1)
It's also funny how things known when younger, seen in a new light, suddenly make sense. I didn't know about call -155. If six-year-old me had seen that, he'd have thought it was just another magic number. N-year-old me says "Oh, of course. Because it's four bytes higher; it probably drops into a routine to ring the bell, then returns and picks up immediately at the top of the monitor. Basic fallthrough."Scurrile
F
3

May I also add that -151 is apple ]['s way of expressing hex number which should mean $FF69 (hex syntax used in Apple II i.e. 0xFF68). The CALL is an Apple Basic command that invokes an assembly subroutine given by the argument (-151 here). IIRC, this command can accept an address as negative decimal value for addresses between $8000-$FFFF using 2's complement interpretation.

For those who are interested in history, here is the Apple ]['s monitor rom listing (in 6502 assembly) and address $FF69 is having the label MONZ which is the start of the command prompt that process machine code processing commands from user. One that uses a '*' as the prompt. A very primitive command prompt.

Apple II System Monitor

Freespoken answered 4/11, 2015 at 13:2 Comment(1)
There's also a rudimentary mini-assembler located at $F666 in some ROMs.Dingbat
L
2

Crikey, that's a blast from the past. I think it entered the monitor ROM (I was torn between this and Integer BASIC but I'm pretty certain it was the monitor).

You could download an Apple II emulator and find out.

Lambertson answered 27/9, 2008 at 10:38 Comment(0)
S
2

As a side note, the reason why this is a negative number and not the proper CALL 65385 is because the very first form of BASIC for the Apple II was known as Integer BASIC. It only understood signed 16-bit Integer values from -32768 to 32767, and so it is impossible to directly address memory beyond 32767 in the normal positive value manner.

If you tried actually typing POKE 49200,0 or CALL 65385 in Integer BASIC you will get a message like ">32767 ERR"

When the replacement Microsoft Applesoft BASIC (yes, from them) with floating point numbers was introduced, they included support for the negative POKE values for some degree of backwards compatibility for the older Integer BASIC programs. Though this compatibility is limited, as Applesoft lacks other programming features of Integer like the MOD division remainder.

Due to the strong influence of early Integer BASIC programming methods, there are many PEEK POKE and CALL commands that are generally only known by their hexadecimal and negative decimal values, but not by their positive decimal values.

Siccative answered 27/6, 2020 at 21:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.