home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / geos / programming / documents / geoProgrammer.txt < prev    next >
Encoding:
Text File  |  1998-01-11  |  115.4 KB  |  3,102 lines

  1.  
  2. hITCHhIKER'S gUIDE tO gEOpROGRAMMER v2.0
  3. ----------------------------------------
  4.  
  5. tHIS DOCUMENT CONTAINS A COLLECTION OF WORKING DOCUMENTS CONCERNING
  6. GEOpROGRAMMER v2.0. aS THERE IS NO USER'S MANUAL, THESE FILES WILL HAVE
  7. TO SUFFICE FOR NEW USERS.
  8. eRIC e. dEL sESTO, dECEMBER 1990.
  9.  
  10. gENERAL:
  11. FEATURESv2
  12. round1
  13. versions
  14. verstats
  15. upgrade_to_v2
  16. todo
  17.  
  18. gEOaSSEMBLER:
  19. GEOaSSEMtodo
  20.  
  21. gEOlINKER:
  22. GEOlINKtodo
  23.  
  24. gEOdEBUGGER:
  25. GEOdEBUGtodo
  26. GEOdEBUGsPECSreadme
  27. iNITfORiobUG
  28. reunOTES
  29. reuBUGS
  30. APPtYPES
  31. MEMpROTECT
  32. CBMaPPS
  33. HIDEmODE
  34. INTERRUPTS
  35. NMI
  36. RBOOTwARN
  37. VIEWcOMMAND
  38. ENVIRONMENT
  39. WISHlIST
  40.  
  41. NEW:
  42. GEOaSSEMBLER, GEOlINKER, AND GEOdEBUGGER TAKE FULL ADVANTAGE
  43. OF EXTRA MEMORY AND 2 mhz PROCESSOR SPEED OF cOMMODORE 128
  44. AND 128d COMPUTERS.
  45.  
  46. nOW: FASTER AND MORE MEMORY-EFFICIENT!
  47.  
  48. gEOpROGRAMMER iMPROVEMENTS
  49.      iN vERSION 2.0
  50.  
  51. gEOaSSEMBLER:
  52. ONE PROGRAM RUNS UNDER geos 64 and geos 128 (80 COLUMN ONLY ON 128)
  53. FILE SELECTION db SCROLLS FASTER AND HOLDS 40 FILENAMES
  54.  
  55. SYMBOL TABLE SIZE:c64 MODEc128 MODE
  56. 3210
  57.  
  58. MACRO TABLE SIZE:c64 MODEc128 MODE
  59. XXX NAMES, XXX CHARS389 NAMES, 8000 CHARS
  60.  
  61. OBJECT CODE SIZE LIMIT:c64 MODEc128 MODE
  62. XXX BYTES7999 BYTES
  63.  
  64. NEW ERROR MESSAGES:
  65. "TOO MANY LOCAL LABEL REFERENCES"
  66. "PHASE ERROR IN VALUE"
  67. "PHASE ERROR IN FLAG"
  68. "SYNTAX ERROR"
  69.  
  70. ("TOO MANY LOCAL LABELS" CHANGED TO "TOO MANY LOCAL LABEL DEFINITIONS")
  71. HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO cbm TEXT CODES.
  72. ENDING db HAS ICON TO RUN THE LINKER
  73.  
  74. gEOlINKER:
  75. ONE PROGRAM RUNS UNDER geos 64 and geos 128 (80 COLUMN ONLY ON 128)
  76. FILE SELECTION db SCROLLS FASTER AND HOLDS 40 FILENAMES
  77. vlir LINKS: UP TO 21 MODULES (RESIDENT + 20 OVERLAY)
  78. ALLOWS UP TO 20 .REL FILES PER MODULE (OR TOTAL IN seq LINK)
  79.  
  80. SYMBOLS:c64 MODEc128 MODE
  81. seq / cbm APPLICATIONS:XX
  82. vlir APPLICATIONS:XX
  83. RESIDENT MODULE:X3185
  84. SWAP MODULE:X1375
  85.  
  86. OBJECT CODE SIZE LIMIT:c64 MODEc128 MODE
  87. XXX BYTES7999 BYTES
  88.  
  89. NEW ERROR MESSAGES:
  90. "TOO MANY ERRORS"
  91. "ILLEGAL FILE NAME"
  92. "TOO MANY FILES IN A MODULE"
  93.  
  94. ENDING db HAS ICON TO RUN THE DEBUGGER
  95.  
  96. gEOdEBUGGER:
  97. ONE PROGRAM RUNS UNDER geos 64 and geos 128
  98. SEE SUB-AREAS BELOW FOR NOTED DIFFERENCES BETWEEN MACHINES
  99.  
  100. SYMBOLS:c64 MODEc128 MODE
  101. seq / cbm APPLICATIONS:
  102. vlir APPLICATIONS:
  103. RESIDENT MODULE:
  104. SWAP MODULE:
  105.  
  106. sUPERdEBUGGER (IN reu) NOW OFFERS 800 SYMBOLS AND
  107. 1k OF MACRO DEFINITIONS.
  108.  
  109. 128 MODE HAS NEW "bACKrAM sUPERdEBUGGER", WHICH HIDES IN bACKrAM.
  110. uSER CAN WRITE FULL-SIZED APPLICATIONS IN fRONTrAM.
  111. cAN HANDLE 1000 SYMBOLS AND 1k OF MACRO DEFINITIONS.
  112. **tHIS NEW 20k DEBUGGER DOES NOW INCREASE SIZE OF gEOdEBUGGER:
  113. THERE IS A DIFFERENTIAL LOADER SCHEME WHICH LOADS
  114. IN THE SUPER DEBUGGER AND THEN RELOCATES THE CODE
  115. FOR EITHER THE reu OR bACKrAM.
  116.  
  117. NO geos SCREEN ASSUMPTIONS:
  118. DISPLAYS DEBUG INFORMATION ON 40-COLUMN SCREEN,
  119. AND RETURNS TO WHATEVER SCREEN (AND SCREEN MODE)
  120. WAS IN USE WHEN RUNNING USER CODE, OR WHEN f7 IS PRESSED
  121. SEE BELOW ABOUT DEBUGGER'S SHADOW VARS FOR vic PARAMETERS
  122.  
  123. NEW AND IMPROVED MEMORY READ/WRITE ROUTINE:
  124. iNTERCEPTS (AND REDIRECTS TO DEBUGGER SHADOW VARIABLES)
  125. READS AND WRITES TO:
  126. $0000 AND $0001 (REGISTERS WHICH CONTROL MEMORY MAP)
  127. AREA OF ZERO PAGE WHICH IS USED BY DEBUGGER
  128. MEMORY AREAS USED BY reu sUPERdEBUGGER (REDIRECTS
  129. TO USER MEMORY SWAP AREA IN BANK #0 OF reu)
  130. SEVERAL vic CHIP REGISTERS, INCLUDING $dd00 (CIA2bASE),
  131. WHICH CONTROLS vic MEMORY MAP
  132. ON 128: $d500-$d50a (MEMORY MANAGMENT UNIT)
  133. $ff00-$ff04 (MORE MMU REGISTERS)
  134. $d030       (1mhz/2mhz SWITCH)
  135.  
  136. dISALLOWS READS AND WRITES TO:
  137. ALL rom AREAS (SO NO BLEED THROUGH TO ram OCCURS)
  138. ANY AREA WHERE DEBUGGER CODE OR SYMBOLS ARE STORED
  139. (5 DIFFERENT CASES HERE, DUE TO 3 DEBUGGER TYPES
  140. ON 2 MACHINES.)
  141. STACK AREA BELOW CURRENT sp (DEBUGGER IS USING)
  142. PAGE 3 irq/brk/nmi VECTORS USED BY romS
  143. $fff9 AREA irq/brk/nmi VECTORS
  144. RAM EXPANSION UNIT'S dma CONTROLLER, IF USING
  145. reu sUPERdEBUGGER
  146. "CTAB" - EXTERNAL 1kX4 ram USED BY vic CHIP IN TEXT
  147. MODE. oN 128, THERE ARE TWO OF THESE. dEBUGGER
  148. USES CTAB #1, AND PREVENTS r/w TO IT. uSER IS
  149. FREE TO USE CTAB #0.
  150.  
  151. wHEN ACCESSING ram IN 128 MODE, CALCULATES EFFECTIVE ADDRESS,
  152. TAKING BANK NUMBER AND BANK SHARING STATUS INTO ACCOUNT.
  153.  
  154. nEW AND IMPROVED CONTEXT SWITCH (SECTION OF CODE WHICH BRIDGES GAP
  155. BETWEEN DEBUGGER AND USER CODE):
  156. TRAPS INTERRUPTS WHICH OCCUR WHEN USER'S APPLICATION SWAPS rom
  157. IN WITHOUT DISABLING INTERRUPTS; WARNS USER THROUGH
  158. DEBUGGER MESSAGE.
  159. ON 128 SYSTEM:
  160. HANDLES BANK-TO-BANK SWITCHING REQUIRED TO
  161. GET FROM EITHER BANK TO ONE OF 3 DEBUGGERS.
  162. SAVES AND RESTORES PROCESSOR CLOCK SPEED 1mhz / 2mhz
  163.  
  164. *iMPROVED gETb / pUTb COMMAND: WORKS WITH 1571 AND 1581 DRIVES.
  165.  
  166. *dISASSEMBLES AND TOP-STEPS THROUGH IN-LINE CALLS TO geos CORRECTLY.
  167. uSER CAN DISABLE THIS OPTION.
  168.  
  169. *DISPLAYS cpu_data ($0001) OR cONFIG ($ff00) AS PRIMARY MEMORY MAP 
  170. REGISTER IN 64 AND 128 MODES RESPECTIVELY. tHIS AFFECTS
  171. THE "r" REGISTER DISPLAY COMMAND AND THE "reg" REGISTER
  172. DISPLAY/MODIFY COMMAND.
  173.  
  174. mORE ERROR CHECKING DURING FILE LOADS, WITH INFORMATIVE DIALOG BOXES:
  175. EXTENSIVE ERROR CHECKS AND GOOD ERROR DIALOG BOXES FOR:
  176. DEBUGGER MODULE SWAPS
  177. USER APPLICATION LOADS
  178. MACRO FILE LOADS
  179. SYMBOL FILE LOADS
  180. DISPLAYS INFORMATIVE ERROR DIALOG BOX FOR FORMAT ERRORS
  181. IN GEOwRITE MACRO DEFINITION FILES. dISPLAYS FILENAME,
  182. ERROR MESSAGE, PAGE AND LINE NUMBER.
  183.  
  184. CAN DEBUG APPLICATIONS WHICH TRASH geos
  185. APPLICATION MUST HANDLE LOADING ITS OWN CODE IN OVER geos AREAS
  186. APPLICATION MUST DISABLE INTERRUPTS OR SET UP ITS OWN
  187. INTERRUPT SERVICE ROUTINE. wILL HAVE TO BE CLEVER
  188. TO PLACE HIS INTERRUPT VECTOR IN $334 AREA WHEN
  189. HIS APPLICATION IS RUNNING UNDER THE DEBUGGER.
  190. (i WILL SUPPLY THIS CODE IN THE NEW SAMPLE APP.)
  191.  
  192. uNSEEN COMPLICATIONS WHICH ARE HANDLED:
  193. BANK SWITCH CONCERNS DURING:
  194. CONTEXT SWITCH
  195. jsr COMMAND
  196. gETb / pUTb COMMANDS
  197. RBOOT
  198. MAINTAINING SOFTWARE BREAKPOINTS
  199. SINGLE STEP BREAKPOINT
  200.  
  201. aND ALL BUGS HAVE BEEN FIXED!
  202.  
  203. sAMPLE fILES:
  204.  
  205.  
  206.  
  207. geoprogrammer v2.0
  208. beta test round #1
  209.    jULY 29, 1988
  210.  
  211.  
  212. *** please read this before you install the disk ***
  213.  
  214.  
  215. cONGRATULATIONS ON BEING SELECTED AS A TESTER FOR GEOpROGRAMMER v2.0 !
  216.  
  217. bECAUSE GEOpROGRAMMER IS SUCH A COMPLEX PRODUCT, AND BECAUSE WE WANT
  218. TO MAKE SURE IT IS 100% BUG-FREE WHEN WE START SHIPPING IT, WE HAVE DECIDED
  219. TO PUT GEOpROGRAMMER v2.0 THROUGH TWO ROUNDS OF bETA tESTING.
  220.  
  221. tHIS IS ROUND ONE. iN THIS PACKAGE YOU WILL FIND YOUR GEOpROGRAMMER v2.0
  222. DISK, AND SOME QUICK NOTES ABOUT DIFFERENCES FROM VERSIONS v1.0 AND v1.1.
  223. uNFORTUNATELY, WE HAVE NOT HAD THE TIME TO FULLY TEST GEOlINKER,
  224. AND WE HAVE NOT YET COMPLETED UPGRADING THE COLLECTION OF SAMPLE FILES
  225. TO geos v2.0 LEVEL. tHEREFORE, DO NOT BE CONCERNED IF YOU ENCOUNTER
  226. SEVERAL BUGS IN GEOlINKER. jUST LET ME KNOW BY FILLING OUT ONE OF THE
  227. ENCLOSED bUG rEPORT FORMS, AND SENDING THE FORM BACK (ALONG WITH
  228. SOURCE FILES IF REQUIRED) TO bERKELEY sOFTWORKS AS SOON AS POSSIBLE.
  229.  
  230. oVER THE NEXT THREE TO FOUR WEEKS WE WILL PUT THE FINISHING TOUCHES
  231. ON THE PRODUCT, WILL FIX ANY BUGS THAT YOU FIND, AND WILL DO MORE IN-HOUSE
  232. TESTING. wE WILL THEN SEND YOU A GEOpROGRAMMER v2.0 beta 2 DISK, AND ROUND
  233. TWO WILL HAVE BEGUN. wE EXPECT THE ENTIRE bETA tEST PERIOD (ROUNDS ONE
  234. AND TWO) TO LAST FIVE TO SIX WEEKS.
  235.  
  236. wE DO NOT YET HAVE A DRAFT OF THE GEOpROGRAMMER v2.0 uSER'S mANUAL aDDENDUM
  237. TO SEND YOU, SO THE INFORMATION ON THE FOLLOWING PAGES WILL HAVE TO
  238. SUFFICE FOR THE NEXT FEW WEEKS. fROM A USER-INTERFACE STANDPOINT,
  239. THERE ARE FEW DIFFERENCES BETWEEN VERSIONS 1.0 AND 2.0, SO IF YOU HAVE
  240. NEVER USED THE PRODUCT BEFORE, YOU CAN FOLLOW THE INSTRUCTIONS IN THAT TEXT.
  241.  
  242. iF YOU HAVE BEEN USING GEOpROGRAMMER v1.0 OR v1.1 FOR SOME TIME, PLEASE
  243. BE SURE TO TRY ASSEMBLING AND LINKING AND SOURCE FILES YOU'VE ALREADY
  244. WRITTEN.
  245.  
  246. important: YOU WILL NOT BE ABLE TO INSTALL GEOdEBUGGER ON A 1571 DRIVE
  247. WHICH IS CONFIGURED AS A 1571. yOU MUST RE-CONFIGURE THE DRIVE AS A 1541,
  248. AND RE-OPEN THE GEOpROGRAMMER v2.0 DISK, BEFORE YOU CAN INSTALL GEOdEBUGGER.
  249. tHIS BUG WILL BE CORRECTED IN THE SOFTWARE YOU RECEIVE IN ROUND TWO.
  250.  
  251. iF YOU HAVE ANY QUESTIONS REGARDING OUR bETA tEST PROGRAM OR THE
  252. GEOpROGRAMMER PRODUCT, PLEASE CONTACT kEVIN bOLAND, AND HE WILL
  253. CONNECT YOU TO ME OR ONE OF THE OTHER TEAM MEMBERS.
  254.  
  255. wELCOME TO THE TEAM, AND THANKS FOR YOUR HELP!
  256.  
  257.  
  258.  
  259. eRIC e. dEL sESTO
  260. gEOpROGRAMMER
  261. pROJECT lEADER
  262.  
  263.  
  264.  
  265.  
  266. state of geoprogrammer v2.0
  267.      beta test round 1
  268.  
  269.  
  270. GEOaSSEMBLER:
  271. sHOULD BE FAIRLY SOLID. bE TOUGH ON IT.
  272.  
  273. GEOlINKER:
  274. hAS SOME KNOWN BUGS, BUT SHOULD BE ABLE TO CORRECTLY LINK
  275. seq, cbm, AND vlir APPLICATIONS.
  276.  
  277. GEOdEBUGGER:
  278. sHOULD BE ROCK SOLID. tORTURE IT. mAKE IT DIE.
  279.  
  280. sAMPLE geos fILES:
  281. aRE ON THE DISK, AND HAVE BEEN UPGRADED TO INCLUDE geos 128
  282. AND geos 64 v2.0 DEFINITIONS. nOT THAT BEFORE YOU INCLUDE
  283. THESE FILES, YOU MUST SET THE CONSTANTS c64 AND c128 TO
  284. true ($ff) OR false ($00).
  285.  
  286. sAMPLEsEQ:
  287. nOT INCLUDED ON bETA rOUND 1 DISK.
  288.  
  289. sAMPLEvLIR:
  290. aLL THE REQUIRED FILES ARE ON THE bETA rOUND 1 DISK. nOTE
  291. THAT THE sAMvLIReQUATES FILE SETS THE c64 AND c128 CONSTANTS.
  292. tHESE ARE PRESENTLY SET SO THAT THE APPLICATION WILL
  293. ONLY RUN UNDER c64 geos. iF YOU ARE TESTING ON A c128, BE SURE
  294. TO CHANGE THESE CONSTANT DEFINITIONS BEFORE YOU BEGIN.
  295. aLSO- THERE ARE SEVERAL NEW ADDITIONS TO THE sAMPLEvLIR FILES,
  296. SUCH AS SUPPORT FOR KEYBOARD SHORTCUTS IN THE MENUS. yOU CAN
  297. EXPECT TO FIND SOME PRETTY OBVIOUS BUGS IN SOME OF THESE NEW
  298. FEATURES.
  299.  
  300. sAMPLEda:
  301. nOT INCLUDED ON bETA rOUND 1 DISK.
  302.  
  303. sAMPLEcbm:
  304. tHIS IS A NEW SAMPLE FILE, TO DEMONSTRATE THE NON-geos CAPABILITY
  305. OF GEOdEBUGGER v2.0. nOT INCLUDED ON bETA rOUND 1 DISK.
  306.  
  307.  
  308.  
  309.  
  310. geoprogrammer improvements
  311.      iN vERSION 2.0
  312.  
  313.  
  314. GEOaSSEMBLER:
  315. ONE PROGRAM RUNS UNDER geos 64 and geos 128 (80 COLUMN ONLY ON 128)
  316. FILE SELECTION db SCROLLS FASTER AND HOLDS 239 FILENAMES
  317. IMPROVED OUTPUT FILE CREATION: FASTER ASSEMBLIES, DELETES PARTIAL
  318. FILES AFTER DISK ERRORS
  319. HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO cbm TEXT CODES.
  320. EXAMPLE:.TEXT"tHIS IS TEXT FOR THE cbm TEXT SCREEN"
  321.  
  322. c64 MODE ONLY:
  323. WILL GENERATE UP TO 3584 CODE BYTES
  324. MAX NUMBER OF MACRO DEFINITIONS: 100 
  325. SIZE OF MACRO STORAGE BUFFER: 3560 
  326. SYMBOL TABLE HOLDS 1151 SYMBOLS
  327.  
  328. c128 MODE ONLY:
  329. WILL GENERATE UP TO 7670 CODE BYTES
  330. MAX NUMBER OF MACRO DEFINITIONS: 389 
  331. SIZE OF MACRO STORAGE BUFFER: 12520 
  332. SYMBOL TABLE HOLDS 3208 SYMBOLS
  333.  
  334. GEOlINKER:
  335. ONE PROGRAM RUNS UNDER geos 64 and geos 128 (80 COLUMN ONLY ON 128)
  336. FILE SELECTION db SCROLLS FASTER AND HOLDS 210 FILENAMES
  337. IMPROVED OUTPUT FILE CREATION: FASTER LINKS, DELETES PARTIAL
  338. FILES AFTER DISK ERRORS
  339.  
  340. IMPROVED .LNK FILE PARSING: ALLOWS MULTIPLE PAGE .LNK FILES,
  341. GIVES MORE INFORMATIVE ERROR MESSAGES
  342. .sym FILE CAN HAVE 60 LINES/PAGE
  343. vlir LINKS: UP TO 21 MODULES (RESIDENT + 20 OVERLAY)
  344. ALLOWS UP TO 20 .REL FILES PER MODULE (OR TOTAL IN seq LINK)
  345.  
  346. c64 MODE ONLY:
  347. BUFFER FOR COMPACTED .lnk FILE HAS 3840 BYTES
  348. CODE BUFFER IS 3584 BYTES
  349. RESIDENT SYMBOL TABLE HOLDS 1274 SYMBOLS
  350. SWAP MODULE SYMBOL TABLE HOLDS 850 SYMBOLS
  351. DURING seq AND cbm APPLICATION LINKS, COMBINES SYMBOL
  352. TABLES TO ALLOW A TOTAL OF 2124 SYMBOLS
  353.  
  354. c128 MODE ONLY:
  355. BUFFER FOR COMPACTED .lnk FILE HAS 3840 BYTES
  356. CODE BUFFER IS 7670 BYTES
  357. RESIDENT SYMBOL TABLE HOLDS 3217 SYMBOLS
  358. SWAP MODULE SYMBOL TABLE HOLDS 1740 SYMBOLS
  359.  
  360.  
  361.  
  362. (STATE OF THE PRODUCT, CONTINUED...)
  363.  
  364. GEOdEBUGGER:
  365. IMPROVED ERROR DETECTION WHEN PARSING .dbm FILES,
  366. PRINTS PAGE AND LINE NUMBER WITH ERROR MESSAGE
  367. CAN TOP-STEP OVER IN-LINE CALLS TO geos ROUTINES SUCH AS I_rECTANGLE
  368.  
  369. mINI dEBUGGER (c64/c128)
  370. OCCUPIES $3500-$5fff, PLUS $334-$3FF IN BANK 1
  371. (HOLD run/stop KEY DOWN WHILE RUNNING GEOdEBUGGER
  372. TO INVOKE THE MINI-DEBUGGER.)
  373.  
  374. sUPER dEBUGGER (c64/c128 WITH reu)
  375. MACRO BUFFER IS 1024 BYTES
  376. SYMBOL TABLE HOLDS 731 SYMBOLS
  377. OCCUPIES SPACE IN reu BANK 0, PLUS $334-$3FF IN BANK 1
  378. (iF YOU HAVE A ram expansion unit ON YOUR SYSTEM, 
  379. THIS DEBUGGER WILL AUTOMATICALLY LOAD WHEN YOU RUN
  380. GEOdEBUGGER. bY HOLDING run/stop OR space DOWN,
  381. YOU CAN OVERRIDE THIS TO RUN THE mINI-dEBUGGER OR bACKrAM
  382. sUPER-dEBUGGER.)
  383.  
  384. bACKrAM sUPER dEBUGGER (c128 ONLY)
  385. (128 MODE HAS NEW "bACKrAM sUPERdEBUGGER", WHICH HIDES IN bACKrAM.
  386. uSER CAN WRITE FULL-SIZED APPLICATIONS IN fRONTrAM.)
  387. cAN HANDLE 1000 SYMBOLS AND 1k OF MACRO DEFINITIONS.
  388. MACRO BUFFER IS 1024 BYTES
  389. SYMBOL TABLE HOLDS 910 SYMBOLS
  390. OCCUPIES $2000-$9fff IN c128 BANK 0, PLUS $334-$3FF IN BANK 1
  391. (iF YOU HAVE AN reu ON YOUR c128 SYSTEM, YOU MUST HOLD 
  392. THE space KEY DOWN WHILE RUNNING GEOdEBUGGER TO INVOKE THE
  393. bACKrAM sUPER-dEBUGGER.)
  394.  
  395.  
  396.  
  397. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0
  398. (yOU MIGHT FIND THIS INFORMATION INTERESTING.)
  399.  
  400. NO geos SCREEN ASSUMPTIONS:
  401. DISPLAYS DEBUG INFORMATION ON 40-COLUMN SCREEN,
  402. AND RETURNS TO WHATEVER SCREEN (AND SCREEN MODE)
  403. WAS IN USE WHEN RUNNING USER CODE, OR WHEN f7 IS PRESSED
  404. SEE BELOW ABOUT DEBUGGER'S SHADOW VARS FOR vic PARAMETERS
  405.  
  406. NEW AND IMPROVED MEMORY READ/WRITE ROUTINE:
  407. iNTERCEPTS (AND REDIRECTS TO DEBUGGER SHADOW VARIABLES)
  408. READS AND WRITES TO:
  409. $0000 AND $0001 (REGISTERS WHICH CONTROL MEMORY MAP)
  410. AREA OF ZERO PAGE WHICH IS USED BY DEBUGGER
  411. MEMORY AREAS USED BY reu sUPERdEBUGGER (REDIRECTS
  412. TO USER MEMORY SWAP AREA IN BANK #0 OF reu)
  413. SEVERAL vic CHIP REGISTERS, INCLUDING $dd00 (CIA2bASE),
  414. WHICH CONTROLS vic MEMORY MAP
  415. ON 128: $d500-$d50a (MEMORY MANAGMENT UNIT)
  416. $ff00-$ff04 (MORE MMU REGISTERS)
  417. $d030       (1mhz/2mhz SWITCH)
  418.  
  419. dISALLOWS READS AND WRITES TO:
  420. ALL rom AREAS (SO NO BLEED THROUGH TO ram OCCURS)
  421. ANY AREA WHERE DEBUGGER CODE OR SYMBOLS ARE STORED
  422. (5 DIFFERENT CASES HERE, DUE TO 3 DEBUGGER TYPES
  423. ON 2 MACHINES.)
  424. STACK AREA BELOW CURRENT sp (DEBUGGER IS USING)
  425. PAGE 3 irq/brk/nmi VECTORS USED BY romS
  426. $fff9 AREA irq/brk/nmi VECTORS
  427. RAM EXPANSION UNIT'S dma CONTROLLER, IF USING
  428. reu sUPERdEBUGGER
  429. "CTAB" - EXTERNAL 1kX4 ram USED BY vic CHIP IN TEXT
  430. MODE. oN 128, THERE ARE TWO OF THESE. dEBUGGER
  431. USES CTAB #1, AND PREVENTS r/w TO IT. uSER IS
  432. FREE TO USE CTAB #0.
  433.  
  434. wHEN ACCESSING ram IN 128 MODE, CALCULATES EFFECTIVE ADDRESS,
  435. TAKING BANK NUMBER AND BANK SHARING STATUS INTO ACCOUNT.
  436.  
  437. nEW AND IMPROVED CONTEXT SWITCH (SECTION OF CODE WHICH BRIDGES GAP
  438. BETWEEN DEBUGGER AND USER CODE):
  439. TRAPS INTERRUPTS WHICH OCCUR WHEN USER'S APPLICATION SWAPS rom
  440. IN WITHOUT DISABLING INTERRUPTS; WARNS USER THROUGH
  441. DEBUGGER MESSAGE.
  442. ON 128 SYSTEM:
  443. HANDLES BANK-TO-BANK SWITCHING REQUIRED TO
  444. GET FROM EITHER BANK TO ONE OF 3 DEBUGGERS.
  445. SAVES AND RESTORES PROCESSOR CLOCK SPEED 1mhz / 2mhz
  446.  
  447. *iMPROVED gETb / pUTb COMMAND: WORKS WITH 1571 AND 1581 DRIVES.
  448.  
  449. *dISASSEMBLES AND TOP-STEPS THROUGH IN-LINE CALLS TO geos CORRECTLY.
  450. uSER CAN DISABLE THIS OPTION.
  451.  
  452. *DISPLAYS cpu_data ($0001) OR cONFIG ($ff00) AS PRIMARY MEMORY MAP 
  453. REGISTER IN 64 AND 128 MODES RESPECTIVELY. tHIS AFFECTS
  454. THE "r" REGISTER DISPLAY COMMAND AND THE "reg" REGISTER
  455. DISPLAY/MODIFY COMMAND.
  456.  
  457.  
  458.  
  459. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0 (CONTINUED)
  460.  
  461. mORE ERROR CHECKING DURING FILE LOADS, WITH INFORMATIVE DIALOG BOXES:
  462. EXTENSIVE ERROR CHECKS AND GOOD ERROR DIALOG BOXES FOR:
  463. DEBUGGER MODULE SWAPS
  464. USER APPLICATION LOADS
  465. MACRO FILE LOADS
  466. SYMBOL FILE LOADS
  467. DISPLAYS INFORMATIVE ERROR DIALOG BOX FOR FORMAT ERRORS
  468. IN GEOwRITE MACRO DEFINITION FILES. dISPLAYS FILENAME,
  469. ERROR MESSAGE, PAGE AND LINE NUMBER.
  470.  
  471. CAN DEBUG APPLICATIONS WHICH TRASH geos
  472. APPLICATION MUST HANDLE LOADING ITS OWN CODE IN OVER geos AREAS
  473. APPLICATION MUST DISABLE INTERRUPTS OR SET UP ITS OWN
  474. INTERRUPT SERVICE ROUTINE. wILL HAVE TO BE CLEVER
  475. TO PLACE HIS INTERRUPT VECTOR IN $334 AREA WHEN
  476. HIS APPLICATION IS RUNNING UNDER THE DEBUGGER.
  477. (i WILL SUPPLY THIS CODE IN THE NEW SAMPLE APP.)
  478.  
  479. uNSEEN COMPLICATIONS WHICH ARE HANDLED:
  480. BANK SWITCH CONCERNS DURING:
  481. CONTEXT SWITCH
  482. jsr COMMAND
  483. gETb / pUTb COMMANDS
  484. RBOOT
  485. MAINTAINING SOFTWARE BREAKPOINTS
  486. SINGLE STEP BREAKPOINT
  487.  
  488. aND ALL BUGS HAVE BEEN FIXED!
  489.  
  490.  
  491.  
  492.  
  493.  
  494. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0 (CONTINUED)
  495.  
  496. hOW gEOdEBUGGER MANAGES MACHINE-DEPENDENT
  497.     MEMORY-MAP ENVIRONMENT INFORMATION
  498.  
  499. tHE DEBUGGER CARRIES MEMORY-MAP ENVIRONMENT INFORMATION, WHICH IS MACHINE-
  500. DEPENDENT, AROUND IN GENERIC VARIABLES SUCH AS APPbANKiNFO1 AND APPbANKiNFO2.
  501. tHIS WAY, THE ROUTINES WHICH JUST MOVE THIS INFORMATION AROUND (BUT DON'T
  502. DIRECTLY USE IT) ARE MACHINE-INDEPENDENT.
  503.  
  504. eXECUTION eNVIRONMENT:
  505.  
  506. wHEN THE DEBUGGER STOPS EXECUTION OF AN APPLICATION (restore PRESSED OR
  507. sbp HIT), THE USER'S "EXECUTION ENVIRONMENT" IS SAVED. tHIS INCLUDES:
  508.  
  509. PROCESSOR REGISTER AND FLAG VALUES
  510. pc ADDRESS
  511. CURRENT BANK INFORMATION
  512. ZERO PAGE VARIABLES
  513. STACK INFORMATION
  514.  
  515. wE CALL THE pc ADDRESS AND ITS MEMORY-MAP INFORMATION THE "eXECUTION
  516. eNVIRONMENT" OR MORE SIMPLY, THE "pc POINTER".
  517.  
  518. vIEWING eNVIRONMENT:
  519.  
  520. oNCE THE DEBUGGER HAS STOPPED AN APPLICATION, THE "VIEWING ENVIRONMENT" IS THE
  521. SAME AS THE "EXECUTION ENVIRONMENT". tHIS MEANS THAT ALL OF THE MEMORY
  522. EXAMINATION AND MODIFICATION COMMANDS USE THE SAME MEMORY-MAP INFORMATION AS
  523. THE eXECUTION eNVIRONMENT.
  524.  
  525. tHROUGH USE OF THE setview COMMAND, THE VIEWING ENVIRONMENT CAN BE CHANGED.
  526. yOU CAN SET UP A NEW MEMORY-MAP CONFIGURATION, AND THEN USE THE MEMORY
  527. EXAMINATION AND MODIFICATION COMMANDS TO READ/WRITE MEMORY IN THIS NEW
  528. CONFIGURATION.
  529.  
  530. wHEN YOU GIVE THE go COMMAND TO RESUME EXECUTION, THE DEBUGGER RESTORES THE
  531. EXECUTION ENVIROMENT, AND YOUR PROGRAM CONTINUES EXECUTION.
  532.  
  533. wE CALL THE VIEWING ADDRESS AND ITS ENVIRONMENT THE "lc POINTER".
  534.  
  535. -------------------------------------------------------------------------------
  536. aSPECTS OF gEOdEBUGGER WHICH MUST CHANGE ACCORDING TO MACHINE-DEPENDENCIES
  537. IN v2.0, TO REMAIN COMPATIBLE WITH v1.0. (kILL THESE IN v3.0.)
  538.  
  539. rEGISTER COMMAND:
  540. DISPLAYS pc ADDRESS, HIGHLIGHTS ADDRESS IF EFFECTIVE ADDRESS OF
  541. pc (CONSIDERING pc BANK INFO) IS BANK 0.
  542.  
  543. DISPLAYS cpu_data VALUE (iT REALLY SHOULD NOT DO THIS ANYMORE,
  544. BUT i AM TRYING TO MAINTAIN COMPATABILITY WITH v1.
  545.  
  546. 64:READ DIRECTLY FROM APPbANKiNFO1
  547.  
  548. 128:[7-3,0]: DIRECT READ FROM MEMORY
  549. [21]: SHADOW WITH APPcpu_b21
  550.  
  551.  
  552.  
  553. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0 (CONTINUED)
  554.  
  555. rEGISTER oPEN cOMMAND:
  556. ..INCLUDES mm REGISTER: IS cpu_data. (tO BE COMPATIBLE WITH v1)
  557. 64:DIRECTLY READ/WRITE TO APPbANKiNFO1
  558.  
  559. 128:[7-3,0]: DIRECTLY r/w TO MEMORY
  560. [21]: SHADOW WITH APPcpu_b21
  561.  
  562. -------------------------------------------------------------------------------
  563. aSPECTS OF gEOdEBUGGER WHICH ARE MACHINE-INDEPENDENT.
  564.  
  565. mEMORY EXAMINATION AND MODIFICATION:
  566. BANK COMMAND:AFFECTS lc'S BANK INFO: CURbANKiNFO1 AND CURbANKiNFO2
  567.  
  568. OPEN MODES:USES lc'S BANK INFO
  569. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  570.  
  571. DUMP COMMAND:USES lc'S BANK INFO
  572. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  573.  
  574. MOVE/FILL/DIFF/FIND:USES lc'S BANK INFO
  575. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  576.  
  577. @ AND @@ OPERATORS:USES lc'S BANK INFO
  578.  
  579. sINGLE AND tOP-STEP BREAKPOINTS:
  580. MAINTAIN THEIR OWN BANK INFORMATION
  581. (COPIED FROM pc BANK INFO BEFORE EXECUTION BEGUN)
  582.  
  583. sOFTWARE bREAKPOINTS:
  584. MAINTAIN THEIR OWN BANK INFORMATION
  585. (COPIED FROM pc BANK INFO BEFORE EXECUTION BEGUN)
  586.  
  587. pc COMMAND:
  588. WITHOUT ARGUMENT:COPY pc ADDRESS AND BANK INFO TO lc
  589. (RESTORES EXECUTION ENVIRONMENT)
  590.  
  591. WITH ARGUMENT: (SAME AS SETTING pc IN OPEN MODE)
  592. SET pc ADDRESS = ARGUMENT
  593. SET pc BANK INFO = lc BANK INFO
  594.  
  595.  
  596.  
  597.  
  598. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0 (CONTINUED)
  599. (this portion of the geodebugger test list is supplied to give
  600. you an idea of how the memory-environment management commands work.)
  601.  
  602. 4.10 mEMORY-mAP eNVIRONMENT mANAGEMENT
  603.  
  604. 4.10.1 initview COMMAND: COPIES THE MEMORY-MAP ENVIRONMENT INFO FROM THE
  605. EXECUTION VARIABLES (pc) TO THE DISPLAY/MODIFY VARIABLES (lc).
  606. uSED WHEN USER HAS BEEN VIEWING DIFFERENT BANKS, AND NOW WANTS TO EXAMINE
  607. THE MEMORY MAP AS IT WAS WHEN WE STOPPED EXECUTION.
  608.  
  609. 64  128 128
  610. reu reu back
  611. ___ ___ ___INITVIEWNO ARGUMENTS. dISPLAYS pc LINE
  612. AND ENVIRONMENT INFO.
  613. ___ ___ ___NOTE THAT pc COMMAND HAS SAME EFFECT OF COPYING ENVIRONMENT
  614. INFORMATION, BUT DOES NOT DISPLAY MEMORY-MAP INFO WHEN DONE.
  615. ___ ___ ___VERIFY THAT "iv" COMMAND ALIAS WORKS
  616.  
  617. 4.10.2 setview COMMAND: SETS THE MEMORY-MAP ENVIRONMENT FOR THE
  618. DISPLAY/MODIFY COMMANDS. dISPLAYS NEW ENVIRONMENT INFO IF NO ERROR.
  619.  
  620. FORMAT:SETVIEW <mEMmAP1> [, <mEMmAP2> ]
  621.  
  622. ___ ___ ___SETVIEW <mEMmAP1>SETS APPmEMmAP1.
  623.     ___ ___c128: SHOULD NOT AFFECT APPmEMmAP2
  624.  
  625. SETVIEW <mEMmAP1>,<mEMmAP2>
  626.     ___ ___c128: SETS APPmEMmAP1 AND APPmEMmAP2.
  627.     ___ ___c128: VERIFY THAT b7 AND b6 ARE CLEARED IN APPmEMmAP2
  628. (THIS VARIABLE MUST HAVE 0'S IN THOSE POSITIONS)
  629. ___ ___ ___DISPLAYS NEW ENVIRONMENT INFO CORRECTLY
  630. ___ ___ ___ERROR IF NO ARGUMENTS GIVEN
  631. ___ ___ ___ERROR IF EITHER VALUE GREATER THAN 255.
  632. ___ ___ ___VERIFY THAT "sv" COMMAND ALIAS WORKS
  633.  
  634. 4.10.3 view COMMAND: DISPLAYS CURRENT MEMORY-MAP ENVIRONMENT INFO.
  635.  
  636. ___ ___ ___VIEWNO ARGUMENTS REQUIRED
  637. ___c64: ONLY DISPLAYS 1ST OF 2 VALUES ON EACH LINE
  638.     ___ ___c128: DISPLAYS BOTH VALUES ON EACH LINE
  639. ___ ___ ___VERIFY THAT "vw" COMMAND ALIAS WORKS
  640.  
  641. 4.10.4 useview COMMAND: FORCES THE DISPLAY/MODIFY ENVIRONMENT UPON THE
  642. EXECUTION ENVIRONMENT. dISPLAYS NEW INFO WHEN FINISHED.
  643.  
  644. ___ ___ ___USEVIEWNO ARGUMENTS REQUIRED
  645. ___ ___ ___VERIFY THAT "uv" COMMAND ALIAS WORKS
  646.  
  647. 4.10.5 b0 COMMAND: SET DISPLAY/MODIFY ENVIRONMENT VARIABLE SO THAT ALL OF
  648. BANK 0 IS VISIBLE. dISPLAYS NEW INFO WHEN FINISHED.
  649.  
  650. ___ ___ ___B0NO ARGUMENTS REQUIRED
  651.  
  652. 4.10.6 b1 COMMAND: SET DISPLAY/MODIFY ENVIRONMENT VARIABLE SO THAT ALL OF
  653. BANK 1 IS VISIBLE. dISPLAYS NEW INFO WHEN FINISHED.
  654.  
  655. ___ ___ ___B1NO ARGUMENTS REQUIRED
  656.  
  657. 4.10.7 mEMORY-mAP eNVIRONMENT mANAGEMENT...
  658.  
  659. test: VIEW ENVIRONMENT SAME AS EXECUTION ENVIRONMENT WHEN SOFTWARE BREAKPOINT
  660. IS HIT OR restore IS PRESSED.
  661. ___ ___ ___USE VIEW COMMAND, VALUES ON TWO LINES SHOULD BE EQUAL.
  662.  
  663.  
  664.  
  665. aDDITIONAL TECHNICAL INFORMATION ON GEOdEBUGGER v2.0 (CONTINUED)
  666.  
  667. test: THE FOLLOWING COMMANDS, MAKING SURE THAT THEY USE THE VIEW ENVIRONMENT
  668. MEMORY-MAP INFORMATION WHEN ACCESSING MEMORY.
  669.  
  670. ___ ___ ___"a" OPEN MODE
  671. ___ ___ ___"m" OPEN MODE
  672. ___ ___ ___DEPOSITING VALUES WHEN IN AN OPEN-MODE
  673. ___ ___ ___@ AND @@ OPERATORS IN EXPRESSIONS
  674. ___ ___ ___dump
  675. ___ ___ ___dis
  676. ___ ___ ___n
  677. ___ ___ ___w
  678. ___ ___ ___print
  679. ___ ___ ___fill / copy / diff / find
  680.  
  681. test: THAT EXECUTION ENVIRONMENT IS USED WHEN EXECUTION IS RE-STARTED.
  682. ___ ___ ___NEED TEST CODE FOR THIS...
  683.  
  684. test: (c128 ONLY) IN THE FOLLOWING COMMANDS, AN ADDRESS SHOWS UP HIGHLIGHTED
  685. IF THE EFFECTIVE ADDRESS (CONSIDERING ram SHARING) IS IN BANK 0.
  686. hINT: TO SET lc TO BANK 0, USE b0 COMMAND. tO SET pc TO BANK 0, USE b0 FOLLOWED
  687. BY useview COMMAND.
  688.     ___ ___"r"
  689.     ___ ___"a" OPEN MODE
  690.     ___ ___"m" OPEN MODE
  691.     ___ ___dis, w, n, ETC.
  692.     ___ ___dump
  693.     ___ ___diff
  694.     ___ ___find
  695.     ___ ___history
  696.  
  697. ------------------------------------------------------------------------------
  698. v1.00011/2/87sENT TO hls, BUT NEVER MASTERED DUE TO 128 CRASHES.
  699. complete master release tape made 11/11/87.
  700.  
  701. tHIS version 1.0 (11/2/87) RELEASE WAS SENT TO hls, BUT WAS NEVER MASTERED
  702. BECAUSE bRIAN HAD ME CHANGE THE 128 ENABLE BIT IN EACH APPLICATION'S HEADER
  703. BLOCK. sEE v1.010 FOR LIST OF KNOWN BUGS.
  704.  
  705. ------------------------------------------------------------------------------
  706. v1.01011/18/87sENT TO zmag. dUPLICATED AS gEOpROGRAMMER v1.0.
  707. 4000 SHIPPED WITHOUT ERRATA SHEET.
  708. eRRATA ITEMS POSTED TO qlink 1/25/88
  709.  
  710. oNLY DIFFERENCE FROM v1.000: BITS SET IN HEADERS SO DOES NOT CRASH geos 128.
  711. (iTEMS MARKED patch WERE CORRECTED WITH pATCH2.88 PROGRAM TO CREATE v1.1.
  712. iTEMS MARKED later WERE NOT FIXED UNTIL v2.0.)
  713.  
  714. kNOWN BUGS IN 11.18 RELEASE, WHICH WERE CORRECTED WITH pATCH2.88 PROGRAM.
  715.  
  716. lINKER HAS TROUBLE CREATING vlir FILES. bUG: VARIABLE CALLED
  717. FILEwRITTEN NOT SET TO true, SO bam IS RE-READ FROM DISK INSTEAD
  718. OF USING MORE RECENT bam WHICH IS IN MEMORY.
  719.  
  720. aSSEMBLER HAS TROUBLE WITH LOCAL LABELS AFTER PARSING A BITMAP OR
  721. ROUTINE LONGER THAN 254 BYTES. bUG: TWO BRANCHES SKIP TOO FAR AND
  722. MISS CODE WHICH RESETS A VARIABLE.
  723.  
  724. aSSEMBLER HAS TROUBLE WITH BITMAPS. bUG: UNCOMPACTING WRONG.
  725.  
  726. lINKER HAS TROUBLE WITH .RAMSECTS IN rESIDENT AND sWAP MODULES.
  727.  
  728.  
  729. kNOWN BUGS IN 11.18 RELEASE, NOT CORRECTED UNTIL v2.0:
  730. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  731. aSSEMBLER (THINGS TO MENTION IN ERRATA LIST):
  732. iN ASSEMBLER, IF ENCOUNTER DISK ERROR, SHOULD ATTEMPT
  733. TO CLOSE ANY OPENED FILES SO DISK IS NOT INCONSISTENT.
  734. errata: WARN THEM, TELL THEM TO DELETE FILES AND VALIDATE DISK.
  735.  
  736. aSSEMBLER HAS TROUBLE UNCOMPACTING BITMAPS OF LESS THAN 18 PIXELS HEIGHT
  737. errata: DON'T DO IT
  738.  
  739. iF A ROUTINE IS LARGE ENOUGH TO COME CLOSE TO THE END OF CODEbUFFER,
  740. IT COULD OVERFLOW INTO THE eXTERNAL rEFERENCE bUFFER.
  741. errata: KEEP ROUTINES SMALLER THAN APPROX 250 BYTES (ASK TED)
  742.  
  743. aSSEMBLER: DOES NOT PRINT CORRECT PAGE NUMBER IN ERROR MESSAGES
  744. REFERRING TO BRANCH INSTRUCTIONS. aLSO COUNTS MACRO EXPANSION LINES,
  745. SO MOST ERROR MESSAGES ARE OFF.
  746. errata: IF YOU GET A LOCAL LABEL ERROR, CONSIDER THAT IT MIGHT
  747. BE ON THE PREVIOUS PAGE (OR PAGE BEFORE THAT).
  748. oTHER ERRORS: CONSIDER MACRO EXPANSIONS WHEN COUNTING LINE NUMS.
  749.  
  750. wHEN ASSEMBLING lda zp,y (WHICH DOES NOT EXIST), ASSEMBLER SHOULD
  751. SUBSTITUTE lda abs,y.
  752. errata: WARN AND TELL THEM HOW TO GET AROUND IT.
  753.  
  754. LDA #rELOCvALUE OR .BYTE rELOCvALUE PASSES RELOCATION
  755. POINTER TO LINKER WHICH TRASHES WORD IN CODE. aSSEMBLER SHOULD
  756. GENERATE ERROR MESSAGE.
  757. errata: USE LOW BYTE OPERATOR: "[" BEFORE ANY SUCH REFERENCES.
  758.  
  759. "*" OPERATOR ALWAYS GETS PSECT VALUE, SO DOES NOT WORK IN RAMSECT OR
  760. ZSECT AREAS.
  761. errata: WARN THEM
  762.  
  763. iN ASSEMBLER, SCREEN COLORS NOT SET CORRECTLY, SO CAN SEE iNSORT WORKING
  764. BY CHANGING YOUR SCREEN COLORS.
  765. errata: TELL THEM TO CLOSE THEIR EYES DURING ASSEMBLIES.
  766.  
  767. dOES NOT LOOK FOR gEOwRITE CORRECTLY WHEN OPENING ERROR FILE:
  768. SHOULD LOOK FOR PERMANENT NAME STRING.
  769. errata: DO NOT RENAME YOUR GEOwRITE.
  770.  
  771. aSSEMBLER: (THINGS i WAS TOLD ABOUT TOO LATE TO MENTION THEM IN THE ERRATA LIST)
  772. "+" OPERATOR DOES NOT WORK IN UNARY CASE
  773.  
  774. pHASE eRROR: JSR $0045 DOES NOT ASSEMBLE CORRECTLY.
  775.  
  776. wHEN AN UNRESOLVED SYMBOL IS USED AS THE SECOND OPERAND IN AN EXPRESSION
  777. THAT INVOLVES A DIVISION OR A MODULUS, THE EXPRESSION WILL NOT BE PASSED
  778. TO THE LINKER.  iNSTEAD, IT WILL GENERATE AN ERROR IN THE ASSEMBLER.
  779.  
  780. aSSEMBLER: (THINGS NOT TO MENTION IN ERRATA LIST)
  781. aSSEMBLER'S BITMAP DECOMPACTION CODE DOES NOT HANDLE bIGcOUNT VALUES
  782. CORRECTLY. nOT A BIG PROBLEM: PHOTO SCRAPS UP TO geos v1.3 WORK OK.
  783.  
  784. iF THERE IS ANY TEXT AFTER A .ENDM, PRODUCES "hIDDEN eRROR".
  785.  
  786. fILE SELECTION db BUG: COULD RUN PROGRAM WITHOUT CHOOSING A FILE.
  787.  
  788. aSSEMBLER SHOULD NOT PASS pASS1, pICw, AND pICh SYMBOLS TO LINKER.
  789.  
  790. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  791. lINKER: (THINGS TO MENTION IN ERRATA LIST)
  792. iN LINKER, IF ENCOUNTER DISK ERROR, SHOULD ATTEMPT
  793. TO CLOSE ANY OPENED FILES SO DISK IS NOT INCONSISTENT.
  794. errata: WARN THEM, TELL THEM TO DELETE FILES AND VALIDATE DISK.
  795.  
  796. lINKER: WHEN USING fREEbLOCK TO DELETE HEADER BLOCKS FROM cbm FILES,
  797. DOES NOT REALIZE THAT 1.2 KERNAL DOES NOT HAVE CODE FOR 'fREEbLOCK'.
  798. errata: WARN THEM, SUGGEST THEY UPGRADE TO geos 1.3.
  799.  
  800. lINKER: DOES NOT CORRECT FOR ILLEGAL .REL FILENAMES. dOES NOT GIVE
  801. CORRECT ERROR FOR .REL FILE NOT FOUND. dOES NOT STOP AFTER FIRST
  802. 10 .REL FILES IN A MODULE, PRODUCING A BUG.
  803. errata: WARN THEM NOT TO HAVE MORE THAN 10 .REL FILES PER MODULE.
  804.  
  805. oN ONE-DRIVE SYSTEM, LINKER DOES NOT DISPLAY "SYM FILE" DIALOG BOX.
  806. errata: TELL THEM TO BUY A SECOND DRIVE.
  807.  
  808. iN LINKER, SCREEN COLORS NOT SET CORRECTLY, SO CAN SEE iNSORT WORKING
  809. BY CHANGING YOUR SCREEN COLORS.
  810. errata: TELL THEM TO CLOSE THEIR EYES DURING ASSEMBLIES.
  811.  
  812. dOES NOT LOOK FOR gEOwRITE CORRECTLY WHEN OPENING ERROR FILE:
  813. SHOULD LOOK FOR PERMANENT NAME STRING.
  814. errata: DO NOT RENAME YOUR GEOwRITE.
  815.  
  816. lINKER: (THINGS i WAS TOLD ABOUT TOO LATE TO MENTION THEM IN THE ERRATA LIST)
  817. "+" OPERATOR DOES NOT WORK IN UNARY CASE, AND "//" OPERATOR DOES
  818. NOT WORK.
  819. errata: i DIDN'T HEAR ABOUT THIS UNTIL IT WAS TOO LATE.
  820.  
  821. lINKER: (THINGS NOT TO MENTION IN ERRATA LIST)
  822. lINKER IS NOT CLEARING zp FLAG BIT, SO IN DEBUGGER SOME SYMBOLS
  823. HAVE A GRAPHICS CHARACTER IN POSITION 3.
  824.  
  825. lINKER DOES NOT STOP AT 99 ERRORS.
  826.  
  827. fILE SELECTION db BUG: COULD RUN PROGRAM WITHOUT CHOOSING A FILE.
  828.  
  829. wHEN .LNK FILE IS WRITE-PROTECTED, LINKER DISPLAYS db. cLICK ON IGNORE
  830. TO CONTINUE.
  831.  
  832. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  833. dEBUGGER: (MENTION IN ERRATA LIST:)
  834. SOME SYMBOLS SHOW UP WITH GRAPHICS CHAR IN POSITION 3. iS REALLY
  835. A LINKER BUG.
  836. errata: WARN THEM, SUGGEST THEY USE * WILDCARD DURING SEARCHES.
  837.  
  838. dEBUGGER: (DO NOT MENTION IN ERRATA LIST:)
  839. DEBUGGER FILE-SELECT db DOES NOT DISPLAY WRITE-PROTECTED FILES
  840.  
  841. DEBUGGER DOES NOT LOAD prg FILES WHICH ARE WRITE-PROTECTED CORRECTLY
  842.  
  843. DEBUGGER IS NOT SAVING OR RESTORE DESKtOP'S rom VECTORS ($314-$318)
  844. CORRECTLY. iS NOT PREVENTING WRITES TO $314-$315. nOT A BIG
  845. PROBLEM: MY VECTORS AT $314 AND $316 ARE THE SAME ANYWAY.
  846. fIXED 2/1/88 BY CORRECTING BASbrkvEC AND BASirqvEC IN CONSTANTS FILE.
  847. nEW CODE INSTALLED IN mAY TO HANDLE THIS DIFFERENTLY.
  848.  
  849. reu sUPERdEBUGGER ONLY ALLOWS 768 SYMBOLS, WHERE IT COULD HAVE 870.
  850.  
  851. reu sUPERdEBUGGER DOES NOT GETB/PUTB FROM 1571 DRIVE CORRECTLY.
  852.  
  853. IF YOU HOLD stop KEY DOWN WHEN DEBUGGER TURNS ON TEXT SCREEN
  854. DURING INITIAL BOOT SEQUENCE, IT ABORTS ITS INIT CYCLE,
  855. AND LEAVES YOU AT THE COMMAND PROMPT WITH THINGS SCREWY.
  856.  
  857. nOTE:bOTH MONITORS IN gEOdEBUGGER HAVE AN UNUSED ROUTINE WHICH
  858. TAKES 18 BYTES. good location for patch subroutines!
  859. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  860. sAMPLE fILES: (MENTION IN ERRATA LIST)
  861. iN sAMvLIR.LNK, SHOULD HAVE $3000 INSTEAD OF $5000 FOR VARIABLE AREA.
  862. (CAUSES MINI-DEBUGGER TO CRASH)
  863.  
  864. iN sAMsEQ.LNK, SHOULD HAVE $3000 INSTEAD OF $5000 FOR VARIABLE AREA.
  865. (dOES NOT CAUSE MINI-DEBUGGER TO CRASH BECAUSE NO VARS ARE USED.)
  866.  
  867. iN sAMsEQ AND sAMvLIRrES, "vertical" UNDER mENUtABLE SHOULD BE
  868. "sub_menu".
  869. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  870. mANUAL: (MENTION IN ERRATA)
  871. .HEADER STRUCTURES ARE CHECKED FOR 12 STATEMENTS, NOT 11.
  872. dEBUGGER IS NOT AS ISOLATED AS WE MAKE IT SOUND: STILL USES geos
  873. RAM EXPANSION ROUTINES.
  874. dEBUGGER USES $340-$3FF, NOT $350-$3FF.
  875. app_ram == $400 HAS BEEN CHANGED TO app_ram = $400.
  876. rUNTO (RT) COMMAND WILL ONLY DISPLAY geos SCREEN IF
  877. OPTION 5 IS ENABLED (G1 COMMAND).
  878. tHE SAMPLE APPLICATION CANNOT BE RE-RUN WITH GO $400.
  879. pAGE 7-11 INCORRECT IN STATING THAT RUNTO WILL SHOW SCREEN.
  880. pAGE 8-1 THE bRITISH POUND CHARACTER IS A SINGLE KEY
  881. (NO NEED TO PRESS c= KEY).
  882. sAMPLEvLIR DOES NOT DO ANY ERROR CHECKING WHEN TRYING TO
  883. FIND "sAMPLEvLIR" ON DISK. iF THEY ARE NOT CAREFUL WHEN
  884. CHANGING APPLICATION'S NAME, WILL NOT LOAD CORRECTLY.
  885. wARN PEOPLE THAT USE OF pASS1 IS DANGEROUS; tELL THEM TO
  886. MAKE SURE THEY HAVE A .PSECT AFTER INCL. ZP VARS FILE.
  887.  
  888. mANUAL: (DO NOT MENTION)
  889. mAY WANT TO EXPLAIN A LITTLE BIT ABOUT INTERRUPT TIMING,
  890. OR "WHY MOUSEdATA CHANGES".
  891.  
  892. ------------------------------------------------------------------------------
  893. v1.1002/88tHIS VERSION IS ACTUALLY v1.010 AFTER THE
  894. pATCH2.88 PROGRAM HAS MODIFIED THE aSSEMBLER
  895. AND lINKER. pATCH2.88 DISTRIBUTED THROUGH
  896. qUANTUMlINK, AND v1.100 mASTER DISK CREATED
  897. BY RUNNING pATCH2.88 ON v1.010 mASTER DISK.
  898. tHIS v1.100 mASTER DISK DUPLICATED BY zmAG,
  899. COPIES SENT FREE OF CHARGE TO REGISTERED OWNERS
  900. WHO REQUESTED IT.
  901.  
  902. ------------------------------------------------------------------------------
  903. v2.000aPRIL 1988c64/c128 VERSION, WITH MANY IMPROVEMENTS
  904. AND BUG FIXES.
  905.  
  906. this is a quick list; SEE "VERSIONv2" FILE FOR A SUMMARY.
  907.  
  908. aSSEMBLER iMPROVEMENTS:
  909. RUNS UNDER geos 64 AND geos 128 (IN 80 COLUMN MODE)
  910. ENDING db HAS ICON TO RUN LINKER
  911. HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO cbm TEXT CODES.
  912.  
  913. lINKER iMPROVEMENTS:
  914. RUNS UNDER geos 64 AND geos 128 (IN 80 COLUMN MODE)
  915. ALLOWS UP TO 20 .REL FILES PER MODULE
  916. ENDING db HAS ICON TO RUN DEBUGGER
  917.  
  918. dEBUGGER iMPROVEMENTS:
  919.  
  920. sAMPLEfILES iMPROVEMENTS:
  921.  
  922. nEW WARNINGS FOR MANUAL:
  923. aSSEMBLING FILES UNDER c128 AND LINKING THEM UNDER c64--
  924. DOES lINKER CHECK FOR TABLES WHICH ARE TOO LARGE?
  925.  
  926. ------------------------------------------------------------------------------
  927.  
  928. tECHNICAL oVERVIEW OF iMPORTANT dIFFERENCES
  929. bETWEEN gEOpROGRAMMER vERSIONS
  930.  
  931. aSSEMBLER:
  932. sINCE CODE RECORD, XREF RECORD, RELOC RECORD, AND ERROR FILE PAGES
  933. ARE WRITTEN OUT BLOCK BY BLOCK, WE ARE NOT CONCERNED WITH BUFFER SIZES.
  934.  
  935. mACRO TEXT STORAGE SIZE:
  936. v1.02k
  937. v2.0 (64 MODE)3560
  938. v2.0 (128 MODE)12520
  939.  
  940. sYMBOL TABLE SIZE:
  941. v1.03017+7670 = 10687 (1068 SYMBOLS)
  942. v2.0 (64 MODE)11510 (1151 SYMBOLS)
  943. v2.0 (128 MODE)32080 (3208 SYMBOLS)
  944.  
  945. dOES NOT RUN IN 128 40-COLUMN MODE BECAUSE ALL dma WORK IN
  946. BACKRAM CAUSES 40-COLUMN SCREEN TO FLICKER BADLY.
  947.  
  948. lINKER:
  949. xREF AND rELOC POINTERS ARE READ BLOCK-BY-BLOCK FROM RECORDS,
  950. SO WE ARE NOT CONCERNED ABOUT BUFFER SIZES.
  951.  
  952. cODE BUFFER SIZE (FOR ONE .REL'S CODE RECORD)
  953. v1.06608
  954. v2.0 (64 MODE)3584
  955. v2.0 (128 MODE)7670
  956.  
  957. rESIDENT MODULE SYMBOL TABLE SIZE:
  958. v1.010k= 10240 (1024 SYMBOLS)
  959. v2.0 (64 MODE)12740(1274 SYMBOLS)
  960. v2.0 (128 MODE)32170(3217 SYMBOLS)
  961.  
  962. sWAP MODULE SYMBOL TABLE SIZE:
  963. v1.08k= 8192 (819 SYMBOLS)
  964. v2.0 (64 MODE)8500 (850 SYMBOLS)
  965. v2.0 (128 MODE)17400 (1740 SYMBOLS)
  966.  
  967. sEQUENTIAL aPPS:
  968. v1.010k(YOU MIGHT THINK IS 10k + 8k,
  969. BUT THERE IS A BUG: IS ONLY 10k)
  970. v2.0 (64 MODE)21240
  971. v2.0 (128 MODE)32170
  972. (BACKRAM ONLY. mATTsORT TO USE BOTH
  973. BANKS (GIVING 48k) WOULD BE A MESS.)
  974.  
  975. nUMBER OF .REL FILES PER MODULE:
  976. v1.010
  977. v2.0 (64/128)20
  978.  
  979. cREATING gEOwRITE SYM FILES:
  980. FOR EACH .DBG RECORD:
  981. READ BLOCK BY BLOCK INTO FRONTRAM AND MOVE TO BACK
  982. SORT ENTIRE IN BACK
  983. FOR EACH SYM IN BACK
  984. COPY SYM TO FRONT
  985. WRITE TO 5k PAGE BUFFER (fg SCREEN AREA?)
  986. WRITE OUT 5k BUFFER AS PAGE
  987.  
  988. dOES NOT RUN IN 128 40-COLUMN MODE BECAUSE ALL dma WORK IN
  989. BACKRAM CAUSES 40-COLUMN SCREEN TO FLICKER BADLY.
  990.  
  991. gEOdEBUGGER:
  992.  
  993.  
  994. GEOpROGRAMMER v2.0 FOR c64 AND c128
  995.  uPGRADE oFFER
  996. sEPTEMBER, 1988
  997.  
  998. dEAR GEOpROGRAMMER USER:
  999.  
  1000. oUR LATEST RELEASE OF THE GEOpROGRAMMER PACKAGE, GEOpROGRAMMER v2.0,
  1001. WILL SOON BE AVAILABLE. wE CAN OFFER YOU, AS A REGISTERED GEOpROGRAMMER OWNER,
  1002. THIS NEW PRODUCT FOR THE LOW PRICE OF $xx.xx. wE HAVE REWRITTEN MUCH OF THE
  1003. ORIGINAL SOFTWARE, TAKING YOUR SUGGESTIONS INTO ACCOUNT, AND ADDING SOME
  1004. NEW FEATURES.
  1005.  
  1006. oVERALL pRODUCT iMPROVEMENTS:
  1007. - GEOpROGRAMMER v2.0 SUPPORTS THE cOMMODORE 128 AND 128d COMPUTERS.
  1008. GEOaSSEMBLER, GEOlINKER, AND GEOdEBUGGER NOW RUN UNDER geos 128
  1009. AT THE FASTER 2mhz CLOCK RATE, USING THE 80-COLUMN SCREEN AND
  1010. ADDITIONAL MEMORY.
  1011.  
  1012. - GEOpROGRAMMER v2.0 IS FULLY COMPATIBLE WITH ALL VERSIONS
  1013. OF geos: v1.2, v1.3, AND v2.0, AND WITH THE NEW 1581 DISK DRIVE.
  1014.  
  1015. - IN BOTH c64 AND c128 MODES, GEOpROGRAMMER v2.0 RUNS FASTER AND MORE
  1016. EFFICIENTLY. eRROR DETECTION HAS BEEN IMPROVED, AND MORE INFORMATIVE
  1017. ERROR MESSAGES ARE PROVIDED. fILE SELECTION HAS BEEN STREAMLINED.
  1018.  
  1019. - THE THREE SAMPLE APPLICATIONS HAVE BEEN UPGRADED TO SUPPORT THE
  1020. c128, AND TO ILLUSTRATE MORE geos PROGRAMMING CONCEPTS SUCH AS
  1021. KEYBOARD SHORTCUTS.
  1022.  
  1023. - THE geos "INCLUDE" FILES HAVE BEEN UPDATED TO REFLECT geos v2.0
  1024. INFORMATION.
  1025.  
  1026. - GEOpROGRAMMER v2.0 INCLUDES AN ADDITIONAL SAMPLE APPLICATION,
  1027. WHICH DEMONSTRATES HOW YOU CAN DEVELOP "cbm" APPLICATIONS
  1028. WHICH DO NOT REQUIRE geos TO RUN.
  1029.  
  1030. iMPROVEMENTS IN GEOaSSEMBLER v2.0:
  1031. - GEOaSSEMBLER v2.0 WILL READ GEOwRITE SOURCE FILES FROM ALL VERSIONS
  1032. OF GEOwRITE, UP TO v2.1.
  1033.  
  1034. - NEW .TEXT DIRECTIVE CONVERTS ASCII TEXT STRINGS DIRECTLY INTO
  1035. cOMMODORE SCREEN CODES.
  1036.  
  1037. mAXIMUMmAXIMUM
  1038. aSPECT OF GEOaSSEMBLER v2.0IN c64 mODEIN c128 mODE
  1039. ------------------------------------------------------------------
  1040. SYMBOL DEFINITIONS:1151 SYMBOLS3208 SYMBOLS
  1041.  
  1042. MACRO DEFINITIONS:100 MACROS389 MACROS
  1043. OR 3560 BYTESOR 12520 BYTES
  1044.  
  1045. CODE BYTES GENERATED PER .REL FILE:3584 BYTES7670 BYTES
  1046. ------------------------------------------------------------------
  1047.  
  1048. iMPROVEMENTS IN GEOlINKER v2.0:
  1049. - GEOlINKER v2.0 WILL ACCEPT MULTIPLE-PAGE ".LNK" COMMAND FILES,
  1050. GENERATED WITH ANY VERSION OF GEOwRITE.
  1051.  
  1052. - WILL LINK UP TO 20 .REL FILES INTO A seq OR cbm APPLICATION,
  1053. AND UP TO 20 .REL FILES PER MODULE IN A vlir APPLICATION.
  1054.  
  1055.  
  1056.  
  1057. mAXIMUMmAXIMUM
  1058. sYMBOL DEFINITIONS IN GEOlINKER v2.0IN c64 mODEIN c128 mODE
  1059. ------------------------------------------------------------------
  1060. WHEN LINKING seq AND cbm APPLICATIONS:2124 SYMBOLS3217 SYMBOLS
  1061.  
  1062. WHEN LINKING vlir APPLICATIONS:
  1063. RESIDENT MODULE:1274 SYMBOLS3217 SYMBOLS
  1064. FOR EACH OVERLAY MODULE:850 SYMBOLS1740 SYMBOLS
  1065. ------------------------------------------------------------------
  1066.  
  1067. iMPROVEMENTS IN GEOdEBUGGER v2.0:
  1068. - NEW "HIDDEN MODE": NOW YOU CAN VIEW YOUR APPLICATION'S SCREEN
  1069. WHILE GIVING COMMANDS TO GEOdEBUGGER.
  1070.  
  1071. - GEOdEBUGGER v2.0 WILL RECOGNIZE CALLS TO INLINE geos ROUTINES
  1072. SUCH AS I_rECTANGLE, ALLOWING YOU TO SAFELY TOP-STEP OVER
  1073. AND DISASSEMBLE THESE CALLS.
  1074.  
  1075. - NEW bACKrAM sUPER dEBUGGER ALLOWS c128 OWNERS WITHOUT A RAM EXPANSION
  1076. UNIT TO TAKE ADVANTAGE OF THE sUPER dEBUGGER'S FEATURES.
  1077.  
  1078. - IMPROVED "CONTEXT SWITCH" IN c128 MODE, ALLOWING SINGLE-STEP
  1079. THROUGH CODE WHICH INVOLVES BANK SWITCHING; ALLOWS EXECUTION AT
  1080. EITHER 1 mhz OR 2 mhz CLOCK RATE.
  1081.  
  1082. - FULL SUPPORT FOR NON-geos APPLICATIONS, INCLUDING TECHNICAL NOTES
  1083. ON HOW TO WRITE AND INSTALL YOUR OWN INTERRUPT SERVICE ROUTINES.
  1084.  
  1085. - STRAY INTERRUPT TRAPPING FACILITY, TO AID IN ISOLATING RARE
  1086. CRASH CONDITIONS IN c64 AND c128 APPLICATIONS.
  1087.  
  1088. staci- EXPLAIN HOW THEY GO ABOUT ORDERING THE UPGRADE:
  1089. - PRICE
  1090. - WHERE TO SEND CHECK / MONEY ORDER / CREDIT CARD # / ETC
  1091. - WHETHER OR NOT THEY CAN CALL THEIR ORDER IN
  1092. - IF THEY MUST SEND THEIR ORIGINAL DISK, OR IF A RECEIPT WILL SUFFICE.
  1093. (DO NOT ASK THEM TO TEAR THE COVER OFF THEIR MANUAL- THEY WILL
  1094. STILL NEED THE OLD MANUAL!)
  1095. - WHO THEY SHOULD CALL WITH QUESTIONS, OR WHERE TO WRITE FOR INFO
  1096. ON THE UPGRADE OFFER (NOT ME!)
  1097.  
  1098.  
  1099. c128 MODE HAS REAL TROUBLE WITH BITMAPS. sEE FILE14&15...
  1100.  
  1101. -------------------------------------------------------------------------------
  1102. kNOWN (AND ALLOWABLE) DIFFERENCES BETWEEN  GEOaSSEMBLER (tED'S) AND 
  1103. GEOaSSEMBLER (MINE) OUTPUT FILES.
  1104.  
  1105. ted:eric:
  1106. ----------------------------------------------
  1107. .rel FILE:
  1108.     cODE RECORD
  1109. ILLEGAL BRANCH:GETS GARBAGE OFFSETOFFSET = $20
  1110.  
  1111.     eXrEF RECORD:
  1112. LESSi GENERATE MORE eXrEFS
  1113.  
  1114.     rELOC rECORD:
  1115.  
  1116.     sym RECORD:
  1117. +3: rELOC BIT:SET FOR zp LABELSALWAYS 0
  1118. +4: "==" BITSET FOR "=" EQUATESSET FOR "==" EQUATES
  1119.  
  1120. .err FILE:
  1121.     MARGINS IN RULER:OFFSET=+7: =$28=$30
  1122. -------------------------------------------------------------------------------
  1123.  
  1124. bugs:
  1125.  
  1126. done:
  1127. - FIXED LINK ICON
  1128. - CLEANED UP SOME 40/80 COLUMN PROBLEMS IN iNIT MODULE
  1129. - MADE WRITEbamtOdISK A BYTE VARIABLE
  1130. - ADDED pANICwRITEnEWbamtOdISK TO ROUTINES WHICH DELETE CHAINS
  1131. - CLEANED UP 40/80 COLUMN MODE SWITCHING SOME MORE
  1132. - FIXED LOTS OF MISCELLANEOUS THINGS IN MACRO EXPANSION...
  1133. - REWROTE HOW MACRO PARAMETERS ARE PARSED FROM DEFINITION LINE,
  1134. SO THAT CAN DETECT ALL ERROR CASES
  1135. - REWROTE HOW MACRO ARGUMENTS ARE PARSED FROM INVOCATION LINE,
  1136. HOW THEY ARE STORED AND SEARCHED.
  1137. SHOULD HANDLE NULL ARGS, TOO MANY ARGS
  1138. - FIXED HANDLING OF GLOBAL LABELS WITHIN MACROS- NOW SUBSTITUTES
  1139. CORRECTLY, HANDLES 8 CHAR SYMBOLS
  1140. - FIXED BUG IN NESTED MACROS WHICH HAVE GLOBAL LABELS (+1 ERROR)
  1141. - FIXED HOW sEARCHtABLE DETERMINES LENGTHS OF THINGS IT CAN SEARCH FOR
  1142. - RE-WROTE TEST FILE #19 (TESTS MACRO DEF AND EXP ERRORS),
  1143. ADDED A SERIES OF ADDITIONAL TESTS, VERIFIED ALL OUTPUT,
  1144. PLACED ON TEST DISK a.
  1145. - CREATED TEST FILE #75 (TESTS ALL POSSIBLE NON-FATAL ERROR MESSAGES)
  1146. iNCLUDES MOST SCENARIOS WHICH COULD GENERATE THESE ERRORS.
  1147. VERIFIED ALL OUTPUT, PLACED ON TEST DISK b.
  1148. - FIXED "RELOC" FLAG BUG: NOW SETS RELOCATION BITS IN LABELS CORRECTLY
  1149. - REWROTE HOW LOCAL LABELS AND REFERENCES TO THEM ARE PLACED IN TABLES
  1150. (CORRECTED BUG WHICH CLEANED UP AFTER jmp 10$ INCORRECTLY)
  1151. - REWROTE HOW INFORMATION IS COLLECTED ABOUT AN OPERAND WHILE
  1152. IT IS BEING EVALUATED, AND HOW THIS INFORMATION AFFECTS
  1153. THE POSSIBLE ADDRESSING MODES. cORRECTED SEVERAL BUGS
  1154. HAVING TO DO WITH EXPRESSIONS WHICH CONSIST OF SEVERAL
  1155. DIFFERENT TYPES OF ARGUMENTS.
  1156. - EXPRESSION WAS JUDGED AS RELOCATABLE EVEN AFTER MATH
  1157. - BIT FOR EQUATE WAS SET BY NOGLBL/NOEQIN STATUS
  1158. - "*" OPERAND DIDN'T SET RIGHT BIT FOR PSECT/RAMSECT
  1159. - WAS SETTING STATUS:b3 FOR "uNARYtOGETHER" CASES- WHY?
  1160. - IMPROPER HANDLING OF lda # AND .byte OPERANDS
  1161. - NOT GENERATING RELOC POINTERS AND EXREFS IN ALL CASES
  1162. - NOT CATCHING ALL POSSIBLE BRANCH ERRORS (BAD LOCAL LABEL
  1163. USAGE)
  1164. - MADE 2 CENTRAL ROUTINES FOR GRABBING ARGS FOR .if ETC, .block,
  1165. .psect ETC, ETC.
  1166. - CHANGED THE WAY gETeXPRESSION LOOKS AT "MUSTeVAL"
  1167. - REMOVED THE "COMPLEXeXP" FLAG
  1168. - REWROTE ERROR DETECTION IN LOCAL LABEL REFERENCES AND DEFINITIONS
  1169. - NOW CAN FORGET MOST RECENT LOCAL LABEL REFERENCE, FOR CASES
  1170. WHERE LINE IS BAD (DOES NOT STAMP CODE WHICH IS NOT ASSEMBLED)
  1171. - CREATED TESTFILE: FILE76_1 TO TEST ALL EXPRESSION PARSING AND
  1172. ERROR DETECTION; ALSO INCLUDES SOME BRANCHING TESTS
  1173. - FIXED A LOT OF BUGS RELATED TO USING "*" IN EXPRESSIONS
  1174. cORRECTED EXPRESSION EVALUATOR'S TYPE-CHECKING IN GENERAL
  1175. CREATED NEW TEST FILE (FILE7) TO TEST THIS
  1176. - oPENsOURCEfILE IN fILE/FILErOUTINES NO LONGER DOES A fINDfILE
  1177. BEFORE oPENrECORDfILE. sPEED ASSEMBLY A BIT.
  1178. - SPENT A DAY CHASING FILE14 BUG IN 128 MODE. nO LUCK.
  1179.  
  1180.  
  1181. keep an eye out for:
  1182.  
  1183. tHERE MIGHT BE A BUG WITH FILE62 (TOO MANY BACKRAM SYMBOLS)
  1184. TRY ON STAND-ALONE, SEE IF boldface CHARACTERS GET TRASHED
  1185. iF SO, DISABLE dma mOVEdATA, SEE IF IT STILL HAPPENS
  1186.  
  1187. -------------------------------------------------------------------------------
  1188. wARN IN MANUAL:
  1189. iT MAY BE POSSIBLE FOR ASSEMBLER TO HAVE TOO MANY SYMBOLS
  1190. THAN THE LINKER COULD READ IN FROM ONE .rel FILE.
  1191. bUT IF SOME OF THESE ARE .NOEQIN OR .NOGLBL'ED OUT, WE ARE OK.
  1192.  
  1193. wARN IN MANUAL THAT bne sTART+sTART WILL NOT ASSEMBLE CORRECTLY,
  1194. BECAUSE i ASSUME IS SOMETHING OF THE FORM: bne sTART+2, WHICH
  1195. IS LEGAL.
  1196.  
  1197. fILE SELECT db WILL DISPLAY ANY APPLICATION DATA FILE WHICH
  1198. DOES NOT END IN ".REL", ".DBG", ".SYM", ".ERR", ".LNK": THUS
  1199. IS FASTER THAN BEFORE. pROBLEM: WILL DISPLAY GEOfILE AND GEOpAINT ETC.
  1200. DOCUMENTS.
  1201.  
  1202. -------------------------------------------------------------------------------
  1203. future:
  1204.  
  1205. aDD TO TEST LIST
  1206. PAGE TOO BIG (4096)
  1207. ECHO TOO MANY PAGES
  1208. TOO MANY ERROR PAGES
  1209.  
  1210. MINOR BUGS FOUND IN FILE75:
  1211. nOT RECOGNIZING "LINE TOO LONG" CORRECTLY
  1212. cOULD NOT GET IT TO PRINT "EXPRESSION TOO COMPLEX"
  1213. DOES NOT DETECT .RAMSECT AND .INCLUDE IN MACRO DEFINITION
  1214. SEE ERROR #61- i DID NOT FORCE IT CORRECTLY
  1215.  
  1216. SEE FILE3: ASSEMBLER IS NOT FLAGGING ERROR FOR ".WORD "ERIC" "
  1217.  
  1218. c128 MODE: INTERMITTENT BUG WHEN TRYING TO ASSEMBLE FILE14 (BIG BITMAP)
  1219. OFF OF DRIVE a, ONTO ram disk. sOMETIMES GET "DISK NAME MISMATCH" ERROR.
  1220.  
  1221. c128:WHY DID 3208 NOT OVERFLOW SYMBOL TABLE?
  1222. TABLE HOLDS 3208- i SENT 3208 PLUS 3 ALREADY THERE!
  1223.  
  1224. cREATE A FILE78 WHICH IS A COPY OF FILE75, BUT WHICH TESTS .IF pASS1 STUFF.
  1225. i DID THIS ON 10/1/88, AND HIT A WEIRD PHASE ERROR AT gLOBALlABEL:. i DON'T
  1226. THINK THIS IS A BIG PROBLEM.
  1227.  
  1228. sLIGHT PROBLEM IN EXPRESSION EVALUATION: PARSES JMP (LABEL) AS RELOCATABLE
  1229. WITH MATH, SINCE IT HITS THE ENDING PARANTHESES. nEED TO EDUCATE GETeXPRESSION
  1230. A LITTLE MORE SO THIS DOES NOT HAPPEN. tHIS IS NOT A PROBLEM WITH THE (,X) AND
  1231. (),Y ADDRESSING MODES, BECAUSE THEY MUST HAVE RESOLVABLE zp EXPRESSIONS,
  1232. AND SO THEY NEVER GENERATE EXTERNAL REFERENCES.
  1233.  
  1234. -------------------------------------------------------------------------------
  1235. distant future
  1236.  
  1237. mOVE LOCAL LABEL PARSING OUT OF EXPRESSION EVALUATOR:
  1238. RIGHT NOW THE ERROR DETECTION IS VERY CONFUSED BY CASES SUCH AS
  1239. LDA10$+4
  1240. LDA4+10$+6666666666666
  1241. LDA10$+20$+30$;THREE REFERENCES ADDED TO LIST,
  1242. ;ONLY LAST ONE DELETED...
  1243.  
  1244. mINOR PROBLEM:
  1245. a LINE SUCH AS
  1246. .BYTE1,CRAP,2
  1247. WILL STILL GENERATE 3 BYTES OF CODE: WOULD BE NICE TO COMPLETELY
  1248. REVERSE THE EFFECTS (CODE, lc INCS, EXREFS AND RELOCS GENERATED, ETC)
  1249. OF A CODE LINE WHEN AN ERROR IS DETECTED. oTHERWISE THERE IS NO EASY WAY
  1250. TO HANDLE THIS CASE.
  1251.  
  1252. rELATED PROBLEM:
  1253. IN CASES WHERE AN ERROR IS DETECTED IN PASS 2 AND not PASS 1,
  1254. WE HAVE TO MAKE SURE THE SAME AMOUNT OF CODE IS GENERATED IN BOTH
  1255. PASSES, SO THAT NO PHASE ERRORS SHOW UP. "tOO MANY LOCAL LABEL
  1256. REFERENCES" IS A GOOD EXAMPLE OF THIS. sEE BEGINNING OF pARSEiNST
  1257. FOR HOW i HANDLED THIS.
  1258.  
  1259.  
  1260. c128 MODE HAS REAL TROUBLE WITH BITMAPS. sEE FILE14&15...
  1261.  
  1262. -------------------------------------------------------------------------------
  1263. kNOWN (AND ALLOWABLE) DIFFERENCES BETWEEN  GEOaSSEMBLER (tED'S) AND 
  1264. GEOaSSEMBLER (MINE) OUTPUT FILES.
  1265.  
  1266. ted:eric:
  1267. ----------------------------------------------
  1268. .rel FILE:
  1269.     cODE RECORD
  1270. ILLEGAL BRANCH:GETS GARBAGE OFFSETOFFSET = $20
  1271.  
  1272.     eXrEF RECORD:
  1273. LESSi GENERATE MORE eXrEFS
  1274.  
  1275.     rELOC rECORD:
  1276.  
  1277.     sym RECORD:
  1278. +3: rELOC BIT:SET FOR zp LABELSALWAYS 0
  1279. +4: "==" BITSET FOR "=" EQUATESSET FOR "==" EQUATES
  1280.  
  1281. .err FILE:
  1282.     MARGINS IN RULER:OFFSET=+7: =$28=$30
  1283. -------------------------------------------------------------------------------
  1284.  
  1285. bugs:
  1286.  
  1287. done:
  1288. - FIXED LINK ICON
  1289. - CLEANED UP SOME 40/80 COLUMN PROBLEMS IN iNIT MODULE
  1290. - MADE WRITEbamtOdISK A BYTE VARIABLE
  1291. - ADDED pANICwRITEnEWbamtOdISK TO ROUTINES WHICH DELETE CHAINS
  1292. - CLEANED UP 40/80 COLUMN MODE SWITCHING SOME MORE
  1293. - FIXED LOTS OF MISCELLANEOUS THINGS IN MACRO EXPANSION...
  1294. - REWROTE HOW MACRO PARAMETERS ARE PARSED FROM DEFINITION LINE,
  1295. SO THAT CAN DETECT ALL ERROR CASES
  1296. - REWROTE HOW MACRO ARGUMENTS ARE PARSED FROM INVOCATION LINE,
  1297. HOW THEY ARE STORED AND SEARCHED.
  1298. SHOULD HANDLE NULL ARGS, TOO MANY ARGS
  1299. - FIXED HANDLING OF GLOBAL LABELS WITHIN MACROS- NOW SUBSTITUTES
  1300. CORRECTLY, HANDLES 8 CHAR SYMBOLS
  1301. - FIXED BUG IN NESTED MACROS WHICH HAVE GLOBAL LABELS (+1 ERROR)
  1302. - FIXED HOW sEARCHtABLE DETERMINES LENGTHS OF THINGS IT CAN SEARCH FOR
  1303. - RE-WROTE TEST FILE #19 (TESTS MACRO DEF AND EXP ERRORS),
  1304. ADDED A SERIES OF ADDITIONAL TESTS, VERIFIED ALL OUTPUT,
  1305. PLACED ON TEST DISK a.
  1306. - CREATED TEST FILE #75 (TESTS ALL POSSIBLE NON-FATAL ERROR MESSAGES)
  1307. iNCLUDES MOST SCENARIOS WHICH COULD GENERATE THESE ERRORS.
  1308. VERIFIED ALL OUTPUT, PLACED ON TEST DISK b.
  1309. - FIXED "RELOC" FLAG BUG: NOW SETS RELOCATION BITS IN LABELS CORRECTLY
  1310. - REWROTE HOW LOCAL LABELS AND REFERENCES TO THEM ARE PLACED IN TABLES
  1311. (CORRECTED BUG WHICH CLEANED UP AFTER jmp 10$ INCORRECTLY)
  1312. - REWROTE HOW INFORMATION IS COLLECTED ABOUT AN OPERAND WHILE
  1313. IT IS BEING EVALUATED, AND HOW THIS INFORMATION AFFECTS
  1314. THE POSSIBLE ADDRESSING MODES. cORRECTED SEVERAL BUGS
  1315. HAVING TO DO WITH EXPRESSIONS WHICH CONSIST OF SEVERAL
  1316. DIFFERENT TYPES OF ARGUMENTS.
  1317. - EXPRESSION WAS JUDGED AS RELOCATABLE EVEN AFTER MATH
  1318. - BIT FOR EQUATE WAS SET BY NOGLBL/NOEQIN STATUS
  1319. - "*" OPERAND DIDN'T SET RIGHT BIT FOR PSECT/RAMSECT
  1320. - WAS SETTING STATUS:b3 FOR "uNARYtOGETHER" CASES- WHY?
  1321. - IMPROPER HANDLING OF lda # AND .byte OPERANDS
  1322. - NOT GENERATING RELOC POINTERS AND EXREFS IN ALL CASES
  1323. - NOT CATCHING ALL POSSIBLE BRANCH ERRORS (BAD LOCAL LABEL
  1324. USAGE)
  1325. - MADE 2 CENTRAL ROUTINES FOR GRABBING ARGS FOR .if ETC, .block,
  1326. .psect ETC, ETC.
  1327. - CHANGED THE WAY gETeXPRESSION LOOKS AT "MUSTeVAL"
  1328. - REMOVED THE "COMPLEXeXP" FLAG
  1329. - REWROTE ERROR DETECTION IN LOCAL LABEL REFERENCES AND DEFINITIONS
  1330. - NOW CAN FORGET MOST RECENT LOCAL LABEL REFERENCE, FOR CASES
  1331. WHERE LINE IS BAD (DOES NOT STAMP CODE WHICH IS NOT ASSEMBLED)
  1332. - CREATED TESTFILE: FILE76_1 TO TEST ALL EXPRESSION PARSING AND
  1333. ERROR DETECTION; ALSO INCLUDES SOME BRANCHING TESTS
  1334. - FIXED A LOT OF BUGS RELATED TO USING "*" IN EXPRESSIONS
  1335. cORRECTED EXPRESSION EVALUATOR'S TYPE-CHECKING IN GENERAL
  1336. CREATED NEW TEST FILE (FILE7) TO TEST THIS
  1337. - oPENsOURCEfILE IN fILE/FILErOUTINES NO LONGER DOES A fINDfILE
  1338. BEFORE oPENrECORDfILE. sPEED ASSEMBLY A BIT.
  1339. - SPENT A DAY CHASING FILE14 BUG IN 128 MODE. nO LUCK.
  1340.  
  1341.  
  1342. keep an eye out for:
  1343.  
  1344. tHERE MIGHT BE A BUG WITH FILE62 (TOO MANY BACKRAM SYMBOLS)
  1345. TRY ON STAND-ALONE, SEE IF boldface CHARACTERS GET TRASHED
  1346. iF SO, DISABLE dma mOVEdATA, SEE IF IT STILL HAPPENS
  1347.  
  1348. -------------------------------------------------------------------------------
  1349. wARN IN MANUAL:
  1350. iT MAY BE POSSIBLE FOR ASSEMBLER TO HAVE TOO MANY SYMBOLS
  1351. THAN THE LINKER COULD READ IN FROM ONE .rel FILE.
  1352. bUT IF SOME OF THESE ARE .NOEQIN OR .NOGLBL'ED OUT, WE ARE OK.
  1353.  
  1354. wARN IN MANUAL THAT bne sTART+sTART WILL NOT ASSEMBLE CORRECTLY,
  1355. BECAUSE i ASSUME IS SOMETHING OF THE FORM: bne sTART+2, WHICH
  1356. IS LEGAL.
  1357.  
  1358. fILE SELECT db WILL DISPLAY ANY APPLICATION DATA FILE WHICH
  1359. DOES NOT END IN ".REL", ".DBG", ".SYM", ".ERR", ".LNK": THUS
  1360. IS FASTER THAN BEFORE. pROBLEM: WILL DISPLAY GEOfILE AND GEOpAINT ETC.
  1361. DOCUMENTS.
  1362.  
  1363. -------------------------------------------------------------------------------
  1364. future:
  1365.  
  1366. aDD TO TEST LIST
  1367. PAGE TOO BIG (4096)
  1368. ECHO TOO MANY PAGES
  1369. TOO MANY ERROR PAGES
  1370.  
  1371. MINOR BUGS FOUND IN FILE75:
  1372. nOT RECOGNIZING "LINE TOO LONG" CORRECTLY
  1373. cOULD NOT GET IT TO PRINT "EXPRESSION TOO COMPLEX"
  1374. DOES NOT DETECT .RAMSECT AND .INCLUDE IN MACRO DEFINITION
  1375. SEE ERROR #61- i DID NOT FORCE IT CORRECTLY
  1376.  
  1377. SEE FILE3: ASSEMBLER IS NOT FLAGGING ERROR FOR ".WORD "ERIC" "
  1378.  
  1379. c128 MODE: INTERMITTENT BUG WHEN TRYING TO ASSEMBLE FILE14 (BIG BITMAP)
  1380. OFF OF DRIVE a, ONTO ram disk. sOMETIMES GET "DISK NAME MISMATCH" ERROR.
  1381.  
  1382. c128:WHY DID 3208 NOT OVERFLOW SYMBOL TABLE?
  1383. TABLE HOLDS 3208- i SENT 3208 PLUS 3 ALREADY THERE!
  1384.  
  1385. cREATE A FILE78 WHICH IS A COPY OF FILE75, BUT WHICH TESTS .IF pASS1 STUFF.
  1386. i DID THIS ON 10/1/88, AND HIT A WEIRD PHASE ERROR AT gLOBALlABEL:. i DON'T
  1387. THINK THIS IS A BIG PROBLEM.
  1388.  
  1389. sLIGHT PROBLEM IN EXPRESSION EVALUATION: PARSES JMP (LABEL) AS RELOCATABLE
  1390. WITH MATH, SINCE IT HITS THE ENDING PARANTHESES. nEED TO EDUCATE GETeXPRESSION
  1391. A LITTLE MORE SO THIS DOES NOT HAPPEN. tHIS IS NOT A PROBLEM WITH THE (,X) AND
  1392. (),Y ADDRESSING MODES, BECAUSE THEY MUST HAVE RESOLVABLE zp EXPRESSIONS,
  1393. AND SO THEY NEVER GENERATE EXTERNAL REFERENCES.
  1394.  
  1395. -------------------------------------------------------------------------------
  1396. distant future
  1397.  
  1398. mOVE LOCAL LABEL PARSING OUT OF EXPRESSION EVALUATOR:
  1399. RIGHT NOW THE ERROR DETECTION IS VERY CONFUSED BY CASES SUCH AS
  1400. LDA10$+4
  1401. LDA4+10$+6666666666666
  1402. LDA10$+20$+30$;THREE REFERENCES ADDED TO LIST,
  1403. ;ONLY LAST ONE DELETED...
  1404.  
  1405. mINOR PROBLEM:
  1406. a LINE SUCH AS
  1407. .BYTE1,CRAP,2
  1408. WILL STILL GENERATE 3 BYTES OF CODE: WOULD BE NICE TO COMPLETELY
  1409. REVERSE THE EFFECTS (CODE, lc INCS, EXREFS AND RELOCS GENERATED, ETC)
  1410. OF A CODE LINE WHEN AN ERROR IS DETECTED. oTHERWISE THERE IS NO EASY WAY
  1411. TO HANDLE THIS CASE.
  1412.  
  1413. rELATED PROBLEM:
  1414. IN CASES WHERE AN ERROR IS DETECTED IN PASS 2 AND not PASS 1,
  1415. WE HAVE TO MAKE SURE THE SAME AMOUNT OF CODE IS GENERATED IN BOTH
  1416. PASSES, SO THAT NO PHASE ERRORS SHOW UP. "tOO MANY LOCAL LABEL
  1417. REFERENCES" IS A GOOD EXAMPLE OF THIS. sEE BEGINNING OF pARSEiNST
  1418. FOR HOW i HANDLED THIS.
  1419.  
  1420.  
  1421. LINKER DOES NOT WARN ABOUT WORD STAMPED INTO BYTE LOCATION:
  1422. .BYTE eXTERN
  1423. LDA #eXTERN;SEE FILE7
  1424.  
  1425. gEOlINKER things to do:
  1426. - CORRECTED BAD mOVEdATA IN lINKhEADER WHICH WAS TRASHING SYMBOL
  1427. TABLE, CAUSING BAD .sym FILE TO BE CREATED
  1428. (TO AVOID, DO NOT CREATE CUSTOMIZED HEADER BLOCK)
  1429. - CORRECTED BUG IN MODULE SWAPPING, WHICH CAUSED PROBLEMS WHEN
  1430. WRITING .sym FILE TO OTHER DISK
  1431. (TO AVOID, SET OUTPUT DRIVE = APPLICATION DRIVE)
  1432. - NOW RUNS GEOdEBUGGER PROPERLY (HAD BAD PERM NAME)
  1433. - TESTED .CBM LINK WITH MULTIPLE .REL FILES: WORKS OK
  1434. - REMOVED WARNINGS ABOUT mOVEbdATA OVERLAPPING SYMBOL TABLE
  1435. - FIXED: "SYMBOL DEFINED MORE THAN ONCE"- IS PRINTING FILENAME
  1436. INSTEAD OF SYM
  1437. - FIXED: IF SYM ERROR IN HEADER FILE, ERROR MESSAGE FUNNY
  1438. - FIXED: IF SYM TABLE EMPTY, SEARCHES ALL OF MEMORY FOR SYMBOL
  1439. - FIXED: PRINTS CORRECT ERROR WHEN HEADER BLOCK WRONG SIZE
  1440. - FIXED: DOES NOT DELETE OLD FILES WHEN OUTPUT DRIVE NOT INPUT DRIVE
  1441. - FIXED: SEQ, CBM, AND VLIR .obj FILES SHOULD NOW HAVE CORRECT SIZE.
  1442. - RE-INSTALLED RESIDENT CODE MUNGING
  1443. - CLEANED UP SOME 40/80 COLUMN PROBLEMS IN iNIT MODULE
  1444.  
  1445. after beta 1:
  1446. ADD FILES TO TEST LIST
  1447.  
  1448. fUTURE:
  1449. i AM NOT SO SURE THE hEX/DECIMAL/OCTAL ETC PARSERS WORK.
  1450. SAME PROBLEMS IN ASSEMBLER?
  1451. i MAY HAVE SCREWED UP HOW IT EVALUATES EXPRESSIONS IN .mod STATEMENTS
  1452. sEE rESIDENT/GETlINE, AND A VARIABLE "OPERAND" WHICH DETERMINES
  1453. WHERE A WORD BOUNDARY IS.
  1454.  
  1455. done:
  1456. - REORDERED MODULES
  1457. - MADE SURE THAT PROGRAM HAS A TOP-LEVEL IN RESIDENT,
  1458. AND THAT EVERYTHING IS A CALL FROM IT
  1459. - UPDATED HOW SWAP AND DRIVE ROUTINES WORK
  1460. - COMBINED fILE, dRIVE, AND cOMPACT MODULES
  1461. - UPDATED gETfILENAME, WITH CHANGES WE MADE TO GEOaSSEMBLER
  1462. - COPIED NEW tOtEXT AND tObITMAP ROUTINES OVER FROM ASSEMBLER
  1463. - MOVED SOME INIT CODE TO fILE MODULE
  1464. - MOVED ERROR FILE CREATION TO fILE MODULE
  1465. - REMOVED ALOT OF UNUSED CODE IN EXPRESSION EVALUATOR,
  1466. REMOVED BUGS
  1467. - CREATED gETlINEaNDwORD
  1468. - oPENaNOTHERfILE -> oPENrELfILE
  1469. - REWROTE HOW lnk FILE IS PARSED
  1470. MOVED MOST OF IT TO fILE
  1471. REWROTE MID-LEVEL AND TOP-LEVEL PARSING ROUTINES
  1472. DELETED SOME ERROR MESSAGES,
  1473. ADDED SOME
  1474. - UPDATED SCREEN HANDLING
  1475. - REWROTE HOW SYMBOLS ARE RELOCATED
  1476. - REWROTE HOW RELOC POINTERS ARE READ IN AND USED
  1477. - REWROTE HOW EXPRESSIONS ARE READ IN AND USED
  1478. - REWROTE ROUTINE TO SEARCH SYMBOL TABLES- REMOVED LOT OF EXCESS CODE,
  1479. POSSIBLY SOME BUGS. SEARCHES 2-3 TIMES FASTER NOW.
  1480. - SIMPLIFIED HOW SYMBOLS ARE COMPACTED, FIXED, SORTED, AND WRITTEN
  1481. OUT TO DISK
  1482. - PLACED rES AND sWAP TABLES NEXT TO EACH OTHER, COMMENTED OUT ALL
  1483. BIGsEQ CODE
  1484. - rewrote HOW .obj FILE IS CREATED AND WRITTEN TO, INCLUDING
  1485. CUSTOM HEADER BLOCK / cbm FILE CONSIDERATIONS
  1486. - REWROTE HOW HEADER BLOCK .rel FILE IS LINKED TO REST OF APPLICATION-
  1487. HEADER .rel FILE CAN NOW HAVE ITS OWN SYMBOL DEFS, WHICH GO TO SWAP
  1488. TABLE.
  1489. - rewrote HOW LINKER OPENS GEOwRITE OR GEOdEBUGGER (CODE FROM ASSEM)
  1490. - BROUGHT NEW tOtEXT AND tObITMAP CODE OVER FROM GEOaSSEM
  1491. - REWROTE ERROR PRINTING ROUTINES
  1492.  
  1493. - reduced total size of app from 24k TO 20k
  1494. - reduced size of resident by 2589 bytes!
  1495. - DID COMPLETE WALK-THROUGH OF NEW CODE, MAKING SURE THAT DISK
  1496. AND USER ERRORS CAUSED THE RIGHT THING TO HAPPEN
  1497. - FINAL WORK ON FILE CREATION/DELETION STUFF
  1498. - RE-INSTALLED stop KEY CHECKS
  1499. - ADDED cHECKdISKeRROR CALLS THROUGHOUT PROGRAM
  1500. - ADDED CODE TO SET FILENAME POINTER IN CASE ERROR OCCURS
  1501. - ADDED NEW ERROR DIALOG BOX: PRINTS FILENAME, ERROR, ALLOWS cancel
  1502. - ADDED CODE TO DELETE OUTPUT FILES CORRECTLY ON ERROR,
  1503. DISPLAY SECOND db IF SECOND DISK ERROR
  1504. - NUKED ERROR MESSAGE POINTER TABLE TO SAVE BYTES IN RESIDENT
  1505. - rewrote HOW WE CREATE THE .err FILE
  1506. MADE SURE RULER AND VERSION # ARE ok
  1507. - rewrote HOW WE CREATE THE .dbg FILE
  1508. - MODIFIED HOW WE CREATE THE .sym FILE- DOES THIS NEED ANY WORK?
  1509.  
  1510.  
  1511. DON'T FORGET TO TEST INSTALLATION WITH 1571 DRIVE!
  1512.  
  1513. tHINK ABOUT 2 DIFFERENT PHYSICAL DRIVES ON NON-reu SYSTEM: WILL geos
  1514. TELL ME THAT DRIVER DOES NOT EXIST, OR WILL i CRASH?
  1515.  
  1516. bUG: 1571 AS a, 1581 AS b, RUN DEBUGGER ON b, TRY TO SELECT DRIVE a,
  1517. AND SINCE THERE IS NO reu, geos sETdEVICE DOES NOT WORK. dOES IT RETURN
  1518. ERROR CONDITION TO DEBUGGER? OR JUST CRASH...
  1519.  
  1520. bUGS IN tUESDAY (6/21) 12pm VERSION:
  1521. STOP COMMAND IN HIDDEN MODE DOES NOT DO THE RIGHT THING!
  1522. CHANGE NOTES IN GET INFO BOX
  1523.  
  1524. bUGS IN THU (6/16) 4pm VERSION:
  1525. FIXED: setu U.E2  COMMAND DOES NOT CLEAR HIGH BITS!
  1526. FIXED: sym R0l  FINDS R0 ALSO!
  1527. FIXED: GETN COMMAND IS READING DISK INFO FROM BANK 0!
  1528. FIXED: IN RBOOT, QUIT, AND EXIT COMMANDS, PRESSING f8 SCREWS UP LINE
  1529. FIXED: STOP COMMAND DOES NOT CANCEL HIDDEN MODE ANYMORE
  1530. FORGET: @# OPERATOR DOES NOT TAKE IN-LINES INTO ACCOUNT
  1531. INVESTIGATED: WE CANNOT PROTECT ALL OF i/o SPACE
  1532. WARN IN MANUAL: IN bACKrAMsUPER (AND HAVE reu), SHOW geos SCREEN WHEN
  1533. TOP-STEPPING THROUGH mOVEdATA, BECAUSE IT USES dma TO MOVE
  1534. SMALL THINGS. (tHEY COULD DISABLE mOVEdATA IN CONFIGURE TO BE
  1535. SURE. aLSO WARN THAT AN rboot BRINGS BACK OLD mOVEdATA/rboot
  1536. FLAG VALUES.)
  1537.  
  1538. bUGS IN EARLIER VERSIONS:
  1539. FIXED: SETU SS,0 PLACES CURSOR WRONG
  1540. FIXED: PRINT @ SIGN WHERE pc SHOULD GO
  1541. FIXED: NOT DELETING sbp'S CORRECTLY
  1542. FIXED: TRASHES x (AND OPEN MODES) WHEN SETTING sbpS TO ram
  1543. FIXED: DOES NOT LOAD cbmS WITH HEADER CORRECTLY
  1544. FIXED: $03fc-$03ff STILL TREATED DIFFERENTLY
  1545. FIXED: IN 64 MODE, IS NOT TRACKING BANK INFO WITH sbpS CORRECTLY
  1546. FINISH NOW WORKS WITHIN INLINE CALL
  1547. CLEANED UP fETCHiNST USAGE
  1548. N COMMAND WILL NOW SET FINAL lc CORRECTLY IF LAST LINE IS INLINE jsr
  1549. FIXED fINDnEXT: m MODE SHOULD NOW IGNORE INLINE STUFF
  1550. CHECK UP AND DOWN IN BOTH MODES, CHECK REG, FLAG, OPT, ETC
  1551. CORRECTED "w": NOW USES fINDnEXT, SO SHOULD WORK.
  1552. FIXED jsr COMMAND
  1553. TEST: BOOT APP AND TRY jsr $400: SHOULD COME BACK TO
  1554. US BEFORE GOING OFF TO geos MAINLOOP
  1555. FIXED SKIP COMMAND: TAKES BANK INTO ACCOUNT
  1556. FIXED DIFF AND COPY COMMANDS
  1557. FIXED f8 IN MINI DEBUGGER RIGHT-SIDE PROMPT BUG
  1558. FIXED LOAD cbm APP WITH HEADER BUG
  1559. FIXED $3fc-$3ff BUG
  1560. FIXED BANK INFO COMPARISONS
  1561. ADDED i AND r PRINTING TO OPEN COMMAND
  1562. PRINTS ERROR IF TRY TO SET bp IN rom OR io
  1563. FIXED io AREA DECODE BUG ($d022)
  1564. CLEANED UP INIT CODE: ZEROED ALL VARS AT START, SAVED LOTS OF BYTES
  1565. FIXED sTUFFbrkaTlsa BUG WHICH i CREATED YESTERDAY!
  1566.  
  1567. ------------------------------------------------------------------------------
  1568. mAJOR CODE SECTIONS:
  1569.  
  1570. ------------------------------------------------------------------------------
  1571. fOR tEST lIST:
  1572.  
  1573. GOOD TEST FOR c64 VERSION: CHECK TO SEE IF $ff00 AND $d506 ARE CHANGING
  1574. SPECIAL ASSIGNMENTS FOR bETA tESTERS?
  1575. SINGLE STEPPING THROUGH DIFFERENT BANKS
  1576. MEMORY ACCESS TESTS
  1577. SYMBOL TABLE USE
  1578. MACRO DEFINITION USE
  1579.  
  1580. ------------------------------------------------------------------------------
  1581. nEW cONCERNS:
  1582.  
  1583. WHAT IF IN 64 MODE THEY SWAP rom IN AND USE DEBUGGER gETbLOCK?
  1584.  
  1585. ------------------------------------------------------------------------------
  1586. tHINGS tO rESEARCH:
  1587.  
  1588. reset EXECUTES roms, BUT DO THEY CHECK ram?
  1589. bANK 0 pAGE 3 ISSUES:
  1590. i FILL FIRST WITH $00 AND THEN WITH $ED, AND DESKtOP AND ICON EDITOR
  1591. HAD NO PROBLEMS RUNNING.
  1592. CANNOT LOAD OTHER DESK ACCESSORIES?
  1593. EASY WAY TO LOAD DRIVERS?
  1594. ???CONVERT TABS FOUND IN MACRO DEFS
  1595. ???dir SAVE pc?
  1596. iNITfORio TRASHES $314 AREA VECTORS- yes: $314 AND $318 (irq AND nmi)
  1597.  
  1598. ------------------------------------------------------------------------------
  1599. nOT CONCERNED WITH:
  1600.  
  1601. DEBUGGER ASSUMES ALL GEOwRITE VERSIONS ABOVE 1.1 ARE THE SAME.
  1602. 64 MODE ON c128: CAN SET FOR 2mhz?
  1603.  
  1604. restore KEY BOUNCES! gENERATES TWO nmi SIGNALS, SPACED ABOUT 200 USEC APART
  1605.  
  1606. ------------------------------------------------------------------------------
  1607. lOW pRIORITY:
  1608.  
  1609. uSER COMPLAINT: HIS PROGRAM RAN UNDER dgb, CRASHED UNDER geos. hE HAD FORGOTTEN
  1610. TO PUT A DUMMY ICON UP. pOSSIBLY RELATED TO DEBUGGER CLEARING MEMORY.
  1611.  
  1612. sHOULD NOT ALLOW USER TO LOAD APPLICATION WHICH TRASHES mINIdEBUGGER IN MEMORY
  1613. OR WHICH WOULD TRASH geos
  1614.  
  1615. ADD OPTION TO DISABLE geos dISK USAGE? (SO THEY WON'T DO THE WRONG THING
  1616. WHEN DEBUGGING GAMES)
  1617.  
  1618. ADD DETECTION FOR TRASHED geos? (WOULD FORCE RBOOT ON EXIT)
  1619.  
  1620. READ OPTION PRESETS FROM VALUE OF options CONSTANT IN SYMBOL TABLE
  1621.  
  1622. AFTER USER HAS TRASHED MEMORY, SHOULD BOOT geos FROM DISK...
  1623.  
  1624. OPTION TO ALLOW THEM TO USE brk AS AN INSTRUCTION (GET TO THEIR VECTOR)
  1625.  
  1626. ------------------------------------------------------------------------------
  1627. fOR mANUAL:
  1628. MINOR: HOLDING MOUSE BUTTON LOOKS LIKE RUN/STOP DURING BOOT
  1629. THEIR irq SERVICE ROUTINE MUST FINISH WITH AN rti
  1630. BECAUSE OF THE WAY THINGS ARE PUSHED...
  1631. dEBUGGER WILL NOT LOAD THEIR gAME OVER geos: gAME MUST CALL geos
  1632. ROUTINES TO GET THE REST OF IT IN (THIS IS WHAT DESKtOP
  1633. WOULD REQUIRE ANYWAY.)
  1634. PLACES brk AT rSTRaPPL IF IS RUNNING DESK ACCESSORY
  1635. MENTION "pRESS restore SHARPLY" IN MANUAL
  1636. $d506 AND $ff00 SHADOWED
  1637. R.MM NUKED COMPLETELY. r COMMAND NO LONGER SHOWS mEMmAP
  1638. SCREEN FLICKER DURING STEP IS DUE TO POOR geos 128 INTERRUPT CODE
  1639. HOLDING KEY DOWN WHEN DEBUGGER STARTS WILL FORCE ERROR ON FIRST LINE
  1640. USER MAY WANT TO CHANGE R COMMAND: CREAT MACRO WHICH DOES r AND bank.
  1641. USER CAN CHANGE pc MEM MAP DIRECTLY BY ACCESSING FF00 AND D506
  1642. IF USER'S CODE UPDATES SCREEN REGISTERS, BUT DEBUGGER SCREEN IS
  1643. VISIBLE, THEN WHEN DEBUGGER KICKS IN IT WILL ASSERT ITS
  1644. VALUES, LOSING THE USER'S NEW VALUES. wARN THEM TO ENABLE
  1645. TARGET SCREEN BEFORE EXECUTING SUCH CODE.
  1646. SEE sPECS/USERnOTES FOR MORE...
  1647.  
  1648. ------------------------------------------------------------------------------
  1649. aSSUMPTIONS:
  1650.  
  1651. geos 128 HAS SAME $FFFA VECTORS IN b1 AND b0. i ASSUME THIS TO BE TRUE
  1652. FOR ALL FUTURE VERSIONS.
  1653.  
  1654. ------------------------------------------------------------------------------
  1655. sAVE bYTES:
  1656.  
  1657. MINI DEBUGGER DOES NOT HAVE TO BE AS CAREFUL ABOUT SCREEN STUFF
  1658.  
  1659. IN RESIDENT:
  1660. COMPACT THAT DAM dRIVE ICON!
  1661.  
  1662. ------------------------------------------------------------------------------
  1663. fUTURE:
  1664. DO NOT EXECUTE ILLEGAL INSTRUCTIONS
  1665. COULD CUSTOMIZE DEBUGGER ACCORDING TO 64/128 MODE
  1666. reu AS TRACE BUFFER?
  1667. DON'T ALLOW TWO MACROS OF SAME NAME IN MACRO FILE
  1668. WRITE OUT MACRO FILE
  1669. ADD MODULES TO DEBUGGER FOR MORE FEATURES
  1670. SENSE USER'S MODULE SWAP AND CORRECT sbpS?
  1671. COULD SAVE b1/b0 INFO IN SYMBOL TABLE TO FURTHER REDUCE CONFLICTS
  1672. MEMORY RANGE COMMANDS COULD EASILY MOVE DATA FROM BANK TO BANK
  1673. COMMANDS LIKE w WILL NOT WORK IF PRINTING IS OFF, BECAUSE
  1674. dISPLAYlOCATION IS NEVER CALLED, BYTES NEVER READ, POINTERS
  1675. NEVER MOVED. tHIS COULD BE CLEANED UP.
  1676. CLRB IS NOW CRIPPLED BECAUSE IT RELIGIOUSLY CHECKS FOR EXACT BANK 
  1677. INFO WHEN SEARCHING THE sbp LIST. cOULD REMOVE THIS
  1678. RESTRICTION TO MAKE THE CLRB COMMAND EASIER, BUT THEN
  1679. TRYING TO REMOVE A DOUBLE-sbp (BANK1 AND 0, SAME ADDR)
  1680. USING AN OPEN MODE WOULD BE IMPOSSIBLE.
  1681. aCTUALLY, THERE IS A DEEPER PROBLEM WITH THE WAY WE STORE BANK INFO
  1682. WITH sbpS IN THEIR TABLE: WE SHOULD JUST STORE THE EFFECTIVE
  1683. BANK DIFFERENCE, NOT THE 16 BITS OF INFO. iF THE SETB COMMAND
  1684. IS CHECKING FOR EXACT MATCHES WHEN IT INSERTS A NEW sbp,
  1685. THEN YOU COULD HAVE SEVERAL "EQUAL" sbpS IN THE SAME TABLE.
  1686.  
  1687. ------------------------------------------------------------------------------
  1688. fINISHED:
  1689. 40/80 COLUMN TEXT BITS AND CENTERING STUFF, MOVED TO ONE FILE,
  1690. STANDARDIZED db TEXT POSITIONS (WILL HELP APPLE PORT)
  1691. MACRO LOAD BUGS, EXTENSIVE ERROR CHECKING, PAGE/LINE # BUGS
  1692. SYMBOL LOAD BUG
  1693. INFO BOX CODE: DISPLAYS STATUS MESSAGES AS FILES LOAD
  1694. stop KEY BUG
  1695. BUGS IN LOADsAVEbYTE
  1696. ERROR CHECKING DURING SYMBOL TABLE LOADS
  1697. LOADS DEFAULT.DBM EVEN IF NO FILENAME GIVEN
  1698. NEED rESpREPfORqUIT
  1699. EXTENSIVE ERROR CHECKING DURING MODULE SWAPS, DEBUGGER LOADS,
  1700. AND FILENAME SELECTION (INCLUDING PRINTING CURRENT FILENAME
  1701. DURING ERROR)
  1702. ADDED MEMORY r/w CHECKS FOR $ff01-$ff04
  1703. PAGE # IN MACRO FILE LOADS
  1704. FIXED 80 COLUMN SCROLL BUG
  1705. rESpREPfORqUIT RESTORES USER'S SCREEN, NOT BE SAME AS geos SCREEN
  1706. CLEAR PENDING INTERRUPT BEFORE STEPPING
  1707. TEST NEW lcra-lcrd STUFF
  1708. INVERTS ADDRESSES IF DISPLAYING BANK #0 ADDRESS
  1709. gETbLOCK, pUTbLOCK: CALL BANK 1 ROUTINE, DISPLAY BANK 1 DATA
  1710. jsr DOES WORK IN EITHER BANK (BECAUSE IS LIKE A TOP-STEP)
  1711. reu CHECK UNDER geos v1.2
  1712. TEST RBOOT IN ALL 5 CONFIGS
  1713. c64 MODE!
  1714. BANKiNFO1/2 VARIABLE: CARRIES INFO IN 64 AND 128 MODES
  1715. CALL gET1STdIReNTRY, USE R5, CALL GETnXTdIReNTRY
  1716. - NEED TWO NEW PRIMITIVES
  1717. - CHANGE DIR MACRO
  1718. TRACKED DOWN SCREEN FLICKER BUG (IS geos 128 INTERRUPT CODE!)
  1719. - IMPLEMENTED NEW 3-LEVEL nmi ENABLE/DISABLE CODE
  1720. - FOUND BUG IN 128 geos iNITfORio
  1721. - ADDED cia2 nmi HANDLING
  1722. - WROTE DOCUMENTATION ON STRAY INTERRUPT TRAPPING
  1723. - WROTE ROUTINES SO USER'S APPLICATIONS CAN SET INTERRUPT SERVICE
  1724. ROUTINE VECTORS CORRECTLY WHEN RUNNING UNDER gEOdEBUGGER
  1725. - DOCUMENTED VECTORS IN gEOdEBUGGER WEDGE CODE WHICH ARE USEFUL
  1726. - FIXED "LDA a000" PARSE BUG
  1727. - FIXED SYM SEARCH BUG
  1728. - FIXED BUG IN STOPMAIN
  1729. - FIXED DISASSEMBLY BUG: NOW DISPLAYS CODE WHEN CANNOT FIND LABEL
  1730. MACRO ERROR BUG
  1731. STOP KEY BUG
  1732. CIA1 DDR ASSERTION
  1733. RTI BUG
  1734. CENTERING
  1735. lDfILE USAGE BUG
  1736. FILE INIT ADDRESS BUG
  1737. EXIT AFTER DISK ERROR CORRECTED
  1738. SELECT FILE db ICONS, SCROLLING BUG
  1739. FILE db SELECTION AREA
  1740. SETU / PR U.E1 BUG
  1741. DIR / GETBLOCK FROM ram disk BUG
  1742. FLAGS ON BOOT BUG
  1743. rboot MORE INTELLIGENT
  1744. IGNORES stop KEY IN LEFT-SIDE MODE
  1745. REWROTE SOME PRINTING ROUTINES
  1746. ADDED NEW hide FEATURE
  1747. CORRECTED 128 MODE KEYBOARD SCAN PROBLEM
  1748. ADDED KERNAL CHECKING TO gET1STdIReNTRY/gETnXTdIReNTRY
  1749. AND MADE SOME CORRECTIONS
  1750. DISPLAY COPYRIGHT MESSAGES
  1751. DISPLAY DISK NAME WHEN SELECTING FILE
  1752. TOP-STEP THROUGH INLINE CALLS
  1753. DISASM UP AND DOWN THROUGH INLINE CALLS
  1754. PAGE 3 CODE ASSERTS VALUE OF $0000 TO $2f
  1755. DUMPD COMMAND SETS lc TO b1$8100
  1756. CORRECTED gETbLOCK/pUTbLOCK
  1757. CORRECTED DISK AND DRIVEA/B COMMANDS
  1758. CORRECTED pRINTdISKnAME COMMAND
  1759. REWROTE WAY THAT THE 3 MONITORS READ/WRITE/SWAP MISC. geos VECTORS
  1760. AND VARIABLES
  1761. JUST FIXED 64 MODE BUG, MADE TABLE SHORTER USING {SHIFT--} OPERATOR
  1762. BACKRAM SUPER SHOULD DISABLE da LOADS
  1763.  
  1764. ------------------------------------------------------------------------------
  1765.  
  1766.  
  1767. files in this directory
  1768. /STAFF/JIM/GEOS/products/GEOpROG/GEOdEBUG/sPECS
  1769.  
  1770. uSEFUL:
  1771.  
  1772. iNITfORiobUG:DETAILED INFO ON c128 iNITfORio BUG
  1773. reunOTES:FULL DOC ON geos reu USAGE AND HOW WE USE IT
  1774. reuBUGS:HOW TO WARN USER THAT dma USES vic BANK INFO
  1775. APPtYPES:INFO ON HOW DESKtOP AND DEBUGGER LOAD APPLICATIONS
  1776. MEMpROTECT:DETAILED SPEC OF HOW DEBUGGER'S LOADsAVEbYTE ROUTINE WORKS
  1777. CBMaPPS:INFO ON HOW TO USE PRODUCT TO DEVELOP cbm APPLICATIONS
  1778. HIDEmODE:ALL ABOUT THE NEW HIDE DEBUGGER SCREEN FEATURE
  1779. INTERRUPTS:NOTES TO USER ABOUT INTERRUPTS
  1780. NMI:NOTES ON nmi INTERRUPTS, restore BOUNCE, ETC
  1781. RBOOTwARN:WARNING ABOUT RBOOT COMMAND, KNOWN PROBLEMS
  1782. VIEWcOMMAND:HOW NEW VIEW COMMANDS WORK
  1783. ENVIRONMENT:VIEW COMMANDS- DECISIONS MADE
  1784. WISHlIST:IDEAS...
  1785.  
  1786. nOT USEFUL:
  1787.  
  1788. 128IDEAS:GENERAL IDEAS ON
  1789. INSTALLING USER'S isr
  1790. TRAPPING STRAY INTERRUPTS
  1791. 40/80 COLUMN SCREEN USAGE
  1792. ON 128 MEMORY MAP REGISTERS, CLOCK SPEED, KEYBOARD
  1793. iNITiNTsVC2.OLD: OLD isr INSTALL INFO
  1794. mini:THINGS NUKED IN mini DEBUGGER TO SAVE SPACE
  1795. specs:OUTLINE FOR PRODUCT SPECIFICATION
  1796. ASSEMiNbASIC:HOW TO USE GEOlINKER TO CREATE basic APPS
  1797. BOOT:OLD OUTLINE OF DEBUGGER BOOT SEQUENCE
  1798. DESIGNdECISIONS: DECISIONS MADE ALONG THE WAY
  1799. PROBLEMS:UNRESOLVED PROBLEMS IN THE DESIGN
  1800. CONTEXTsWITCH:INFO ON HOW c64 / c128 INTERRUPTS WORK, AND HOW DEBUGGER'S
  1801. CONTEXT SWITCH WORKS WITH THEM
  1802. WARNINGS:PROBLEMS IN THE DESIGN FOR WHICH NO SOLUTION EXISTS
  1803. SCREENdECISIONS: DECISIONS MADE IN DESIGN OF v2 SCREEN ROUTINES
  1804.  
  1805.  
  1806. c128 iNITfORio BUG?
  1807.  
  1808. oN BOTH THE 64 AND 128, THE cia2 CHIP HAS THE CAPABILITY OF GENERATING
  1809. AN nmi SIGNAL. tO PREVENT THIS FROM OCCURING DURING DISK-ACCESS ROUTINES,
  1810. THE geos iNITfORio ROUTINE FORCES THE cia2 TO GENERATE ONE INTERRUPT BY SETTING
  1811. THE cia TIMER VALUE TO A LOW NUMBER LIKE 1. iNITfORio KNOWS THAT IT WILL GET
  1812. CONTROL WHEN THIS FORCED-nmi OCCURS BECAUSE IT SWAPS THE KERNAL rom INTO THE
  1813. HIGH-MEMORY AREA AND SETS THE KERNAL'S PAGE 3 nmi VECTOR (NMIVEC, $0318)
  1814. TO POINT TO A DUMMY nmi ROUTINE.
  1815. - ON THE c64, THIS WORKS FINE, EXCEPT FOR THE FACT THAT iNITfORio
  1816. IS TRASHING ANY nmi VECTOR THAT THE APPLICATION WRITES TO $0318.
  1817.  
  1818. - ON THE c128, iNITfORio DOES NOT SWAP rom IN CORRECTLY (IT IS CHANGING
  1819. LOCATION $0001). sO WHEN IT FORCES THIS nmi TO OCCUR, THE 6510 USES
  1820. THE VECTOR AT b1$fffa OR b0$fffa, WHICH NORMALLY POINT TO THE geos
  1821. nmi HANDLER ROUTINE, WHICH SIMPLY DOES AN rti. iF AN APPLICATION CHANGES
  1822. THE geos nmi VECTORS AT b0$fffa AND b1$fffa, THEN THE USER'S HANDLER
  1823. ROUTINE WILL GET CALLED EVERY TIME iNITfORio IS CALLED. tHE USER'S
  1824. HANDLER ROUTINE SHOULD POLL THE cia CHIP AND RETURN IMMEDIATELY IF
  1825. THE nmi WAS GENERATED BY THE cia. iF THE USER IS EXPECTING nmiS FROM
  1826. THE cia CHIP, THEN THIS "POLLING" PROCESS MUST ALSO INCLUDE AN
  1827. EXAMINATION OF THE STACK TO SEE IF iNITfORio IS IN PROGRESS...
  1828.  
  1829. cONCLUSION:
  1830. dUE TO THE FACT THAT iNITfORio MAKES SOME ASSUMPTIONS ON THE c128,
  1831. USERS WHO WRITE THEIR OWN nmi HANDLER ROUTINE WILL HAVE TROUBLE.
  1832.  
  1833. pOSSIBLE FIXES:
  1834. c64 AND c128 iNITfORio SHOULD BOTH BRING rom IN, AND SHOULD BOTH SAVE THE
  1835. nmi VECTOR AT $0318 (BANK 0 ON THE 128), AND RESTORE IT LATER. tHIS WOULD
  1836. MAKE iNITfORio WORK ALL THE TIME (REGARDLESS OF WHAT THE USER HAS DONE TO
  1837. THE VECTORS) AND IT WOULD NOT AFFECT THE APPLICATION'S VECTORS.
  1838.  
  1839.  
  1840. 1764/1700/1750 rAM eXPANSION uNITS
  1841. ----------------------------------
  1842.  
  1843. 1764:128k2 64k BANKS, INTENDED FOR c64
  1844. CAN BE EXPANDED TO 512k
  1845. 1ST 64k BANK: geos SYSTEM STUFF. 2ND BANK UNUSED.
  1846.  
  1847. 1700:256k4 64k BANKS, INTENDED FOR c128
  1848. CAN BE EXPANDED TO 512k
  1849. 1ST 64k BANK: geos SYSTEM STUFF.
  1850. 2ND - 4TH BANKS: 1541 ram disk OR 1541 DISK SHADOW.
  1851.  
  1852. 1750:512k8 64k BANKS, INTENDED FOR c128
  1853. CAN BE MADE TO WORK ON c64
  1854. 1ST 64k BANK: geos SYSTEM STUFF. 2ND BANK UNUSED.
  1855. 2ND - 8TH BANKS: 1541/1571 ram disk OR 1541/1571 DISK SHADOW.
  1856.  
  1857. reu bANK #0: (1ST BANK)
  1858.  
  1859. bANK #0 IS RESERVED FOR geos KERNAL USE. geos WILL, HOWEVER, HONOR SOME
  1860. ENABLE BITS IN SYSramfLG AND ITS' SHADOW VARIABLE SYSfLGcOPY. bY CLEARING
  1861. SOME OF THESE BITS, YOU CAN PREVENT geos FROM USING CERTAIN AREAS, AND THEN
  1862. YOUR APPLICATION CAN USE sTASHram, fETCHram, ETC TO STUFF DATA UP THERE.
  1863.  
  1864. c128 
  1865. 64 geos128 geoscONTROL BIT
  1866. -----------------------------------------------------------
  1867. $0000 - $38ffmOVEdATA SWAP AREAmOVEdATA SWAP AREA1xxxxxxx
  1868. $3900 - $78ffmOVEdATA SWAP AREAgeos KERNAL FOR rbOOTNOTE 1
  1869. $7900 - $7dfftObASIC CODEtObASIC CODExx1xxxxx
  1870. $7e00 - $82ffgeos KERNAL FOR rbOOTgeos KERNAL FOR rbOOTxx1xxxxx
  1871. $8300 - $b8ffdEVICE DRIVERS a, b, cdEVICE DRIVERS a,b,cx1xxxxxx
  1872. $b900 - $fc3fgeos KERNAL FOR rbOOTgeos KERNAL FOR rbOOTxx1xxxxx
  1873. $fc40 - $ffff?????????
  1874.  
  1875. nOTE 1: DIFFERENT FOR 64/128.
  1876.  
  1877.  
  1878. reu bANKS 1 THROUGH 7:
  1879.  
  1880. uSED BY DEVICE DRIVERS FOR ram disk AND SHADOWING. 
  1881. iT IS A REAL BAD IDEA TO TOUCH THESE BANKS.
  1882.  
  1883.  
  1884. ------------------------
  1885. reu dma notes:
  1886. DISABLE SHARING WHEN USING reu dma
  1887. RELOCATION HIGH BYTE: ONLY b0 R/W CAPABLE, MUST WRITE TO LOW BYTE BEFORE
  1888. CAN READ INFO BACK FROM HIGH BYTE (INDICATING RELOCATION IS ACTIVE)
  1889. mIGHT BE ABLE TO USE THIS TO DECIDE WHETHER OR NOT nmi OCCURRED WHILE
  1890. SOMEONE WAS STUFFING VALUES IN THESE REGISTERS.
  1891. ------------------------
  1892.  
  1893. mATT: i GUESS IT IS REALLY ONLY 1 BUG, AND IT IS NOT A BUG IF THE USER
  1894. IS USING THE STANDARD geos SCREEN FOR DISPLAY, AND IS NOT TRYING TO
  1895. dma DATA TO BACKRAM (BANK 0).
  1896.  
  1897. tHERE ARE A NUMBER OF CONCERNS WHEN USING THE reu'S dma CHIP ON A c128:
  1898. 1) THE CLOCK MUST BE SLOW (1mhz, NOT 2mhz)
  1899. 128 geos HANDLES THIS CORRECTLY.
  1900.  
  1901. 2) THE io SPACE MUST BE IN, SO YOU CAN ACCESS THE dma CHIP
  1902. (BIT 0 OF $FF00 "CONFIG" MUST BE A 0)
  1903. UNDER 128 geos, THE io SPACE IS ALWAYS IN.
  1904.  
  1905. 3) WHEN THE dma CHIP FORMS AN ADDRESS FOR WHERE IN THE c128'S 128k TO
  1906. READ AND WRITE, IT IGNORES THE STANDARD BANK 0 / BANK 1 SELECTION
  1907. CONTROLS AND THE "BANK SHARING" CONTROLS. tHESE CONTROLS i AM TALKING
  1908. ABOUT ARE BITS 7 AND 6 OF $ff00 (CONFIG) AND BITS 5 THROUGH 0 OF
  1909. $d506 (rcr) IN THE io SPACE.
  1910.  
  1911. tHE dma CHIP KNOWS WHICH OF THE TWO 64k BANKS TO USE BECAUSE IT USES
  1912. THE SAME BANK 0 / BANK 1 CONTROL LINE THAT THE vic CHIP USES. tHIS CAN
  1913. BE USEFUL: NO MATTER WHAT BANK SETUP YOU HAVE FOR THE 8510 PROCESSOR
  1914. CHIP, YOU CAN HAVE THE dma CHIP READ/WRITE TO ANYWHERE IN EITHER
  1915. BANK. nOW DEPENDING ON WHICH BANK THE vic CHIP IS LOOKING AT AND WHICH
  1916. BANK YOU WANT TO r/w TO, YOU MAY HAVE TO CHANGE THE vic CHIP BANK
  1917. # SETTING TEMPORARILY (WILL CAUSE SCREEN TO FLASH).
  1918.  
  1919. cODE TO DO THIS: (ASSUMES R0-R3l HAVE ALREADY BEEN SET UP FOR sTASHram)
  1920. ;FIRST, i ASSUME io SPACE IS IN, BECAUSE UNDER
  1921. ;128 geos, $ff00 = $7e, MEANING io IS IN.
  1922.  
  1923. LDAMMU+6;GET "rAMcONTROLrEGISTER"
  1924. PHA;SAVE CURRENT BANK SHARING
  1925. ;STATUS AND vic BANK # INFO
  1926. ;ON STACK
  1927.  
  1928. AND#%00111111;KEEP b5-b0 INTACT
  1929. ORA#bank << 6;SET bIT 6 ACCORDING TO BANK WE
  1930. ;WANT vic AND dma CHIPS TO SEE
  1931. STAMMU+6;SAVE NEW vic BANK # INFO
  1932.  
  1933. JSRsTASHram/fETCHram ETC...
  1934. ;CALL geos TO TURN ON dma CHIP
  1935.  
  1936. PLA;RESTORE vic BANK #
  1937. STAMMU+6
  1938.  
  1939.  
  1940.  
  1941. cOMMODORE 64/128 geos fILE TYPES,
  1942. AND IF THE DESKtOP AND/OR GEOdEBUGGER CAN LOAD THEM.
  1943.  
  1944.  
  1945.  
  1946. cbmgeosoPEN FROM
  1947. TYPEFILE TYPEDESKtOP   dESCRIPTION
  1948. -----------------------------------------------------------------
  1949. delANYTHINGNOdELETED FILE
  1950.  
  1951. seqnot_geosNOcOMMODORE SEQUENTIAL DATAFILE, PROBABLY
  1952. GENERATED BY basic PROGRAM.
  1953.  
  1954. seqdataNOsAME AS ABOVE, WITH HEADER ADDED BY iCON eDITOR.
  1955. --------------------------------------------------------------------------
  1956. prgnot_geosYES *1cOMMODORE basic OR ASSEMBLY PROGRAM.
  1957.  
  1958. iF THE FILE IS A basic PROGRAM, THEN IT WAS
  1959. PROBABLY CREATED USING c64 OR c128 basic'S
  1960. "save" COMMAND. tHE DESKtOP CAN ALWAYS LOAD SUCH
  1961. A PROGRAM, AND IN SOME CASES CAN tURBO-LOAD IT.
  1962.  
  1963. iF THE FILE IS AN ASSEMBLY-LANGUAGE PROGRAM,
  1964. THEN IT WAS PROBABLY CREATED USING AN ASSEMBLER
  1965. UTILITY, OR USING c128 basic'S "bsave" COMMAND.
  1966.  
  1967. prgbasicYES *2cOMMODORE basic PROGRAM, WITH HEADER BLOCK
  1968. ATTACHED BY iCON eDITOR. iF PROGRAM IS LESS THAN
  1969. 31k IN SIZE, THE DESKtOP WILL HAVE geos
  1970. tURBO-LOAD IT.
  1971.  
  1972. prgassemblyYES *3cOMMODORE ASSEMBLY PROGRAM, WITH HEADER BLOCK
  1973. ATTACHED BY iCON eDITOR. iF PROGRAM LOADS TO
  1974. APPLICATION SPACE ($400-$7fff), THEN THE DESKtOP
  1975. WILL HAVE geos tURBO-LOAD IT.
  1976. --------------------------------------------------------------------------
  1977. usrnot_geosNOoLD cOMMODORE "USER" FILE.
  1978. usrbasicNOillegal combination
  1979. usrassemblyNOillegal combination
  1980. usrdataNOillegal combination
  1981. usrsystemNOgeos SYSTEM FILE (seq OR vlir STRUCTURE)
  1982. usrdesk_accYESgeos DESK ACCESSORY (seq STRUCTURE)
  1983. usrapplicationYESgeos APPLICATION FILE (seq OR vlir)
  1984. usrappl_dataYESDATA FILE FOR A geos APP. (seq OR vlir)
  1985. usrfontNOgeos FONT FILE (vlir)
  1986. usrprinterNOgeos PRINTER DRIVER (seq)
  1987. usrinput_deviceNOgeos INPUT DEVICE (MOUSE, KOALA, ETC. seq)
  1988. usrdisk_deviceNOgeos DISK DEVICE DRIVER
  1989. usrsystem_bootNOgeos SYSTEM BOOT FILE
  1990. (FOR geos, geos boot, geos kernal)
  1991. usrtemporaryNOtEMPORARY FILE TYPE, FOR SWAP FILES.
  1992. usrauto_execYESaPP (seq OR vlir) WHICH LOADS AND RUNS UPON BOOT
  1993. usrinput_128NOgeos 128 iNPUT DRIVER
  1994. --------------------------------------------------------------------------
  1995. relnot_geosNOcOMMODORE RANDOM-ACCESS DATAFILE, AS IF
  1996. GENERATED BY basic PROGRAM. cANNOT BY GIVEN
  1997. AN ICON BY iCON eDITOR BECAUSE WOULD DESTORY
  1998. EXISTING POINTER TO DATA CHAIN.
  1999. --------------------------------------------------------------------------
  2000.  
  2001.  
  2002.  
  2003. nOTES:
  2004. *1: (prg, not_geos)
  2005.  
  2006. wHEN YOU TRY TO OPEN THIS TYPE OF PROGRAM FROM THE DESKtOP, THE DESKtOP'S
  2007. "dObASIClOAD" ROUTINE WILL LOAD THE PROGRAM'S FIRST DATA BLOCK, TO CHECK ITS
  2008. LOAD ADDRESS.
  2009. ADDR < $0400
  2010. iS A "STACK-GRABBING" ASSEMBLY LANGUAGE PROGRAM. geos CANNOT
  2011. tURBO-LOAD THIS, SO WE FORCE basic TO EXECUTE: load "NAME",8,1.
  2012. ADDR = $0801($1c01 ON 128)
  2013. iS A basic PROGRAM. tHE DESKtOP WILL CHECK THE FILE SIZE
  2014. INFORMATION IN THE DIRECTORY ENTRY TO SEE IF THE PROGRAM
  2015. CAN BE tURBO-LOADED. iF THE basic PROGRAM IS <= 30480 BYTES,
  2016. THE DESKtOP WILL HAVE geos tURBO-LOAD IT, AND THEN FORCE basic
  2017. TO EXECUTE THE run COMMAND. iF THE basic PROGRAM IS LARGER THAN
  2018. THIS, THE DESKtOP WILL NOT LOAD IT.
  2019. ADDR = OTHER
  2020. tHE c64 DESKtOP WILL NOT ALLOW YOU TO LOAD THIS APPLICATION.
  2021. tHIS IS SO THE DESKtOP WILL NOT ATTEMPT TO RUN A c128 basic
  2022. PROGRAM UNDER c64 basic.
  2023. tHE c128 DESKtOP WILL USE THE basic "boot" COMMAND TO LOAD
  2024. THIS FILE.
  2025.  
  2026. iF YOU ATTEMPT TO OPEN SUCH A PROGRAM FROM gEOdEBUGGER, IT MUST HAVE A LOAD
  2027. ADDRESS OF $0400 OR HIGHER. gEOdEBUGGER WILL NOT CHECK THE LOAD ADDRESS TO SEE
  2028. IF THE PROGRAM IS basic CODE, SO YOU CAN USE GEOdEBUGGER TO EXAMINE THE
  2029. INTERNAL STRUCTURE OF c64 AND c128 basic PROGRAMS.
  2030.  
  2031. *2: (prg, basic)
  2032.  
  2033. tHE DESKtOP WILL ATTEMPT TO LOAD SUCH A FILE IN THE SAME MANNER AS THE
  2034. "ADDR = $0801" CASE ABOVE. aS NOTED ABOVE, THE DEBUGGER CAN ALSO LOAD
  2035. SUCH A PROGRAM FILE.
  2036.  
  2037. *3: (prg, assembly)
  2038.  
  2039. wHEN YOU TRY TO OPEN THIS TYPE OF FILE FROM THE DESKtOP, THE DESKtOP'S
  2040. "dOaSSEMBLYlOAD" ROUTINE WILL LOAD THE FILE'S FIRST DATA BLOCK, TO CHECK ITS
  2041. LOAD ADDRESS.
  2042. ADDR < $0400
  2043. iS A "STACK-GRABBING" ASSEMBLY LANGUAGE PROGRAM. geos CANNOT
  2044. tURBO-LOAD THIS, SO THE DESKtOP FORCES basic TO EXECUTE:
  2045. load "NAME",8,1.
  2046. $0400 <= ADDR < $0800
  2047. tHE c64 DESKtOP WILL NOT ALLOW YOU TO LOAD THIS PROGRAM,
  2048. BUT THE c128 DESKtOP WILL.
  2049. ADDR >= $0800
  2050. tHE DESKtOP WILL LOAD THE PROGRAM'S HEADER BLOCK, TO CHECK
  2051. ITS ENDING ADDRESS. iF THE PROGRAM ENDS BELOW $8000, THE
  2052. DESKtOP WILL HAVE geos tURBO-LOAD THE PROGRAM. basic WILL
  2053. THEN EXECUTE A sys TO THE PROGRAM'S INIT ADDRESS FROM THE
  2054. HEADER BLOCK. iF THE PROGRAM ENDS AT OR ABOVE $8000, THE
  2055. DESKtOP WILL FORCE basic TO EXECUTE:
  2056. load "NAME",8,1:sys (INIT ADDRESS)
  2057.  
  2058. iF YOU ATTEMPT TO OPEN SUCH A PROGRAM FROM gEOdEBUGGER, IT MUST HAVE A LOAD
  2059. ADDRESS OF $0400 OR HIGHER. gEOdEBUGGER WILL SET THE pc TO THE VALUE OF THE
  2060. INIT ADDRESS WHICH IS STORED IN THE HEADER BLOCK. gEOdEBUGGER WILL NOT CHECK
  2061. THE ENDING ADDRESS OF THE PROGRAM.
  2062.  
  2063.  
  2064. gEOdEBUGGER mEMORY rEAD/wRITE rOUTINE
  2065. -------------------------------------
  2066.  
  2067. wHENEVER THE DEBUGGER IS ASKED TO READ OR WRITE A BYTE TO MEMORY, IT WORKS
  2068. THROUGH THE lOADbYTE/sAVEbYTE ROUTINE IN mONITOR/C64IO. eXAMPLES INCLUDE:
  2069. - EXAMINING AND MODIFYING MEMORY USING "a" OR "m" OPEN COMMANDS
  2070. - SETTING AND CLEARING INSTRUCTION BREAKPOINTS
  2071. - MEMORY RANGE COMMANDS: MOVE, FILL, DIFF, FIND
  2072.  
  2073. tHESE TWO ROUTINES ARE BOTH VERY SHORT: THEY SIMPLY SET A FLAG INDICATING
  2074. WHETHER WE ARE READING OR WRITING, AND THEN CALL lOADsAVEbYTE.
  2075.  
  2076. lOADsAVEbYTE GOES THROUGH A FOUR STEP PROCESS TO DETERMINE WHAT TO DO WITH THE
  2077. MEMORY ACCESS REQUEST. tHIS IS A COMPLICATED PROCESS BECAUSE THERE ARE MANY
  2078. CASES WHERE A DIRECT LOAD/SAVE IS OUT OF THE QUESTION:
  2079. - THE USER IS TRYING TO MODIFY A BYTE IN ZERO PAGE, BUT THE MONITOR
  2080. KEEPS THE USER'S ZERO PAGE IN THE MONITOR VARIABLE SPACE
  2081. - THE USER IS TRYING TO MODIFY A BYTE IN THE APPLICATION SPACE,
  2082. BUT IT HAS BEEN SWAPPED OUT TO THE reu
  2083. - THE USER IS TRYING TO WRITE OVER MONITOR CODE
  2084. - THE USER IS TRYING TO READ/WRITE TO THE OTHER BANK THAN IS CURRENTLY
  2085. IN DURING MONITOR EXECUTION.
  2086. - THE USER IS TRYING TO MODIFY cpu_data OR CONFIG, WHICH WOULD
  2087. IMMEDIATELY CHANGE THE MEMORY MAP AND PROBABLY CRASH THE DEBUGGER.
  2088.  
  2089. lOADsAVEbYTE'S FOUR STEP PROCESS CAN BE BROKEN DOWN AS:
  2090. 1) hANDLE MEMORY MAP CONTROLS AT $0000, $0001, AND $ff00 (128)
  2091. AS A SPECIAL CASE.
  2092. 2) iF THIS ACCESS IS IN THE io SPACE, AND io IS ENABLED, USE THE
  2093. io address table TO DECIDE WHICH io LOCATIONS HE CAN MODIFY DIRECTLY
  2094. AND WHICH ONES WE KEEP SHADOWS FOR IN THE MONITOR VARIABLE AREA.
  2095. 3) iF THIS ACCESS IS IN A SPACE WHERE rom IS CURRENTLY IN, THEN
  2096. ONLY ALLOW READ OPERATIONS. tHE DEBUGGER DOES NOT ALLOW
  2097. "BLEED THROUGH" WRITES TO RAM UNDERNEATH ROM.
  2098. 4) iF NONE OF THE ABOVE CASES HOLD, THEN THE ACCESS MUST BE TO RAM.
  2099. cALCULATE THE EFFECTIVE BANK NUMBER (128 ONLY), AND USE THE
  2100. ram address table TO DECIDE WHICH LOCATIONS NEED RE-DIRECTION OR
  2101. ARE ILLEGAL.
  2102.  
  2103.  
  2104. hERE IS THE KEY USED IN THE LOOKUP TABLES ON THE FOLLOWING PAGES:
  2105.  
  2106. MINI / SUPER / BACK SUPER
  2107.  
  2108. m = MINI DEBUGGER CODE AREA (ILLEGAL TO READ/WRITE)
  2109. s = SUPER DEBUGGER CODE AREA (MUST READ/WRITE TO reu SPACE)
  2110. b = BACKRAM SUPER DEBUGGER CODE AREA (ILLEGAL TO READ/WRITE)
  2111. x = USED BY ALL THREE MONITORS, NO COPY SAVED (ILLEGAL TO READ/WRITE)
  2112. t = SUPER DEBUGGER TEXT SCREEN AREA (color_matrix: R/W TO reu SPACE)
  2113. r = READ ONLY
  2114. d = READ/WRITE DIRECTLY
  2115. z = ZERO PAGE RAM WHICH MONITOR USES (MUST READ/WRITE TO SAVED COPY OF AREA)
  2116. NA = NOT APPLICABLE (FOR EXAMPLE, io CANNOT SHOW UP AT $0400)
  2117.  
  2118.  
  2119.  
  2120. sTEP 1: CHECK FOR OVERRIDING io LOCATIONS
  2121. -----------------------------------------
  2122.  
  2123. pSEUDO-CODE:
  2124. c64mODE:
  2125. $0000DIRECT, READ ONLY
  2126. $0001<--> APPmEMmAP(MEMORY MAP INFO)
  2127. c128:
  2128. $0000DIRECT, READ ONLY
  2129. $0001<- b2 AND b1  -> APPcpu_b21(VIDEO CONTROL INFO)
  2130. <- OTHER BITS -> APPmEMmAP(NON ESSENTIAL INFO)
  2131. $ff00<--> APPcONFIG(MEMORY MAP INFO)
  2132. $ff01-$ff04SPECIAL CASE: IS READING pcra-pcrd
  2133. OR IS SENDING ONE OF THOSE FOUR TO cONFIG
  2134.  
  2135.  
  2136.  
  2137.  
  2138. sTEP 2: CHECK FOR io SPACE ACCESSES
  2139. -----------------------------------
  2140.  
  2141.  
  2142. io address table
  2143.  
  2144. c64 mODE.......c128 mODE..............
  2145. mEMORY RANGEUSAGE / geos EQUATEioio
  2146. -----------------------------------------------------------------------
  2147. $0000 - $d010RAM / IO: vic REGSd/dd/d/d
  2148. $d011         *IO: vic GRCTRL1APPvic1APPvic1
  2149. $d012 - $d014IO: vic REGSd/dd/d/d
  2150. $d015         *IO: vic MOBENBLEAPPvic2APPvic2
  2151. $d016         *IO: vic GRCTRL2APPvic3APPvic3
  2152. $d017IO: vic REGd/dd/d/d
  2153. $d018         *IO: vic GRMEMPTRAPPvic4APPvic4
  2154. $d019 - $d020IO: vic REGSd/dd/d/d
  2155. $d021         *IO: vic BAKCLR0APPvic5APPvic5
  2156. $d022 - $d02fIO: vic REGSd/dd/d/d
  2157. $d030         *IO: c128 2mhz CTRLd/dAPPcLK
  2158. $d031 - $d4ffRAM / IO / ROMd/dd/d/d
  2159. $d500         *IO: c128 mmu CONTROLd/dAPPcONFG
  2160. $d501 - $d504IO: c128 mmu REGSd/dd/d/d
  2161. $d505         *IO: c128 mmu mcrd/dr/r/r
  2162. $d506         *IO: c128 mmu "rcr"d/dAPPrcr*1
  2163. $d507 - $d50a *IO: c128 mmu zp RELOCd/dr/r/r
  2164. $d50b - $d7ffRAM / IO / ROMd/dd/d/d
  2165. $d800 - $dbff *IO: TEXT COLORS "CTAB"r/r*2*
  2166. $dc00 - $dcffRAM / IO / ROMd/dd/d/d
  2167. $dd00         *IO: CIA2BASE (vic MMAP)     APPcia2_b10     *3*     APPcia2_b10
  2168. $dd01 - $deffRAM / IO / ROMd/dd/d/d
  2169. $df00 - $df09 *IO: reu dma CONTROLr/rr/r/r
  2170. $df0a - $efffRAM / IO / ROMd/dd/d/d
  2171. $f001 - $ffffRAM / ROMd/dd/d/d
  2172. -----------------------------------------------------------------------
  2173.  
  2174. cONCLUSIONS:
  2175. nO DIFFERENCES BETWEEN THREE DEBUGGERS- JUST BETWEEN TWO MACHINES.
  2176. oNLY THREE POSSIBLITIES: DIRECT, READ-ONLY, OR ONE OF SEVERAL
  2177.   SPECIAL CASE ROUTINES.
  2178. fOR EACH AREA, NEED BYTE IN TABLE WHICH CONTAINS TWO THREE-BIT CODES,
  2179.   DENOTING WHAT TO DO ON THAT MACHINE.
  2180. tABLE SIZE: 25 LINES * (1 WORD + 1 BYTE) = 75 BYTES
  2181. pLUS vic HANDLER ROUTINE (USES ADDRESS TO SEE WHICH vic REGISTERS
  2182.   WE WANT, AND THEN READS/WRITES TO MONITOR SHADOW FOR THAT REGISTER.
  2183. pLUS HANDLER ROUTINES FOR APPcLK, APPcONFIG, APPrcr, AND APPcia2_b10.
  2184.  
  2185. note 1: IN 128 MODE, $d506 IS SPLIT UP BETWEEN APPrcr_b76 (vic BANK INFO)
  2186. AND APPrcr_b50 (MEMORY MAP INFO).
  2187.  
  2188. note 2: THE TEXT SCREEN COLOR TABLE IS LOCATED AT $d800-$dbff.
  2189. iN c64 MODE, WE ONLY ALLOW READS FROM THIS AREA, SO THE USER WON'T SCREW
  2190. UP THE MONITOR'S TEXT COLORS.
  2191. iN c128 MODE, THERE ARE ACTUALLY TWO COLOR TABLES AT THIS LOCATION.
  2192. bIT 1 OF $0001 DETERMINES WHICH IS VISIBLE TO THE 6510. iF THIS BIT IS
  2193. CLEAR, WE ALLOW DIRECT READ/WRITES. iF THIS BIT IS SET, WE ONLY ALLOW READS.
  2194.  
  2195. note 3: BITS 1-0 OF LOCATION $dd00 CONTROL WHICH 16k MEMORY BANK THE vic
  2196. CHIP USES, AND SO ARE SAVED IN APPcia_b10. tHE OTHER BITS (7-2) ARE WRITTEN TO/
  2197. READ FROM MEMORY. cAUTION ERIC: IN c64 MODE, MAKE SURE io IS IN WHEN DOING THIS.
  2198.  
  2199. pSEUDO-cODE:
  2200. IF THE ADDRESS IS BETWEEN $d000 AND $dfff:
  2201. c64:CHECK LOCATION $0001.
  2202. iF (b1=1 OR b0=1), THEN i/o SPACE IN.
  2203. iF b2=0, THEN 4k char rom IS VISIBLE:
  2204. ONLY ALLOW READS.
  2205. iF b2=1, THEN 4k OF i/o DEVICES ARE VISIBLE:
  2206. CALL TABLE LOOKUP ROUTINE, USING
  2207.   io address table.
  2208. USE b5-b3 OF RETURN BYTE TO DECIDE
  2209.   WHAT TO DO.
  2210. ELSE CAN READ/WRITE DIRECTLY
  2211.  
  2212. c128:CHECK LOCATION $ff00:
  2213. iF (b0=0), THEN i/o SPACE IS IN.
  2214. CALL TABLE LOOKUP ROUTINE, USING
  2215.   io address table.
  2216. USE b2-b0 OF RETURN BYTE TO DECIDE
  2217.   WHAT TO DO.
  2218. ELSE CAN READ/WRITE DIRECTLY
  2219.  
  2220. ELSE (ADDRESS IS NOT IN io RANGE) GO TO STEP 3
  2221.  
  2222.  
  2223.  
  2224. sTEP 3: CHECK FOR rom ACCESS
  2225. ----------------------------
  2226.  
  2227.  
  2228. c64 mODE rOM tRUTH tABLE
  2229. LOCATION $0001
  2230. mEMORY RANGEwHAT mIGHT bE tHERE76543210nOTES
  2231. ---------------------------------------------------------------------------
  2232. $0000 - $9fffRAM--------
  2233. $a000 - $bfffRAM / bASIC ROM-------1b0=1
  2234. $c000 - $dfffRAM*1*--------
  2235. $e000 - $ffffRAM / kERNAL ROM------1-b1=1
  2236.  
  2237. nOTE THAT THERE ARE CASES WHERE CARTRIDGES PLUGGED INTO THE c64 CAN OVERRIDE
  2238. THESE AREAS. tHE c64 pROG. rEF. gUIDE IS NOT VERY CLEAR ON THIS, SO i WILL
  2239. NOT BE CONCERNED ABOUT CARTRIDGES FOR NOW. eds 2/8/88.
  2240.  
  2241. nOTE 1: THE CASE WHERE char rom IS MAPPED IN FROM $d000 TO $dfff HAS ALREADY
  2242. BEEN HANDLED BY io TABLE.
  2243.  
  2244.  
  2245. c128 mODE rOM tRUTH tABLE
  2246. LOCATION $ff00
  2247. mEMORY RANGEwHAT mIGHT bE tHERE76543210nOTES
  2248. ---------------------------------------------------------------------------
  2249. $0000 - $3fffRAM--------
  2250. $4000 - $7fffRAM / bASIC ROM LOW------0-b1=0
  2251. $8000 - $bfffRAM / bASIC ROM HIGH----AB--b3=0 OR b2=0
  2252. $c000 - $ffffRAM / kERNAL ROM--AB----b5=0 OR b4=0
  2253.  
  2254. i DON'T COMPLETELY UNDERSTAND c128 EXTERNAL ROMS YET. i AM GOING TO ASSUME THAT
  2255. b5-b1 IN $ff00 DETERMINE IF THERE IS ANY rom IN. i DON'T CARE IF IS kERNAL,
  2256. EXTERNAL, INTERNAL, OR CARTRIDGE ROM. i JUST WON'T WRITE TO THOSE RANGES IF THE
  2257. BITS ARE CLEAR.
  2258.  
  2259.  
  2260. pSEUDO-CODE:
  2261. aS IT TURNS OUT, THE FASTEST AND TIGHTEST CODE TO HANDLE THIS
  2262. SIMPLY CHECKS ADDRESS RANGES AND BITS DIRECTLY. sEE THE CODE.
  2263.  
  2264.  
  2265.  
  2266. sTEP 4: ram ACCESS
  2267. ------------------
  2268.  
  2269. c64 mODEc128 mODE......
  2270. mEMORY RANGEUSAGE / geos EQUATEramram b1ram b0
  2271. ---------------------------------------------------------
  2272. $0000 - $0001aLREADY HANDLED BY STEP 1.
  2273. $0002 - $00dd *ZERO PAGE (MON SWAPS)z/zNAz/z/z
  2274. $00de - $00ffZERO PAGEd/dNAd/d/d
  2275. $0100 - sp    *STACK (MONITOR USES)x/xNAx/x/x
  2276. sp+1  - $01ffSTACK (USER'S DATA)d/dNAd/d/d *1*
  2277. $0200 - $0313RAM d/dd/d/dd/d/d
  2278. $0314 - $0319 *BASirqvEC, brk, nmir/rd/d/dr/r/r
  2279. $031a - $0333RAMd/dd/d/dd/d/d
  2280. $0334 - $03fb *MONITOR CODEx/xx/x/xx/x/x
  2281. $03fc - $03ffMONITOR jsr AREAd/dd/d/dd/d/d
  2282. $0400 - $1fff *RAMd/sd/s/dd/d/d
  2283. $2000 - $3bff *RAM d/sd/s/dd/d/b
  2284. $3c00 - $5fff *RAM m/sm/s/dd/d/b
  2285. $6000 - $78ff *RAMd/sd/s/dd/d/b
  2286. $7900 - $8bff *RAMd/dd/d/dd/d/b
  2287. $8c00 - $8fe7 *RAM (MONITOR TEXT SCR)r/tr/t/dd/d/b
  2288. $8fe8 - $9fff *RAMd/dd/d/dd/d/b
  2289. $a000 - $fff9RAM / ROM IF >$d000d/dd/d/dd/d/d
  2290. $fffa - $ffff *nmi_vector, reset, irqr/rr/r/rr/r/r
  2291. -----------------------------------------------------------------------
  2292. cONCLUSIONS:
  2293. mINI DEBUGGER AND sUPER DEBUGGERS ARE COMPLETELY DIFFERENT CASES.
  2294.   uSE CONDITIONAL ASSEMBLY TO DECIDE WHICH TABLE TO USE.
  2295. mINI DEBUGGER HAS FOUR POSSIBILITIES: DIRECT, READ-ONLY, ILLEGAL,
  2296.   AND ZERO PAGE. fOR EACH AREA, NEED BYTE IN TABLE WHICH CONTAINS
  2297.   TWO THREE-BIT CODES, DENOTING WHAT TO DO ON THAT MACHINE.
  2298.   tABLE SIZE: 15 LINES * (1 WORD + 1 BYTE) = 45 BYTES
  2299.   aLL TABLE VALUES ARE STANDARD CASES.
  2300. tHE SUPER DEBUGGER'S TABLE IS SIMILAR: FOR EACH AREA, THERE ARE SIX
  2301.   POSSIBILITIES, ALL STANDARD. tHE TABLE NEEDS TO GIVE US A WORD VALUE
  2302.   WHICH CONTAINS FIVE THREE-BIT CODES:
  2303. MACHINEMONITORACCESS TYPEBITS IN WORD
  2304. ---------------------------------------------------------
  2305. 128 MODEBACKRAM SUPERBANK 0 ACCESSb14-b12
  2306. 128 MODEBACKRAM SUPERBANK 1 ACCESSb11-b9
  2307. 128 MODEreu SUPERBANK 0 ACCESSb8-b6
  2308. 128 MODEreu SUPERBANK 0 ACCESSb2-b0
  2309. 64 MODEreu SUPERb5-b3
  2310. ---------------------------------------------------------
  2311.   tABLE SIZE: 18 LINES * (1 WORD + 2 BYTES) = 76 BYTES
  2312.   aLL TABLE VALUES ARE STANDARD CASES.
  2313.  
  2314.  
  2315. note 1: THE REGION sp+1 TO $313 CAN BE COMBINED, BECAUSE THE EFFECTIVE BANK
  2316. CALCULATION WILL NOT GIVE AN ADDRESS <$200 IN BANK 1.
  2317.  
  2318. pSEUDO-CODE:
  2319.  
  2320. FIRST CALCULATE EFFECTIVE BANK (ONLY NECESSARY ON c-128)
  2321. IF ADDRESS IS LESS THAN $200, IS bANK 0.
  2322. IF APPcONFIG b6 = 1 THEN(note: IGNORE b7)
  2323. (BANK 1 IS ENABLED, BUT WE MUST CHECK RAM SHARING)
  2324. IF ADDRESS HIGH BYTE >= $80
  2325. IF APPrcr b3 = 1
  2326. USE LOOKUP TABLE FOR APPrcr b1-b0:
  2327. 00$fc
  2328. 01$f0
  2329. 10$e0
  2330. 11$c0
  2331. IF ADDRESS HIGH BYTE < THIS VALUE, IS BANK 1
  2332. ELSE IS BANK 0
  2333. ELSE IS BANK 1
  2334. ELSE (ADDRESS HIGH BYTE < $80)
  2335. IF APPrcr b2 = 1
  2336. USE LOOKUP TABLE FOR APPrcr b1-b0:
  2337. 00$04
  2338. 01$10
  2339. 10$20
  2340. 11$40
  2341. IF ADDRESS HIGH BYTE >= THIS VALUE, IS BANK 1
  2342. ELSE IS BANK 0
  2343. ELSE IS BANK 1
  2344. ELSE IS BANK 0
  2345.  
  2346. these bit numbers have changed
  2347. tHEN USE TABLE TO DETERMINE WHAT TO DO WITH THAT ADDRESS, CONSIDERING THE
  2348. MACHINE, MONITOR TYPE, AND BANK DESIRED.
  2349. IF USING MINI DEBUGGER
  2350. CALL TABLE LOOKUP ROUTINE, USING mini ram address table
  2351. IF IN c64 MODE:
  2352. USE b5-b3 OF RETURN BYTE TO DECIDE WHAT TO DO.
  2353. ELSE (c128 MODE):
  2354. USE b2-b0 OF RETURN BYTE TO DECIDE WHAT TO DO.
  2355.  
  2356. IF USING SUPER DEBUGGER:
  2357. CALL TABLE LOOKUP ROUTINE, USING mini ram address table
  2358. IF IN c64 MODE:
  2359. USE b5-b3 OF RETURN BYTE TO DECIDE WHAT TO DO.
  2360. ELSE (c128 MODE):
  2361. IF SUPER DEBUGGER
  2362. IF ACCESSING BANK 1
  2363. USE b2-b0 OF RETURN WORD
  2364. IF ACCESSING BANK 0
  2365. USE b8-b6 OF RETURN WORD
  2366. IF BACKRAM SUPER DEBUGGER
  2367. IF ACCESSING BANK 1
  2368. USE b11-b9 OF RETURN WORD
  2369. IF ACCESSING BANK 0
  2370. USE b14-b12 OF RETURN WORD
  2371.  
  2372. tHIS DECISION TREE SEEMS FAIRLY COMPLICATED, BUT IT BREAKS DOWN PRETTY WELL
  2373. IN THE CODE.
  2374.  
  2375.  
  2376.  
  2377. gENERAL mEMORY pROTECT mAP
  2378. --------------------------
  2379.  
  2380. c64 mODE.......c128 mODE..............
  2381. mEMORY RANGEUSAGE / geos EQUATEramioram b1ram b0io
  2382. -----------------------------------------------------------------------
  2383. $0000         *cpu_ddr 6510 ddrALL CASES: r/rALL CASES: r/r
  2384. $0001      *cpu_data 6510 DATA PORT<-> APPmEMmAP<-> APPcpu_b21+APPmEMmAP
  2385.  
  2386. $0002 - $00dd *ZERO PAGE (MON SWAPS)z/zNANAz/z/zNA
  2387. $00de - $00ffZERO PAGEd/dNANAd/d/dNA
  2388. $0100 - sp    *STACK (MONITOR USES)x/xNANAx/x/xNA
  2389. sp+1  - $01ffSTACK (USER'S DATA)d/dNANAd/d/dNA
  2390.  
  2391. $0200 - $0313RAMd/dNAd/d/dd/d/dNA
  2392. $0314 - $0319 *BASirqvEC, brk, nmir/rNAd/d/dr/r/rNA
  2393. $031a - $0333RAMd/dNAd/d/dd/d/dNA
  2394. $0334 - $03fb *MONITOR CODEx/xNAx/x/xx/x/xNA
  2395. $03fc - $03ffMONITOR jsr AREAd/dNAd/d/dd/d/dNA
  2396.  
  2397. $0400 - $1fff *RAMd/sNAd/s/dd/d/dNA
  2398. $2000 - $3bff *RAM d/sNAd/s/dd/d/bNA
  2399. $3c00 - $3fff *RAM m/sNAm/s/dd/d/bNA
  2400. $4000 - $5fff *RAM (bg SCREEN)m/sNAm/s/dd/d/bNA
  2401. $6000 - $78ff *RAMd/sNAd/s/dd/d/bNA
  2402. $7900 - $8bff *RAMd/dNAd/d/dd/d/bNA
  2403. $8c00 - $8fe7 *color_matrix / RAMd/dNAd/d/dd/d/bNA
  2404. $8fe8 - $8fff *RAMd/dNAd/d/dd/d/bNA
  2405. $9000 - $9fff *RAMd/dNAd/d/dd/d/bNA
  2406. $a000 - $bfffRAM (fg SCREEN)d/dNAd/d/dd/d/dNA
  2407. $c000 - $cfffRAMd/dNAd/d/dd/d/dNA
  2408.  
  2409. $d000 - $d010IO: vic REGSd/dd/dd/d/dd/d/dd/d/d
  2410. $d011         *IO: vic GRCTRL1d/dAPPvic1d/d/dd/d/dAPPvic1
  2411. $d012 - $d014IO: vic REGSd/dd/dd/d/dd/d/dd/d/d
  2412. $d015         *IO: vic MOBENBLEd/dAPPvic2d/d/dd/d/dAPPvic2
  2413. $d016         *IO: vic GRCTRL2d/dAPPvic3d/d/dd/d/dAPPvic3
  2414. $d017IO: vic REGd/dd/dd/d/dd/d/dd/d/d
  2415. $d018         *IO: vic GRMEMPTRd/dAPPvic4d/d/dd/d/dAPPvic4
  2416. $d019 - $d020IO: vic REGSd/dd/dd/d/dd/d/dd/d/d
  2417. $d021         *IO: vic BAKCLR0d/dAPPvic5d/d/dd/d/dAPPvic5
  2418. $d022 - $d02fIO: vic REGSd/dd/dd/d/dd/d/dd/d/d
  2419. $d030         *IO: c128 2mhz CTRLd/dd/dd/d/dd/d/dAPPcLK
  2420. $d031 - $d4ffRAM / IO / ROMd/dd/dd/d/dd/d/dd/d/d
  2421. $d500         *IO: c128 mmu CONTROLd/dd/dd/d/dd/d/dAPPcONFG
  2422. $d501 - $d504IO: c128 mmu REGSd/dd/dd/d/dd/d/dd/d/d
  2423. $d505         *IO: c128 mmu mcrd/dd/dd/d/dd/d/dr/r/r
  2424. $d506         *IO: c128 mmu "rcr"d/dd/dd/d/dd/d/dAPPrcr*1
  2425. $d507 - $d50a *IO: c128 mmu zp RELOCd/dd/dd/d/dd/d/dr/r/r
  2426. $d50b - $d7ffRAM / IO / ROMd/dd/dd/d/dd/d/dd/d/d
  2427. $d800 - $dbff *IO: TEXT COLORS "CTAB"d/dr/rd/d/dd/d/d*2*
  2428. $dc00 - $dcffRAM / IO / ROMd/dd/dd/d/dd/d/dd/d/d
  2429. $dd00         *IO: CIA2BASE (vic MMAP)d/d APPcia2_b10d/d/dd/d/d*3*
  2430. $dd01 - $deffRAM / IO / ROMd/dd/dd/d/dd/d/dd/d/d
  2431. $df00 - $df09 *IO: reu dma CONTROLd/dr/rd/d/dd/d/dr/r/r
  2432. $df0a - $dfffRAM / IO / ROMd/dd/dd/d/dd/d/dd/d/d
  2433.  
  2434. $e000 - $efffRAM / ROMd/dNAd/d/dd/d/dNA
  2435. $f000         *c128: CONFIG REGISTERd/dNAALL CASES: <-> APPcONFIG
  2436. $f001 - $fff9RAM / ROMd/dNAd/d/dd/d/dNA
  2437. $fffa - $ffff *nmi_vector, reset, irqr/rNAr/r/rr/r/rNA
  2438. -----------------------------------------------------------------------
  2439.  
  2440. aSSUMPTIONS:
  2441. rom DECODED SEPARATELY
  2442. ADDRESS DECODE FOR RAM BANK SHARING ALREADY WORKED OUT
  2443.  
  2444. CAN SIMPLIFY TABLE A BIT WITH .IF mini
  2445.  
  2446. note 1: IN 128 MODE, $d506 IS SPLIT UP BETWEEN APPrcr_b76 (vic BANK INFO)
  2447. AND APPrcr_b50 (MEMORY MAP INFO).
  2448.  
  2449. note 2: THE TEXT SCREEN COLOR TABLE IS LOCATED AT $d800-$dbff.
  2450. iN c64 MODE, WE ONLY ALLOW READS FROM THIS AREA, SO THE USER WON'T SCREW
  2451. UP THE MONITOR'S TEXT COLORS.
  2452. iN c128 MODE, THERE ARE ACTUALLY TWO COLOR TABLES AT THIS LOCATION.
  2453. bIT 1 OF $0001 DETERMINES WHICH IS VISIBLE TO THE 6510. iF THIS BIT IS
  2454. CLEAR, WE ALLOW DIRECT READ/WRITES. iF THIS BIT IS SET, WE ONLY ALLOW READS.
  2455.  
  2456. note 3: BITS 1-0 OF LOCATION $dd00 CONTROL WHICH 16k MEMORY BANK THE vic
  2457. CHIP USES, AND SO ARE SAVED IN APPcia_b10. tHE OTHER BITS (7-2) ARE WRITTEN TO/
  2458. READ FROM MEMORY. cAUTION ERIC: IN c64 MODE, MAKE SURE io IS IN WHEN DOING THIS.
  2459.  
  2460. wARN IN MANUAL THAT WE DO NOT ALLOW BLEED-THROUGH. tHEY WILL HAVE TO SWAP
  2461. RAM IN MANUALLY TO CHANGE IT. tHIS MEANS WE CAN'T USE A SINGLE move COMMAND
  2462. TO COPY ROM TO RAM...
  2463.  
  2464.  
  2465. gEOdEBUGGER HAS LIMITED SUPPORT FOR THE CREATION AND DEBUGGING OF
  2466. cbm APPLICATIONS. tHE c128 DESKtOP HAS SOME BUGS RELATED TO LOADING
  2467. cbm APPLICATIONS.
  2468.  
  2469.  
  2470. gEOpROGRAMMER CURRENTLY SUPPORTS THE ASSEMBLY AND LINK OF:
  2471. geos APPLICATIONS(seq OR vlir, WITH HEADER)
  2472.  
  2473. geos DESK ACCESSORIES(seq BY DEFINITION, WITH HEADER)
  2474.  
  2475. cbm APPLICATIONSSTANDARD cOMMODORE prg FILE
  2476. (geos FILE TYPE = not_geos, DOES NOT HAVE
  2477. A HEADER BLOCK). dESKtOP HAS RESTRICTIONS
  2478. ON WHICH LOAD ADDRESSES IT CAN HANDLE.
  2479. cOMMODORE basic'S load AND boot COMMANDS
  2480. CAN LOAD MOST ADDRESSES OK. gEOdEBUGGER CAN
  2481. LOAD MOST ADDRESSES OK.
  2482.  
  2483. tHERE IS SOME AMOUNT OF SUPPORT IN THE DEBUGGER FOR LOADING AND DEBUGGING
  2484. cbm APPLICATIONS.
  2485. - CAN TOGGLE BETWEEN ANY KIND OF SCREEN THE vic AND vdc CHIPS
  2486. SUPPORT
  2487. - APP CAN TRASH ALL OF geos ADDRESS SPACE
  2488.  
  2489. pROBLEMS:
  2490. - ON c128, DEBUGGER CAN ONLY LOAD A cbm APP TO BANK 1, WHEREAS
  2491. basic EXPECTS SUCH AN APPLICATION TO RUN IN BANK 0. eITHER WRITE
  2492. YOUR APPLICATION TO RUN IN EITHER BANK (SEE sAMPLEcbm), OR USE
  2493. A CONSTANT SO YOU CAN ASSEMBLE IT TO RUN IN EITHER BANK.
  2494.  
  2495. - tHE DEBUGGER DOES NOT DO ANY ERROR CHECKING ON THE LOAD ADDRESS
  2496. OF A cbm APPLICATION. iT WILL CRASH IF YOU TRY TO LOAD AN APP
  2497. BELOW $400. aPPLICATION CANNOT LOAD ABOVE THE $8000 AREA.
  2498.  
  2499. - gEOdEBUGGER FILLS THE TEXT COLOR TABLE ONCE. iF THE cbm APPLICATION
  2500. FILLS THE TEXT COLOR TABLE (TABLE #1 ON THE 128), THE DEBUGGER'S
  2501. CHARACTERS WILL BE COLORED. iF THE cbm APP FILLS WITH $0b, THE
  2502. DEBUGGER CHARACTERS WILL BE INVISIBLE, SINCE THE DEBUGGER SETS THE
  2503. BACKGROUND TO $0b.
  2504.  
  2505. - IF THE cbm APP PUTS UP A SCREEN WHICH RESIDES IN THE $0400-$7fff AREA,
  2506. THEN YOU WILL NOT BE ABLE TO VIEW IT FROM THE SUPER DEBUGGER USING f7
  2507. OR f8. tHIS IS BECAUSE THESE COMMANDS DO NOT SWAP THE DEBUGGER CODE OUT
  2508. OF THIS AREA: THE vic CHIP WILL BE GIVEN THE CORRECT PARAMETERS, BUT IT
  2509. WILL BE DISPLAYING DEBUGGER CODE INSTEAD OF THE APPLICATION'S SCREEN
  2510. DATA.
  2511.  
  2512. wITH A LITTLE BIT OF WORK, YOU CAN GET GEOaSSEMBLER AND GEOlINKER TO GENERATE:
  2513.  
  2514. aSSEMBLY-iN-bASIC PROGRAM a (prg-not_geos) APPLICATION WHICH LOOKS LIKE A
  2515. basic PROGRAM, BUT REALLY ONLY HAS SEVERAL LINES OF basic. rEMAINDER IS
  2516. ASSEMBLY CODE.
  2517.  
  2518. seq DATAFILE: AS IF WAS CREATED BY basic. cREATE A geos seq FILE, THEN
  2519. CHANGE THE cOMMODORE AND geos FILE TYPE BYTES.
  2520.  
  2521. geos APPLICATION DATAFILE: AS IF WAS CREATED BY A geos APPLICATION.
  2522. cREATE A geos seq FILE, THEN CHANGE THE geos FILE TYPE BYTE.
  2523.  
  2524. iN A SIMILAR MANNER, YOU CAN USE gEOdEBUGGER TO EXAMINE A WIDE VARIETY
  2525. OF DIFFERENT FILE TYPES. bUT FIRST, YOU MUST CHANGE THE cOMMODORE
  2526. AND/OR geos FILE TYPE BYTE, AND THE LOAD ADDRESS IN THE HEADER BLOCK.
  2527.  
  2528.  
  2529. fUTURE gEOpROGRAMMER IDEAS:
  2530.  
  2531. gENERATE cbm aPPLICATION WITH HEADER:
  2532. eSSENTIALLY A cbm ASSEMBLY-LANGUAGE PROGRAM, BUT WITH A geos HEADER.
  2533. wOULD SAVE THE iCON eDITOR STEP CURRENTLY REQUIRED.
  2534.  
  2535.  
  2536.  
  2537. sPECIFICATION OF "HIDE DEBUG SCREEN MODE"
  2538.  
  2539.  
  2540. f7 IS PRESSED:
  2541. toggle screen:
  2542. SHOW user SCREEN
  2543. WAIT FOR PRESS
  2544. SHOW debug SCREEN
  2545. IF mini:
  2546. PLACE CURSOR ON LEFT
  2547. PRINT PROMPT
  2548. PRINT INPUT LINE AS IT WAS
  2549. LOOP FOR NEXT CHARACTER
  2550.  
  2551.  
  2552. f8 IS PRESSED:
  2553. IF HIDDEN = false
  2554. enable show mode:
  2555. CALL tOGGLEsCREEN TO SWITCH USER
  2556. PARAMETERS TO HARDWARE
  2557. SET HIDEdEBUGsCREEN = true
  2558. LOOP FOR NEXT CHARACTER
  2559. IF HIDDEN = true
  2560. disable show mode:
  2561. SET HIDEdEBUGsCREEN = false
  2562. CALL tOGGLEsCREEN TO SWITCH USER PARAMETERS
  2563. TO SHADOWS, AND DISPLAY DEBUGGER SCREEN
  2564. IF IN LEFT-SIDE COMMAND MODE
  2565. (MUST REPRINT LINE BECAUSE NOTHING HAS BEEN PRINTED)
  2566. PLACE CURSOR ON LEFT
  2567. PRINT PROMPT
  2568. PRINT INPUT LINE AS IT WAS
  2569. IF NOT IN LEFT-SIDE COMMAND MODE
  2570. CANCEL OPEN MODE / DEPOSIT MODE
  2571. PRINT PROMPT
  2572. LOOP FOR NEXT CHARACTER
  2573.  
  2574.  
  2575. hOW gEOdEBUGGER hANDLES irq iNTERRUPTS
  2576. --------------------------------------
  2577.  
  2578. iF YOU ARE WRITING A NORMAL geos APPLICATION, THEN YOU DO NOT HAVE TO READ
  2579. THE FOLLOWING INFORMATION. yOU CAN SKIP AHEAD TO THE SECTION TITLED
  2580. "sTRAY iNTERRUPT "trap" fACILITY". iF YOU ARE WRITING A NON-geos APPLICATION
  2581. WHICH SETS UP ITS OWN INTERRUPT SERVICE ROUTINE, THIS INFORMATION IS VITAL;
  2582. YOUR PROGRAM WILL NOT RUN CORRECTLY UNDER gEOdEBUGGER UNLESS YOU FOLLOW THESE
  2583. INSTRUCTIONS. nOTE: isr STANDS FOR iNTERRUPT sERVICE rOUTINE.
  2584.  
  2585. wHEN gEOdEBUGGER IS RUNNING A USER APPLICATION, IT INSERTS A SMALL WEDGE
  2586. ROUTINE IN PLACE OF THE NORMAL isr (WHICH IN MOST CASES WILL BE THE geos isr).
  2587. tHIS WEDGE FIRST CHECKS IF THE irq INTERRUPT WAS GENERATED BY THE irq LINE OR A
  2588. brk INSTRUCTION. iF IT WAS A brk INSTRUCTION, THE WEDGE EXECUTES THE APPROPRIATE
  2589. MONITOR. iF THE INTERRUPT WAS AN irq, THE WEDGE CALLS THE EXISTING isr.
  2590. tHUS: THE DEBUGGER IS ABLE TO MONITOR THE irq/brk EVENTS, WITHOUT INTERFERING
  2591. WITH REGULAR INTERRUPT SERVICING THAT IS VITAL TO MOST APPLICATIONS.
  2592.  
  2593. tO INSERT THIS WEDGE ROUTINE INTO THE INTERRUPT SEQUENCE, gEOdEBUGGER MUST
  2594. FIRST EXAMINE THE irq VECTOR AT LOCATION $fffe, TO SEE WHERE THE CURRENT isr
  2595. IS LOCATED. iT THEN MUST MODIFY THIS VECTOR SO IT WILL POINT TO THE gEOdEBUGGER
  2596. WEDGE ROUTINE WHICH IS LOCATED IN THE $0334 AREA.
  2597.  
  2598. iF YOU ARE WRITING A NON-geos APPLICATION WHICH SETS UP ITS OWN isr, THEN YOU
  2599. WILL PROBABLY WE SETTING THE irq VECTOR AT SOME POINT DURING YOUR INITIALIZATION
  2600. CODE. iN ORDER FOR YOUR APPLICATION TO RUN UNDER gEOdEBUGGER, YOU MUST SET THIS
  2601. VECTOR CAREFULLY; BECAUSE IF YOUR APPLICATION IS RUNNING UNDER gEOdEBUGGER,
  2602. YOU NEED TO STORE THE ADDRESS OF YOUR isr TO A VECTOR IN THE gEOdEBUGGER WEDGE
  2603. CODE, not TO THE irq VECTOR.
  2604.  
  2605. bELOW IS A ROUTINE WHICH YOU CAN INSERT INTO YOUR PROGRAM TO SET UP THE 
  2606. APPROPRIATE VECTOR TO YOUR isr. nOTE THAT THIS ROUTINE ASSUMES THAT YOUR
  2607. APPLICATION WILL ONLY ALLOW INTERRUPTS WHEN THE MEMORY MAP IS CONFIGURED AS A
  2608. STANDARD geos MEMORY MAP. oN THE c64, THIS MEANS ALL ram, AND ON THE c128,
  2609. THIS MEANS ALL BANK 1 ram, NO rom. iF YOUR APPLICATION IS GOING TO ALLOW
  2610. INTERRUPTS IN OTHER MEMORY MAP CONFIGURATIONS, USE THE "iNTERRUPT hANDLING
  2611. rEFERENCE nOTES" SECTION OF THIS DOCUMENT TO CUSTOMIZE THIS INSTALLATION
  2612. ROUTINE.
  2613.  
  2614. iNSERT THE FOLLOWING CONSTANTS AND SUBROUTINE INTO THE INITIALIZATION PHASE
  2615. OF YOUR APPLICATION, FOR IT TO RUN PROPERLY UNDER gEOdEBUGGER.
  2616.  
  2617. iN THE CONSTANT DEFINITION PORTION OF YOUR PROGRAM:
  2618.  
  2619. development= true;sET TO true IF YOU SOMETIMES RUN THIS
  2620. ;APPLICATION UNDER gEOdEBUGGER v2.0,
  2621. ;AND RUN IT UNDER THE DESKtOP OTHER TIMES.
  2622. ;sET TO false IF YOU WILL NEVER RUN THIS
  2623. ;APPLICATION UNDER gEOdEBUGGER v2.0.
  2624. tOiNTsVC= $0367;aDDRESS OF gEOdEBUGGER VECTOR WE MODIFY
  2625.  
  2626.  
  2627.  
  2628. iN THE INITIALIZATION PORTION OF YOUR PROGRAM:
  2629.  
  2630. ;*************************************************************************
  2631. ;iNITiNTsVC
  2632. ;
  2633. ;tHIS ROUTINE MODIFIES THE irq VECTOR, SO THAT THE USER'S INTERRUPT
  2634. ;SERVICE ROUTINE IS CALLED INSTEAD OF THE geos INTERRUPT SERVICE ROUTINE.
  2635. ;tHIS ROUTINE CAN ASSEMBLE ONE OF TWO WAYS, DEPENDING UPON THE
  2636. ;VALUE OF THE CONSTANT CALLED "development".
  2637. ;
  2638. ;aSSUMPTIONS:
  2639. ;1) tHAT THE STANDARD geos MEMORY MAP IS PRESENT WHEN THIS ROUTINE RUNS.
  2640. ;2) tHAT YOUR APPLICATION DOES NOT DO ANYTHING WEIRD SUCH AS ALLOWING
  2641. ;INTERRUPTS WHEN HIGH-MEMORY rom OR ram BANK 0 (ON THE c128) IS
  2642. ;SWAPPED IN.
  2643. ;
  2644. ;sIDE-EFFECTS:
  2645. ;1) iF THE FOLLOWING SCENARIO APPLIES:
  2646. ;- YOU ARE WRITING A NON-geos APPLICATION FOR THE c64
  2647. ;- WHICH TRIES TO DISABLE INTERRUPTS WHEN rom IS IN
  2648. ;- YOU RUN IT UNDER gEOdEBUGGER
  2649. ;- YOUR PROGRAM SWAPS kERNAL rom IN, WITHOUT PROPERLY
  2650. ;DISABLING INTERRUPTS
  2651. ;- AN INTERRUPT OCCURS
  2652. ;...THEN gEOdEBUGGER will PROPERLY RUN YOUR isr, WITHOUT GIVING
  2653. ;YOU ANY WARNING THAT THERE IS A BUG IN YOUR PROGRAM, AND THAT IT
  2654. ;WOULD HAVE CRASHED IF IT WAS NOT RUN UNDER gEOdEBUGGER.
  2655. ;
  2656. ;aUTHOR:eRIC e. dEL sESTOaPRIL 1988
  2657. ;cALLED BY:INITIALIZATION CODE
  2658. ;pASS:NOTHING
  2659. ;rETURNS:NOTHING
  2660. ;aLTERS:ACCUMULATOR AND FLAGS
  2661. ;
  2662. ;************************************************************************
  2663. iNITiNTsVC:
  2664. SEI;DISABLE INTERRUPTS
  2665.  
  2666. .IFdevelopment;------------------------------------------------
  2667. ;aSSEMBLE THE FOLLOWING CODE WHEN YOU WANT YOUR APPLICATION TO RUN CORRECTLY
  2668. ;UNDER gEOdEBUGGER v2.0.
  2669.  
  2670. LDAirq_vector+1;CHECK HIGH BYTE OF EXISTING irq VECTOR
  2671. ;TO SEE IF WE ARE RUNNING UNDER DEBUG.
  2672. BMI50$;SKIP IF NOT...
  2673.  
  2674. ;WE ARE RUNNING UNDER gEOdEBUGGER: MUST STORE OUR irq VECTOR TO
  2675. ;THE gEOdEBUGGER CODE IN THE $0334 AREA. iF RUNNING IN c128 MODE,
  2676. ;THIS ONLY MODIFIES THE WEDGE CODE IN BANK 1, WHICH IS SUFFICIENT.
  2677.  
  2678. lOADwtOiNTsVC,#mYiNTsVC
  2679. CLI;ENABLE INTERRUPTS
  2680. RTS;ALL DONE
  2681.  
  2682. 50$:;WE ARE NOT RUNNING UNDER gEOdEBUGGER: SET UP NEW irq VECTOR
  2683. ;IN NORMAL FASHION.
  2684. .ENDIF;(development)---------------------------------------------------
  2685.  
  2686. ;aT THIS POINT, WE KNOW THAT EITHER THE APPLICATION IS NOT RUNNING UNDER
  2687. ;gEOdEBUGGER, OR THAT WE DON'T EXPECT IT TO RUN UNDER gEOdEBUGGER (THE CASE
  2688. ;WHERE development = false). iNTERRUPTS HAVE ALREADY BEEN DISABLED ABOVE.
  2689. ;sET UP THE irq VECTOR AT $fffe TO POINT TO NEW SERVICE ROUTINE. nOTE THAT
  2690. ;IN c128 MODE, THIS ONLY AFFECTS THE irq VECTOR IN BANK 1 ram.
  2691.  
  2692. lOADwirq_vector,#mYiNTsVC
  2693. CLI;ENABLE INTERRUPTS
  2694. RTS;ALL DONE
  2695.  
  2696.  
  2697.  
  2698. sTRAY iNTERRUPT "trap" fACILITY
  2699. -------------------------------
  2700.  
  2701. yOU WOULD EXPECT THAT AN APPLICATION WHICH OFTEN HAS TO SWAP IN THE kERNAL rom
  2702. WOULD BE CAREFUL TO DISABLE INTERRUPTS DURING THESE OPERATIONS. tHIS IS TO
  2703. PREVENT THE CASE WHERE AN irq OCCURS AND geos INTERRUPT CODE HAS BEEN SWAPPED
  2704. OUT OF THE MEMORY MAP. oFTEN, IT IS EASY FOR SUCH A PROVISION TO BE LEFT OUT
  2705. IN THE INITIAL IMPLEMENTATION OF A PROGRAM. tO CATCH THESE HARD-TO-FIND BUGS,
  2706. gEOdEBUGGER HAS A "STRAY irq TRAP" FACILITY.
  2707.  
  2708. tHIS FACILITY SERVES TO WARN YOU WHEN AN INTERRUPT HAPPENS AND THE MEMORY MAP
  2709. IS CONFIGURED IN A MANNER YOU DID NOT EXPECT.
  2710.  
  2711. iF YOU ARE RUNNING A geos APPLICATION (WITH NORMAL geos INTERRUPTS), THEN THIS
  2712. FACILITY WILL STOP PROGRAM EXECUTION AND DISPLAY THE "*** eXECUTION STOPPED ***"
  2713. MESSAGE WHEN AN irq OCCURS AND THE kERNAL rom IS SWAPPED IN. yOU CAN EXAMINE
  2714. THE pc REGISTER TO SEE WHICH OF YOUR ROUTINES WAS EXECUTING WHEN THE irq
  2715. OCCURRED, AND CAN ADD INTERRUPT-DISABLING CODE WHERE NECESSARY.
  2716.  
  2717. iF YOU ARE WRITING A NON-geos APPLICATION WHICH RUNS ON THE c128, AND SETS UP
  2718. ITS OWN INTERRUPT SERVICE ROUTINE, YOU WILL PROBABLY DESIGN IT SO INTERRUPTS
  2719. ARE ENABLED ONLY WHEN THE MEMORY IF CONFIGURED IN A SPECIFIC WAY. hERE ARE
  2720. SEVERAL EXAMPLES OF ASSERTIONS YOU MIGHT FIND IN SUCH AN APPLICATION:
  2721.  
  2722. - "i WILL ONLY ALLOW INTERRUPTS WHEN BANK 1 ram IS MAPPED IN."
  2723. - "i WILL ONLY ALLOW INTERRUPTS WHEN BANK 0 ram OR rom IS MAPPED IN."
  2724.  
  2725. bY REFERING TO THE "iNTERRUPT hANDLING rEFERENCE nOTES" SECTION OF THIS
  2726. DOCUMENT, AND ADDING SOME CODE TO THE INITIALIZATION PORTION OF YOUR PROGRAM,
  2727. YOU CAN ALTER THE WEDGE CODE SO THAT A trap IS PRODUCED IF AN INTERRUPT
  2728. OCCURS WHEN THE MEMORY MAP IS IN AN UNEXPECTED CONFIGURATION.
  2729.  
  2730. (iS IT POSSIBLE TO CONTINUE PROGRAM EXECUTION AT THIS POINT???)
  2731.  
  2732.  
  2733.  
  2734. iNTERRUPT hANDLING rEFERENCE nOTES
  2735.  
  2736. iF YOU ARE WRITING A NON-geos APPLICATION, THE FOLLOWING TABLES PROVIDE
  2737. USEFUL REFERENCE INFORMATION ABOUT THE VECTORS IN gEOdEBUGGER'S WEDGE
  2738. CODE. bY ADDING CODE TO YOUR APPLICATION WHICH CHANGES THESE VECTORS,
  2739. YOU CAN GET YOUR INTERRUPT SERVICE ROUTINE TO WORK WHEN YOUR APPLICATION
  2740. IS RUNNING UNDER gEOdEBUGGER. yOU CAN ALSO SET THESE VECTORS SO THAT A trap
  2741. OCCURS IF AN INTERRUPT HAPPENS WHEN THE MEMORY MAP IS SUCH THAT YOUR
  2742. APPLICATION WOULD CRASH.
  2743.  
  2744. c64 mODE
  2745. --------
  2746.  
  2747. lABELaDDRnORMAL cONTENTSmODIFIED cONTENTS
  2748. -----------------------------------------------------------------------------
  2749. rOMirq_vEC:$0338JMP tRAProm4c 45 03JMP hANDLEirq4c 5e 03
  2750.  
  2751. - AS IT STANDS, THIS LOCATION WILL CAUSE A trap WHENEVER AN irq HAPPENS
  2752. AND THE kERNAL rom IS MAPPED INTO HIGH MEMORY. mODIFY THIS LOCATION IF YOU WANT
  2753. EXECUTION TO CONTINUE TO THE tOiNTsVC VECTOR WHEN rom IS MAPPED INTO HIGH
  2754. MEMORY. tHE tOiNTsVC VECTOR CAN THEN DIRECT EXECUTION TO YOUR isr.
  2755.  
  2756. tOiNTsVC:$xxxxJMP gEOSisr4c XX XXJMP yOUR_isr4c ll hh
  2757. -OR-
  2758. JMP tRAPirq4c xx xx
  2759.  
  2760. - AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE geos isr WHEN AN
  2761. INTERRUPT OCCURS. yOU CAN MODIFY THIS VECTOR TO POINT TO YOUR OWN isr,
  2762. OR FORCE A trap WHEN AN irq OCCURS. nOTE THAT IF rOMirq_vEC POINTS TO hANDLEirq,
  2763. THEN THE tOiNTsVC VECTOR HANDLES ALL irq INTERRUPTS, REGARDLESS OF WHETHER
  2764. ram OR rom IS IN.
  2765.  
  2766.  
  2767. c128 mODE
  2768. ---------
  2769.  
  2770. lABELaDDRnORMAL cONTENTSmODIFIED cONTENTS
  2771. -----------------------------------------------------------------------------
  2772. (IN BANK 0)
  2773. rOMirq_vEC:b0$xxxxJMP tRAProm4c xx xxJMP hANDLEirq4c xx xx
  2774.  
  2775. - AS IT STANDS, THIS LOCATION WILL CAUSE A trap WHENEVER AN irq HAPPENS
  2776. AND THE kERNAL rom IS MAPPED INTO HIGH MEMORY. mODIFY THIS LOCATION IN BANK 0
  2777. ram IF YOU WANT EXECUTION TO CONTINUE TO THE tOiNTsVC VECTOR WHEN rom IS MAPPED
  2778. INTO HIGH MEMORY. tHE tOiNTsVC VECTOR CAN THEN DIRECT EXECUTION TO YOUR isr.
  2779.  
  2780. (IN BANK 0)
  2781. tOiNTsVC:b0$xxxxJMP gEOSisr4c XX XXJMP yOUR_isr4c ll hh
  2782. -OR-
  2783. JMP tRAPirq4c xx xx
  2784.  
  2785. - AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE geos isr WHEN AN
  2786. INTERRUPT OCCURS and BANK 0 IS VISIBLE IN THE $0300 AREA. yOU CAN MODIFY THIS
  2787. VECTOR TO POINT TO YOUR OWN isr, OR FORCE A trap WHEN SUCH AN irq OCCURS. nOTE
  2788. THAT IF rOMirq_vEC POINTS TO hANDLEirq, THEN THIS BANK 0 tOiNTsVC VECTOR
  2789. WILL ADDITIONALLY HANDLE irq INTERRUPTS WHICH OCCUR WHEN rom IS MAPPED INTO
  2790. HIGH MEMORY.
  2791.  
  2792. (IN BANK 1)
  2793. tOiNTsVC:b1$xxxxJMP gEOSisr4c XX XXJMP yOUR_isr4c ll hh
  2794. -OR-
  2795. JMP tRAPirq4c xx xx
  2796.  
  2797. - AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE geos isr WHEN AN
  2798. INTERRUPT OCCURS and BANK 1 IS VISIBLE IN THE $0300 AREA. yOU CAN MODIFY THIS
  2799. VECTOR TO POINT TO YOUR OWN isr, OR FORCE A trap WHEN SUCH AN irq OCCURS.
  2800.  
  2801.  
  2802. nmi (rESTORE KEY) iNTERRUPTS
  2803.  
  2804. wHEN gEOdEBUGGER IS EXECUTING USER CODE, WE SET UP THE nmi VECTORS SO THAT
  2805. THE restore KEY CAN STOP EXECUTION AT ANY POINT AND BRING US INTO THE
  2806. MONITOR. nOTE THAT THIS INVOLVES THREE nmi VECTORS: b1$fffa, b0$fffa,
  2807. AND b0$318 FOR nmiS WHICH OCCUR WHEN rom IS MAPPED INTO THE $FFFA AREA.
  2808.  
  2809. wHEN THE MONITOR IS RUNNING, WE SET UP THE CURRENT BANK'S $fffa nmi VECTOR
  2810. SO THAT THE USER CAN HIT THE restore KEY TO QUIT ANY OPERATION. tHIS IS
  2811. IMPLEMENTED AS "SET-FLAG AND POLL-FLAG-AND-STOP WHEN YOU CAN" SO THAT
  2812. CRUCIAL OPERATIONS (SUCH AS INSERTING A SYMBOL) ARE NOT INTERRUPTED.
  2813.  
  2814. tO SIMPLIFY MATTERS, WE DISABLE nmi INTERRUPTS DURING CONTEXT SWITCHING
  2815. (STARTING OR STOPPING AN APPLICATION). tHIS IS ACCOMPLISHED BY MODIFYING
  2816. THE WEDGE CODE SLIGHTLY SO THAT IF AN nmi OCCURS WHEN WE DON'T WANT IT TO,
  2817. THE WEDGE CODE IMMEDIATELY RETURNS. iN BOTH c64 AND c128 MODES, THERE IS
  2818. ONLY ONE LOCATION IN THE WEDGE CODE WHICH MUST BE MODIFIED. (tHIS IS TRUE
  2819. ON THE 128 BECAUSE NO MATTER WHICH ENTRY POINT IS USED TO GET INTO THE WEDGE
  2820. CODE: rAMnmi_b0, rAMnmi_b1, OR rOMnmi_b0, EXECUTION ENDS UP AT THE POINT
  2821. LABELED sKIPtOrETURN IN THE WEDGE CODE IN BANK 1. tHEREFORE WE ONLY NEED TO
  2822. ALTER THE WEDGE CODE AT THAT POINT, AND NOT IN BOTH BANKS.)
  2823.  
  2824.  
  2825. nOTES:
  2826.  
  2827. 1) v1.0 gEOdEBUGGER USED TO DISABLE nmi INTERRUPTS DURING CALLS TO geos
  2828. INTERRUPT CODE. tHE MOTIVATION FOR THIS IS THE IDEA THAT WHEN THE USER HITS
  2829. THE restore KEY, HE DOES NOT WANT TO STOP EXECUTION IN THE MIDDLE OF
  2830. geos INTERRUPT CODE. v2.0 gEOdEBUGGER DOES NOT DO THIS ANYMORE BECAUSE WE
  2831. DO NOT WANT TO LOCK-OUT THE restore KEY WHILE THE USER'S INTERRUPT SERVICE
  2832. ROUTINE IS RUNNING. aND BESIDES, WHAT IS THE STOPMAIN COMMAND FOR ANYWAY?
  2833.  
  2834. 2) CONCERNING nmi BOUNCE:
  2835. - WHEN THE restore KEY IS PRESSED, TWO nmi SIGNALS AREA GENERATED,
  2836. ABOUT 150USEC APART.
  2837.  
  2838. 3) cONCERNING PREVENTING nmiS WHICH IMMEDIATELY FOLLOW A brk INSTRUCTION:
  2839. - WE HANDLE THIS CORRECTLY
  2840.  
  2841. 4) oN BOTH THE 64 AND 128, THE cia2 CHIP HAS THE CAPABILITY OF GENERATING
  2842. AN nmi SIGNAL. tO PREVENT THIS FROM OCCURING DURING DISK-ACCESS ROUTINES,
  2843. THE geos iNITfORio ROUTINE FORCES THE cia2 TO GENERATE ONE INTERRUPT BY SETTING
  2844. THE TIMER VALUE TO A LOW NUMBER LIKE 1. iNITfORio KNOWS THAT IT WILL GET CONTROL
  2845. WHEN THIS FORCED-nmi OCCURS BECAUSE IT SWAPS THE KERNAL rom INTO THE HIGH-
  2846. MEMORY AREA AND SETS THE KERNAL'S PAGE 3 nmi VECTOR (NMIVEC, $0318) TO POINT
  2847. TO A DUMMY nmi ROUTINE.
  2848. - ON THE c64, THIS WORKS FINE, EXCEPT FOR THE FACT THAT gEOdEBUGGER'S
  2849. VECTOR AT $0318 GETS TRASHED BY iNITfORio.
  2850.  
  2851. - ON THE c128, iNITfORio DOES NOT SWAP rom IN CORRECTLY (IT IS CHANGING
  2852. LOCATION $0001). sO WHEN IT FORCES THIS nmi TO OCCUR, THE 6510 USES
  2853. THE VECTOR AT b1$fffa OR b0$fffa, AND WE END UP IN THE DEBUGGER.
  2854. tO SOLVE THIS PARTICULAR PROBLEM, i HAVE ADDED CODE TO v2.0 TO POLL
  2855. THE cia2 CHIP AFTER AN nmi OCCURS TO SEE IF IT WAS THE restore KEY OR
  2856. THE cia2 CHIP. iF IT WAS THE cia2 CHIP, gEOdEBUGGER QUICKLY RETURNS
  2857. TO THE APPLICATION.
  2858.  
  2859. hANDLING nmiS FROM THE cia CHIP IN THIS MANNER IS A GOOD IDEA IN GENERAL,
  2860. ON BOTH THE c64 AND THE c128. iT ALLOWS THE USER TO WRITE PROGRAMS WHICH
  2861. USE THE cia2'S nmi CAPABILITY WITHOUT WORRYING ABOUT THE DEBUGGER GETTING
  2862. CONFUSED. bUT NOTE THAT THE USER'S APPLICATION WILL NOT RUN AS EXPECTED:
  2863. ANYTIME THE cia2 GENERATES AN nmi, THE DEBUGGER WILL GET CONTROL, POLL THE
  2864. cia2 TO SEE THAT IT IS RESPONSIBLE, AND WILL RETURN TO THE APPLICATION.
  2865. tHE APPLICATION WILL HAVE NO WAY OF KNOWING THAT AN nmi OCCURRED, SINCE NOT
  2866. ONLY DID WE STEAL THE nmi INTERRUPT, WE ALSO CLEARED THE cia2 INTERRUPT STATUS
  2867. REGISTER JUST BY POLLING IT. tHAT'S LIFE IN THE BIG CITY!
  2868.  
  2869. ;*************************************************************************
  2870. ;dOrBOOT
  2871. ;
  2872. ;tHIS COMMAND DOES WHAT THE "rboot" ICE MACRO DOES: IT PULLS THE ENTIRE
  2873. ;geos KERNAL IN FROM reu BANK #0.
  2874. ;
  2875. ;tALKED TO dOUG 6/6/88:
  2876. ;iF THE CURRENT DRIVE IS A ram disk WHEN THIS COMMAND IS INVOKED,
  2877. ;THE DESKtOP WILL COME UP OK. tHE DRIVE WHICH IS SELECTED WILL DEPEND
  2878. ;UPON A COPY OF CURdRIVE WHICH IS STORED IN THE reu. (yOU CAN CHANGE
  2879. ;THIS COPY USING sELECTpRINTER FROM THE DESKtOP.)
  2880. ;
  2881. ;iF THE CURRENT DRIVE IS NOT A ram disk WHEN THIS COMMAND IS INVOKED,
  2882. ;THEN THE DESKtOP WILL NOT COME BACK UNTIL THE PHYSICAL DRIVE IS
  2883. ;TURNED OFF AND BACK ON AGAIN.
  2884. ;
  2885. ;tHE ONLY WAY TO IMPROVE THIS WOULD BE FOR THE DEBUGGER TO CALL
  2886. ;eXITtURBO TO LET GO OF THE PHYSICAL DRIVE. bUT SINCE WE ARE NOT
  2887. ;SURE THE eXITtURBO CODE IS STILL IN MEMORY, THAT IS A BAD IDEA.
  2888. ;wE CAN'T CLOSE THE eXITtURBO CODE, BECAUSE IT IS DIFFERENT FOR
  2889. ;EVERY DIFFERENT DISK TYPE.
  2890. ;
  2891.  
  2892. wE MAINTAIN TWO SEPARATE MEMORY POINTERS: pc (ACTUAL PROGRAM COUNTER),
  2893. AND lc (ADDRESS FOR OPEN COMMANDS). eACH POINTER INCLUDES ADDRESS AND
  2894. MEMORY ENVIRONMENT INFORMATION.
  2895.  
  2896. nEW COMMANDS:
  2897.  
  2898. superminiUSAGE
  2899. -----------------------------------------------------------------------------
  2900. INITVIEW--COPY pc ADDR AND BANK INFO TO lc
  2901. SETVIEWSVSET lc'S BANK INFO
  2902. VIEWVWDISPLAY CURRENT pc AND lc ADDRESS AND BANK INFO
  2903. USEVIEWUVCHANGE pc'S BANK INFO TO WHAT IS IN lc
  2904. B1B1SAME AS VIEW ($7e,$00)
  2905. B0B0SAME AS VIEW ($3e,$00)
  2906. -----------------------------------------------------------------------------
  2907. SETVIEW, VIEW, AND USEVIEW ARE PRIMITIVES
  2908.  
  2909.  
  2910. POSSIBLE USAGES:
  2911. VIEWING OTHER BANKS AND PROCEEDING FROM OLD pc AND BANK:
  2912. ADDRESSBANK INFO
  2913. --------------- -------------------
  2914. A ADDRESSlc = ADDRESS
  2915. SETVIEW XX,XXlcB = NEW BANK INFO
  2916. A ADDRESS, ETC...lc = ANYTHINGlcB = ANYTHING
  2917. GOUSES pc ADDRESS AND BANK INFO
  2918.  
  2919. SETTING A NEW pc AND BANK:
  2920. ADDRESSBANK INFO
  2921. --------------- -------------------
  2922. VIEW XX,XXlcB = NEW BANK INFO
  2923. PC ADDRESSpc = NEW ADDRpcB = lcB
  2924. - OR -
  2925. PC ADDRESSpc = NEW ADDR
  2926. VIEW XX,XXlcB = NEW BANK INFO
  2927. USEVIEWpcB = lcB
  2928.  
  2929. CHANGING pc'S BANK INFO WITHOUT CHANGING pc ADDRESS
  2930. ADDRESSBANK INFO
  2931. --------------- -------------------
  2932. VIEW XX,XXlcB = NEW BANK INFO
  2933. USEVIEWpcB = lcB
  2934.  
  2935. CHANGING pc ADDRESS WITHOUT CHANGING BANK INFO:
  2936. ADDRESSBANK INFO
  2937. --------------- -------------------
  2938. PClc = pclcB = pc
  2939.  (ONLY REQUIRED IF HAVE CHANGED lc SINCE restore KEY)
  2940. PC NEW ADDRESSpc = NEWpcB = lc
  2941.  
  2942.  
  2943. pOSSIBILITY FOR FUTURE view COMMAND:
  2944. WHEN INVOKED WITHOUT ARGUMENTS, DIPLAYS:
  2945.  
  2946. - split into pc and lc columns - 
  2947.  
  2948. aDDRESS rANGE  rAM bANK vISIBLE  oVERRIDE
  2949. -------------  ----------------  --------
  2950. $fc00 - $ffff1rom
  2951. $f800 - $fbff1rom
  2952. $f000 - $f7ff1rom
  2953. $e000 - $efff1rom
  2954. $d000 - $dfff1i/o
  2955. $c000 - $cfff1
  2956. $b000 - $bfff1
  2957. $a000 - $afff1
  2958. $9000 - $9fff1
  2959. $8000 - $8fff1
  2960. $7000 - $7fff1
  2961. $6000 - $6fff1
  2962. $5000 - $5fff1
  2963. $4000 - $4fff1
  2964. $3000 - $3fff1
  2965. $2000 - $2fff1
  2966. $1000 - $1fff1
  2967. $0800 - $0fff1
  2968. $0400 - $07ff0
  2969. $0000 - $03ff0
  2970.  
  2971. USE PRINT HEX WORD ROUTINE, ADDING $0FFF TO GET RIGHT SIDE
  2972. START INCREMENT AT $0400, OFFSET AT $03ff
  2973. ONCE GET TO $1000, INC = $1000, OFFSET = $0fff
  2974.  
  2975.  
  2976. hOW gEOdEBUGGER MANAGES MACHINE-DEPENDENT
  2977.     MEMORY-MAP ENVIRONMENT INFORMATION
  2978.  
  2979. tHE DEBUGGER CARRIES MEMORY-MAP ENVIRONMENT INFORMATION, WHICH IS MACHINE-
  2980. DEPENDENT, AROUND IN GENERIC VARIABLES SUCH AS APPbANKiNFO1 AND APPbANKiNFO2.
  2981. tHIS WAY, THE ROUTINES WHICH JUST MOVE THIS INFORMATION AROUND (BUT DON'T
  2982. DIRECTLY USE IT) ARE MACHINE-INDEPENDENT.
  2983.  
  2984. eXECUTION eNVIRONMENT:
  2985.  
  2986. wHEN THE DEBUGGER STOPS EXECUTION OF AN APPLICATION (restore PRESSED OR
  2987. sbp HIT), THE USER'S "EXECUTION ENVIRONMENT" IS SAVED. tHIS INCLUDES:
  2988.  
  2989. PROCESSOR REGISTER AND FLAG VALUES
  2990. pc ADDRESS
  2991. CURRENT BANK INFORMATION
  2992. ZERO PAGE VARIABLES
  2993. STACK INFORMATION
  2994.  
  2995. wE CALL THE pc ADDRESS AND ITS MEMORY-MAP INFORMATION THE "eXECUTION
  2996. eNVIRONMENT" OR MORE SIMPLY, THE "pc POINTER".
  2997.  
  2998. vIEWING eNVIRONMENT:
  2999.  
  3000. oNCE THE DEBUGGER HAS STOPPED AN APPLICATION, THE "VIEWING ENVIRONMENT" IS THE
  3001. SAME AS THE "EXECUTION ENVIRONMENT". tHIS MEANS THAT ALL OF THE MEMORY
  3002. EXAMINATION AND MODIFICATION COMMANDS USE THE SAME MEMORY-MAP INFORMATION AS
  3003. THE eXECUTION eNVIRONMENT.
  3004.  
  3005. tHROUGH USE OF THE setview COMMAND, THE VIEWING ENVIRONMENT CAN BE CHANGED.
  3006. yOU CAN SET UP A NEW MEMORY-MAP CONFIGURATION, AND THEN USE THE MEMORY
  3007. EXAMINATION AND MODIFICATION COMMANDS TO READ/WRITE MEMORY IN THIS NEW
  3008. CONFIGURATION.
  3009.  
  3010. wHEN YOU GIVE THE go COMMAND TO RESUME EXECUTION, THE DEBUGGER RESTORES THE
  3011. EXECUTION ENVIROMENT, AND YOUR PROGRAM CONTINUES EXECUTION.
  3012.  
  3013. wE CALL THE VIEWING ADDRESS AND ITS ENVIRONMENT THE "lc POINTER".
  3014.  
  3015. -------------------------------------------------------------------------------
  3016. aSPECTS OF gEOdEBUGGER WHICH MUST CHANGE ACCORDING TO MACHINE-DEPENDENCIES
  3017. IN v2.0, TO REMAIN COMPATIBLE WITH v1.0. (kILL THESE IN v3.0.)
  3018.  
  3019. rEGISTER COMMAND:
  3020. DISPLAYS pc ADDRESS, HIGHLIGHTS ADDRESS IF EFFECTIVE ADDRESS OF
  3021. pc (CONSIDERING pc BANK INFO) IS BANK 0.
  3022.  
  3023. DISPLAYS cpu_data VALUE (iT REALLY SHOULD NOT DO THIS ANYMORE,
  3024. BUT i AM TRYING TO MAINTAIN COMPATABILITY WITH v1.
  3025.  
  3026. 64:READ DIRECTLY FROM APPbANKiNFO1
  3027.  
  3028. 128:[7-3,0]: DIRECT READ FROM MEMORY
  3029. [21]: SHADOW WITH APPcpu_b21
  3030.  
  3031. rEGISTER oPEN cOMMAND:
  3032. ..INCLUDES mm REGISTER: IS cpu_data. (tO BE COMPATIBLE WITH v1)
  3033. 64:DIRECTLY READ/WRITE TO APPbANKiNFO1
  3034.  
  3035. 128:[7-3,0]: DIRECTLY r/w TO MEMORY
  3036. [21]: SHADOW WITH APPcpu_b21
  3037.  
  3038. -------------------------------------------------------------------------------
  3039. aSPECTS OF gEOdEBUGGER WHICH ARE MACHINE-INDEPENDENT.
  3040.  
  3041. mEMORY EXAMINATION AND MODIFICATION:
  3042. BANK COMMAND:AFFECTS lc'S BANK INFO: CURbANKiNFO1 AND CURbANKiNFO2
  3043.  
  3044. OPEN MODES:USES lc'S BANK INFO
  3045. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  3046.  
  3047. DUMP COMMAND:USES lc'S BANK INFO
  3048. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  3049.  
  3050. MOVE/FILL/DIFF/FIND:USES lc'S BANK INFO
  3051. HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
  3052.  
  3053. @ AND @@ OPERATORS:USES lc'S BANK INFO
  3054.  
  3055. sINGLE AND tOP-STEP BREAKPOINTS:
  3056. MAINTAIN THEIR OWN BANK INFORMATION
  3057. (COPIED FROM pc BANK INFO BEFORE EXECUTION BEGUN)
  3058.  
  3059. sOFTWARE bREAKPOINTS:
  3060. MAINTAIN THEIR OWN BANK INFORMATION
  3061. (COPIED FROM pc BANK INFO BEFORE EXECUTION BEGUN)
  3062.  
  3063. pc COMMAND:
  3064. WITHOUT ARGUMENT:COPY pc ADDRESS AND BANK INFO TO lc
  3065. (RESTORES EXECUTION ENVIRONMENT)
  3066.  
  3067. WITH ARGUMENT: (SAME AS SETTING pc IN OPEN MODE)
  3068. SET pc ADDRESS = ARGUMENT
  3069. SET pc BANK INFO = lc BANK INFO
  3070.  
  3071. wOULD BE NICE:
  3072.  
  3073. v3.0: MAKE reu SUPER MONITOR HAVE OPTION TO USE 32k BACKRAM FOR SYMBOL TABLE...
  3074.  
  3075. wOULD BE COOL IF DEBUGGER COULD CHECKSUM RAM EXPANSION TO SEE IF IS
  3076. ALREADY UP THERE (SO COULD ASSEM, LINK, DEBUG, ASSEM, LINK, DEBUG
  3077. REALLY QUICKLY WHEN GEOdEBUG IS ON DISK, AND NOT ON RAMDISK). 
  3078.  
  3079. wHY NOT WAIT TILL JUST AFTER INTERRUPT CODE RUNS TO DISABLE
  3080. INTERRUPTS BEFORE GOING TO USER'S CODE? wOULD FLICKER A BIT LESS.
  3081.  
  3082. wARN USER IF WHEN WE BREAK HIS sp IS SO LOW THAT MONITOR CODE WILL WRAP
  3083. IT AROUND...
  3084.  
  3085. iF nmi COULD REALIZE WHAT IT INTERRUPTED AND COULD MAKE REPAIRS SO
  3086. A go WOULD NOT CRASH US.
  3087.  
  3088. iF THE TOP-STEP COMMAND COULD RECOGNIZE CALLS TO MOST OF THE geos INLINE
  3089. ROUTINES AND STOP AND WARN THE USER WHAT IS ABOUT TO HAPPEN.
  3090.  
  3091. bEGIN AND eND STRUCTURES IN MACROS. iF AND FOR MACROS COULD SKIP TO
  3092. NEXT "END". mIGHT EVEN ADD COUNTER SO COULD BE SEVERAL LEVELS DEEP.
  3093.  
  3094. cLEAN UP ENTIRE S/T/P/GO CONDITIONED/LEAP-FROGGED STRUCTURE
  3095. cLEAN UP ENTIRE OPEN MODE THING
  3096. cLEAN UP MOVE/DIFF/FILL/FIND
  3097.  
  3098. aDD INTELLIGENCE TO PARSE MACRO SO THAT IF ARGS ARE THERE BUT NOT
  3099. EXPECTED, GENERATES ERROR.
  3100. ALLOW MACRO DEFS WHICH ARE BIGGER THAN SIZE OF INPUT BUFFER?
  3101. (ESPECIALLY WHEN LOADING FROM FILE.)
  3102.