home *** CD-ROM | disk | FTP | other *** search
- ├RAIG ┬RUCE'S ─YNAMIC ═EMORY ╥OUTINES FOR THE 128
-
- MODIFIED BY ╥OBERT ┴. ╦NOP ╩R. TO SUPPORT 256╦ AND 512╦ 128'S 92/05/25
-
-
-
- ╬╧╘┼: ╘HIS FILE ASSUMES YOU ARE FAMILIAR WITH ├RAIG ┬RUCE'S ARTICLE ON ─YNAMIC
- ═EMORY, FOUND IN THE ╒SENET ╚ACKING ═AG, ISSUE #2.
-
- ╘HIS ARCHIVE CONTAINS ├RAIG ┬RUCE'S ─YNAMIC ═EMORY ROUTINES FOR THE 128,
- MODIFIED TO USE INTERNAL ╥┴═ BANKS 2-7 (AS DISCUSSED IN ╥ICHARD ├URCIO'S
- ARTICLES IN ╘WIN ├ITIES 128, ╔SSUES #30 AND #31).
-
- ╒NDEFINED SYMBOLS IN THE SOURCE FILES CAN BE FOUND IN THE FILES "ROBSEQUS.S"
- AND "ROBSMACS.S" IN THE ARCHIVE "ROBS-SYMS.SFX". ╬OTE THAT YOU MAY WANT TO
- CHANGE THE DEVICE NUMBER ON THE ─╙╦ COMMAND IF YOU ATTEMPT TO REASSEMBLE
- ─┘═┴.╙.
-
-
- ╞ILES IN THIS ARCHIVE:
- ----------------------
-
- ─┘═┴.╙ - ═ERLIN SOURCE CODE, DIRECTLY READABLE BY ═ERLIN'S EDITOR.
-
- ─┘═┴.┴╙═ - ╙OURCE CODE IN ═ERLIN FORMAT, BUT READABLE BY A "NORMAL" EDITOR
- (E.G. ┌┼─).
-
- ─┘═┴.╥┼╠.╧ - ═ERLIN LINK LIBRARY, WHICH CAN BE LINKED IN WITH YOUR PROGRAM
- USING ═ERLIN'S "╠╔╬╦" COMMAND.
-
- ─┘═┴.╥┼┴─═┼ - ┘OU ARE HERE.
-
- ─┘═┴.─╔╞╞╙ - ─ETAILED DESCRIPTION OF THE MODIFICATIONS TO THE DYNAMIC MEMORY
- ROUTINES AS THEY APPEARED IN THE ╚ACKING ═AG IN ORDER TO SUPPORT
- ╥┴═ 2-7.
-
- ─┘═┴.╙┘═╙ - ╠IST OF THE CORRESPONDENCES BETWEEN MY ═ERLIN SYMBOLS AND ├RAIG
- ┬RUCE'S ┬UDDY SYMBOLS. (╘HE LATTER ARE WHAT APPEARED IN THE
- ╚ACKING ═AG, THE FORMER IS WHAT IS ALL OVER THIS ARCHIVE.)
-
-
-
- ╒╙┼ ╧╞ ╘╚┼╙┼ ╥╧╒╘╔╬┼╙ : ╘HE USE OF THESE ROUTINES IS DESCRIBED IN ╔SSUE #2
- OF THE ╒SENET HACKING MAGAZINE. ╚ERE ╔ SUMMARIZE SOME ISSUES SPECIFIC TO
- EXPANDED 128'S. ╘HE ROUTINES IN THIS ARCHIVE SUPPORT UP TO 512╦ 128'S.
- ╔F YOU WANT YOU PROGRAM TO BE ABLE TO TASK SWITCH TO THE SECOND 256╦ WHEN
- RUN IN "NORMAL MODE" (THIS IS ALL DISCUSSED IN ╘├128 #31), YOU SHOULD LIMIT
- THE DYNAMIC MEMORY ROUTINES TO 4 INTERNAL BANKS. ┘OU CAN DO THIS BY SETTING
- THE VARIABLE ╔╬╘╠╔═╔╘ BEFORE CALLING ╙╘┴╥╘╒╨. ╔F YOU RUN THE PROGRAM IN
- THE SECOND 256╦, THE STARTUP ROUTINE AUTOMATICALLY LIMITS ITSELF TO 4
- INTERNAL BANKS. ┴ND, IF YOU RUN THIS ON AN UNEXPANDED 128, THE STARTUP
- ROUTINE WILL DETECT THAT AND ONLY USE THE EXISTING ╥┴═0 AND ╥┴═1.
-
- ╘HE DEFAULT ROUTINES ASSUME THAT ALL OF THE ╥┴═ ABOVE $4000 IN ╥┴═0 IS
- AVAILABLE FOR DYNAMIC MEMORY. ╔F YOUR CODE NEEDS TO GO HIGHER THAN THIS,
- YOU CAN CHANGE THE LOWEST PAGE IN ╥┴═0 USED FOR DYNAMIC MEMORY BY SETTING
- THE VARIABLE ╙╘┴╥╘╨╟0 BEFORE CALLING ╙╘┴╥╘╒╨.
-
-
- ╬EXT FOLLOWS A LIST OF THE ROUTINES AND GLOBAL VARIABLES AVAILABLE. ╔F YOU
- WANT A DETAILED TECHNICAL DESCRIPTION OF THE DIFFERENCES BETWEEN THESE
- DYNAMIC MEMORY ROUTINES AND THE ONES PUBLISHED IN ╔SSUE #2 OF THE ╚ACKING
- ═AG, READ THE FILE "DYMA.DIFFS". ╘HE FILE "DYNA.SYMS" CONTAINS ALL OF THE
- CORRESPONDENCES BETWEEN MY ═ERLIN SYMBOLS AND ├RAIG ┬RUCE'S ORIGINAL
- SYMBOLS THAT APPEARED IN THE ╚ACKING ═AG.
-
- -╥OB ╦NOP
- ╔NTERNET: RKNOP@TYBALT.CALTECH.EDU
- ╟┼NIE: ╥.╦╬╧╨1
-
- -----------------------------------------------------------------------------
-
- ╥OUTINES:
- ---------
-
- ╘HE ROUTINES AVAILABLE IN THE LINK LIBRARY ARE EXACTLY THE SAME AS THOSE
- DESCRIBED IN ├RAIG ┬RUCE'S ARTICLE IN ╔SSUE #2 OF THE ╒SENET ╚ACKING ═AG:
-
-
- ╙╘┴╥╘╒╨()
-
- ├ALL TO INITIALIZE DYNAMIC MEMORY ROUTINES.
-
-
- ╙╚╒╘─╧╫╬()
-
- ├ALL WHEN FINISHED WITH DYNAMIC MEMORY.
-
-
- ┌╨╠╧┴─( [ZP1]=╞AR╨OINTER, .╪=┌P┴DDR, .┘=╠ENGTH )
-
- ╠OAD A NUMBER OF BYTES SPECIFIED BY ┘ TO THE ZERO PAGE ADDRESS SPECIFIED BY ╪
- FROM THE MEMORY CHUNK POINTED TO BY ZP1.
-
-
- ┌╨╙╘╧╥┼( [ZP1]=╞AR╨OINTER, .╪=┌P┴DDR, .┘=╠ENGTH )
-
- ╙TORE A NUMBER OF BYTES SPECIFIED BY ┘ FROM THE ZERO PAGE ADDRESS SPECIFIED
- BY ╪ TO THE MEMORY CHUNK POINTED TO BY ZP1.
-
-
- ╞┼╘├╚( [ZP1]=╞AR╨OINTER, (ZW1)=╥AM0╨OINTER, .┴┘=╠ENGTH )
-
- ╠OAD A NUMBER OF BYTES SPECIFIED BY ┴ (LOW BYTE) AND ┘ (HIGH BYTE) TO THE
- ╥┴═ 0 MEMORY ADDRESS IN ZW1 FROM THE MEMORY CHUNK POINTED TO BY ZP1.
-
-
- ╙╘┴╙╚( [ZP1]=╞AR╨OINTER, (ZW1)=╥AM0╨OINTER, .┴┘=╠ENGTH )
-
- ╙TORE A NUMBER OF BYTES SPECIFIED BY ┴ (LOW BYTE) AND ┘ (HIGH BYTE) FROM
- THE ╥┴═ 0 MEMORY ADDRESS IN ZW1 TO THE MEMORY CHUNK POINTED TO BY ZP1.
-
-
- ═┴╠╠╧├( .┴┘=╠ENGTH ) : [ZP1]=╞AR╨OINTER, .├╙=ERROR
-
- ┴LLOCATE A CHUNK OF MEMORY OF LENGTH SPECIFIED BY ┴ (LOW BYTE) AND ┘
- (HIGH BYTE). ╥ETURN A POINTER TO THE ALLOCATED CHUNK IN ZP1.
-
-
- ╞╥┼┼( [ZP1]=╞AR╨OINTER, .┴┘=╠ENGTH ) : .├╙=ERROR
-
- ─E-ALLOCATE THE CHUNK OF MEMORY POINTED TO BY ZP1, WITH ┴ (LOW BYTE) AND
- ┘ (HIGH BYTE) HOLDING THE LENGTH OF THE CHUNK TO BE DE-ALLOCATED.
-
-
-
- ╟LOBAL ╓ARIABLES ACCESSIBLE IN ─┘═┴.╥┼╠.╧:
- ------------------------------------------
-
- ┼╥╥╬╧ - ┼RROR NUMBER FOR ERROR RETURNS
-
- ╬┼╪╨┬╬╦ - ╬UMBER OF ╥┼╒ BANKS (SET IN ╙╘┴╥╘╒╨)
-
- ╥┼╒╠╔═╔╘ - ═AX # ╥┼╒ BANKS TO ATTEMPT TO ACCESS (DEFAULT 127)
-
- ╬╔╬╘┬╬╦ - ╬UMBER OF INTERNAL BANKS (SET IN ╙╘┴╥╘╒╨)
-
- ╔╬╘╠╔═╔╘ - ═AX # INTERNAL BANKS TO ATTEMPT TO ACCESS (DEFAULT 8)
-
- ═┴╠╠╧├╚─ - ╞IRST FREE MEMORY CHUNK IN THE LINKED LIST OF FREE CHUNKS.
- (3 BYTE VARIABLE)
-
- ╞╥┼┼═┼═ - ╬UMBER OF DYNAMICALLY ALLOCABLE FREE BYTES.
- (3 BYTE VARIABLE)
-
- ╙╘┴╥╘╨╟0 - ╠OWEST PAGE IN ╥┴═0 TO USE FOR DYNAMIC MEMORY (DEFAULT $40)
-
- ╙╘┴╥╘╨╟1 - ╠OWEST PAGE IN ╥┴═ 1-7 TO USE FOR DYNAMIC MEMORY ($04)
-
- ╥┴═1╠┼╬ - # OF PAGES IN ╥┴═ 1-7 TO USE FOR DYNAMIC MEMORY ($FB)
-
- -----------------------------------------------------------------------------
-