├── LICENSE ├── README.md ├── WW6_2500AD ├── BITMAP.ASM ├── BPRINT.ASM ├── BUFFERS.ASM ├── CALCULA.ASM ├── CATALOG.ASM ├── CONFIG.ASM ├── DATA.ASM ├── DICTION.ASM ├── DISPATCH.ASM ├── DISPLAY.ASM ├── EDITLN.ASM ├── ENDMOD.ASM ├── FONTWIND.ASM ├── FORMAT.ASM ├── GPRINT.ASM ├── HELP.ASM ├── IMAGE.ASM ├── IMG.ASM ├── INBOOT.ASM ├── KEYMAP.ASM ├── KREAD.ASM ├── LOADER.ASM ├── MINIDB.ASM ├── MLIB.ASM ├── MOVERTNS.ASM ├── OUTLN.ASM ├── OUTLNJMP.ASM ├── OVERLAY.ASM ├── PART1.ASM ├── PART2.ASM ├── PART3.ASM ├── POINTERM.ASM ├── PRINT.ASM ├── PRTCODE.ASM ├── SPRITE.ASM ├── STACK.ASM ├── SUPPORT.ASM ├── THESRUS.ASM ├── THS.ASM ├── THSCODE.ASM ├── VARIABLS.ASM ├── WDLINK.LNK ├── WINDOW.ASM ├── WORDDATA ├── WORDWRIT ├── WW.ASM ├── WWBOOT.ASM ├── WWDATA.ASM ├── WWLINK.LNK ├── WWSETUP.ASM ├── WW_ORIGINAL.ASM ├── conversion.json └── convert.bat ├── WW6_ACME ├── .vscode │ └── tasks.json ├── BITMAP.ASM ├── BPRINT.ASM ├── BUFFERS.ASM ├── CALCULA.ASM ├── CATALOG.ASM ├── CONFIG.ASM ├── DATA.ASM ├── DICTION.ASM ├── DISPATCH.ASM ├── DISPLAY.ASM ├── EDITLN.ASM ├── ENDMOD.ASM ├── FONTWIND.ASM ├── FORMAT.ASM ├── GPRINT.ASM ├── HELP.ASM ├── IMAGE.ASM ├── IMG.ASM ├── INBOOT.ASM ├── KEYMAP.ASM ├── KREAD.ASM ├── LOADER.ASM ├── MINIDB.ASM ├── MLIB.ASM ├── MOVERTNS.ASM ├── OUTLN.ASM ├── OUTLNJMP.ASM ├── OVERLAY.ASM ├── PART1.ASM ├── PART2.ASM ├── PART3.ASM ├── POINTERM.ASM ├── PRINT.ASM ├── PRTCODE.ASM ├── SPRITE.ASM ├── STACK.ASM ├── SUPPORT.ASM ├── THESRUS.ASM ├── THS.ASM ├── THSCODE.ASM ├── VARIABLS.ASM ├── WINDOW.ASM ├── WW.ASM ├── WWBOOT.ASM ├── WWDATA.ASM ├── WWSETUP.ASM ├── WW_ORIGINAL.ASM ├── asm.bat ├── build │ ├── createDiskWithOverlays.bat │ └── extractOverlays.ps1 ├── rundisk.bat ├── runww6data.bat └── runww6outln.bat ├── bin ├── acme.exe ├── exobasic.exe ├── exomizer.exe ├── pucrunch.exe ├── vice_readme.txt └── win │ └── acme.exe └── docs └── Word_Writer_6_Users_Manual_1991_Timeworks_Inc.pdf /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Jeff Lomax 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # word-writer-6-commodore-64 2 | Word Writer 6 for the Commodore 64 Source Code - 6502 Assembly Language (C) 1983 - 1991 3 | 4 | This is the source code to Word Writer 6 for the Commodore 64 published by Timeworks. 5 | 6 | Word Writer was originally written in the 2500AD Cross Assembler. That source is included in the WW6_2500AD folder. Running the 2500AD assembler is not feasible today so the source code has been converted using [Convert To ACME](https://github.com/jefflomax/converttoacme) to the free ACME Cross Assembler, available on Windows, MacOS, and Linux. The converted code is in WW6_ACME. 7 | 8 | ## Setup 9 | The easy way to start is to setup using the [acme-assembly-vscode-template](https://github.com/Esshahn/acme-assembly-vscode-template). This will include the ACME assembler in the bin folder. A slightly modified tasks.json file from the template is included in this repo. 10 | 11 | ### Folder Structure 12 | ``` 13 | C:\Tools\VICE ( VICE emulator ) 14 | \bin\win\acme.exe 15 | \bin\mac\acme 16 | \bin\linux\acme 17 | \converttoacme (publish the .NET Core 3 Convert To ACME here is you wish to re-run the conversion to ACME) 18 | \WW6_2500AD 19 | Original .ASM Files 20 | convert.bat 21 | \WW6_ACME 22 | Converted .ASM Files 23 | asm.bat (assemble ww6outln.prg and ww6data.prg) 24 | lst.bat (create a source listing) 25 | runww6data.bat (run Word Writer 6 built with the Mini Database overlay) 26 | runww6outln.bat (run Word Writer 6 built with the Outliner overlay) 27 | rundisk.bat (run Word Writer 6 from a D64 file including the program and both overlays) 28 | \WW6_ACME\build 29 | extractOverlays.ps1 (open the built Word Writer programs and extract the overlays) 30 | createDiskWithOverlays.bat (create a D64 disk of WW6 and the two overlays) 31 | \WW6_ACME\.vscode 32 | tasks.json (Visual Studio Code CTRL-SHIFT-B build file to assemble and run) 33 | ``` 34 | 35 | ## Assembling and running 36 | To assemble and run Word Writer 6, have WWDATA.ASM the current file in Visual Studio Code (Mini DB overlay included) or WW.ASM as the current file (Outliner overlay included) and press CTRL-SHIFT-B. This will assemble and launch just the program in VICE. 37 | 38 | ## Creating a disk with overlays 39 | * Run asm.bat to assemble Word Writer 6 versions with both overlays. 40 | * In the Build folder, run extractOverlays.ps1 (tested only on Windows 10). This will parse the symbol files (labels, labelsd) determine the location of the overlay in each file, and write out ov1.prg and ov2.prg. 41 | * In the Build folder, run createDiskWithOverlays.bat. This will use VICE to create TEST.D64 including ww6 and the two overlays 42 | * Run rundisk.bat to launch VICE, attach TEST.D64, and run Word Writer 6. 43 | 44 | 45 | -------------------------------------------------------------------------------- /WW6_2500AD/BUFFERS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE BUFFERS 3 | ; 4 | PW 92 5 | ; 6 | PUBLIC BPCODES ;ONLY NEEDED DURING TEXT PRINT 7 | PUBLIC BOT_SIZE 8 | PUBLIC FAKE_FONT_HEADER 9 | PUBLIC FILENAME_LOC 10 | PUBLIC FONT_BUFFER 11 | PUBLIC FONT_START 12 | PUBLIC GFNAME_SAVE 13 | PUBLIC GRAPHIC_RASTER_BUFFER 14 | PUBLIC GRAPHIC_TEXT_LINE 15 | PUBLIC LINE_BUFFER 16 | PUBLIC LINE_BUFFER_E 17 | PUBLIC LINE_SIZE 18 | PUBLIC L_BUFFER_DEPTH 19 | PUBLIC PATTERN_BYTES 20 | PUBLIC PLINE_BUFFER 21 | PUBLIC PRINT_WORK_SPACE 22 | PUBLIC TAB_TABLE 23 | ; 24 | INCLUDE WWSETUP.ASM 25 | INCLUDE VARIABLS.ASM 26 | ; 27 | L_BUFFER_DEPTH: EQU 15+38 28 | ; 29 | B_BUFFER_DEPTH: EQU 15 30 | ; 31 | FONT_BUFFER: EQU $8000 32 | FONT_START: EQU $8000 33 | ; 34 | .IFTRUE DEBUGGER_PRESENT 35 | ; 36 | LINE_BUFFER: EQU $D400 ;$C600 37 | ; DS L_BUFFER_DEPTH*960/8 38 | LINE_BUFFER_E: EQU LINE_BUFFER+L_BUFFER_DEPTH*960/8 39 | ; DS B_BUFFER_DEPTH*960/8 40 | LINE_BUFFER_D: EQU LINE_BUFFER_E+B_BUFFER_DEPTH*960/8 41 | ; DB 00 ;FUDGE 42 | ; 43 | LINE_SIZE: EQU LINE_BUFFER_E-LINE_BUFFER 44 | BOT_SIZE: EQU LINE_BUFFER_D-LINE_BUFFER_E 45 | ; 46 | FAKE_FONT_HEADER: EQU $F500 47 | PRINT_WORK_SPACE: EQU $9000 ;#WATCH LARGE FONTS!!!! 48 | ; 49 | PLINE_BUFFER: EQU $C000 50 | ; DS 120*8 51 | GRAPHIC_RASTER_BUFFER: EQU $C500 52 | ; DS 120 53 | GRAPHIC_TEXT_LINE: EQU $CF00 54 | ; 55 | .ELSE 56 | ; 57 | GRAPHIC_RASTER_BUFFER: EQU $BE80 58 | GRAPHIC_TEXT_LINE: EQU $BF00 59 | PLINE_BUFFER: EQU $BFF1 60 | LINE_BUFFER: EQU $C3B1 61 | LINE_BUFFER_E: EQU LINE_BUFFER+L_BUFFER_DEPTH*960/8 62 | LINE_BUFFER_D: EQU LINE_BUFFER_E+B_BUFFER_DEPTH*960/8 63 | LINE_SIZE: EQU LINE_BUFFER_E-LINE_BUFFER 64 | BOT_SIZE: EQU LINE_BUFFER_D-LINE_BUFFER_E 65 | FAKE_FONT_HEADER: EQU $E392 66 | PRINT_WORK_SPACE: EQU $E600 67 | ; 68 | .ENDIF 69 | ; 70 | ; 71 | BPCODES: 72 | PATTERN_BYTES: EQU BPCODES+48 73 | ;TOTAL_CODES 6 BYTE BINARY PRINTER CODES, $FF TERMINATED 74 | ;# 75 | ;NEED TO PUT THESE DAMN THINGS SOMEWHERE, PERHAPS $FF00 76 | ;CANNOT USE EDIT_LINE, JBUFF, MAYBE CBUF2? 77 | ; 78 | DB $FF,$FF,$FF,$FF,$FF,$FF ;BP + 0 DISK STATUS 79 | DB $FF,$FF,$FF,$FF,$FF,$FF ;6 80 | DB $FF,$FF,$FF,$FF,$FF,$FF ;12 81 | DB $FF,$FF,$FF,$FF,$FF,$FF ;18 82 | DB $FF,$FF,$FF,$FF,$FF,$FF ;24 83 | DB $FF,$FF,$FF,$FF,$FF,$FF ;36 84 | DB $FF,$FF,$FF,$FF,$FF,$FF ;42 85 | DB $FF,$FF,$FF,$FF,$FF,$FF ;BP + 48 86 | DB $FF,$FF,$FF,$FF,$FF,$FF 87 | DB $FF,$FF,$FF,$FF,$FF,$FF 88 | DB $FF,$FF,$FF,$FF,$FF,$FF 89 | DB $FF,$FF,$FF,$FF,$FF,$FF 90 | DB $FF,$FF,$FF,$FF,$FF,$FF 91 | DB $FF,$FF,$FF,$FF,$FF,$FF 92 | GFNAME_SAVE: 93 | DB $FF,$FF,$FF,$FF,$FF,$FF 94 | DB $FF,$FF,$FF,$FF,$FF,$FF 95 | DB $FF,$FF,$FF,$FF,$FF,$FF 96 | TAB_TABLE: 97 | DB 10, 20, 30, 40, 50,$FF ;TABS 98 | ; 99 | DB $FF ;FILLER OR TAB END 100 | ; 101 | END 102 | ; 103 | -------------------------------------------------------------------------------- /WW6_2500AD/CATALOG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE CATALOG 3 | PAGE 4 | ; 5 | ; 6 | CATLOG: 7 | JSR CLALL 8 | LDA #2 9 | LDX #CATD 11 | JSR SETNAM 12 | LDA #2 13 | JSR XDEVICEN 14 | LDY #0 15 | JSR OPENE1 16 | JSR CHNL2I 17 | ; 18 | LDX #4 19 | BNE DLOOP ;LINE LINK 20 | OLOOP: 21 | JSR GETX ;DISK NAME 22 | LDX #$02 23 | DLOOP: 24 | JSR PULLX ;LINE LINK 25 | JSR SIZE ;BLOCKSIZE 26 | JMP OLOOP ;FNAME 27 | ; 28 | GETX: 29 | JSR CHNL2I 30 | JSR CHRIN 31 | LDX $90 ;STATUS 32 | BNE CRALF 33 | PHA 34 | JSR CLRCHN 35 | PLA 36 | BEQ CRALF ;CR/LF STOP KEY 37 | ; 38 | JSR CHROUT 39 | JMP GETX 40 | ; 41 | ABORT: 42 | PLA 43 | PLA 44 | ; JSR CLRCHN 45 | ;*NOTE* THIS MAY BE COMPLETELY UNNEC, CLOSE2 DOES CLRCHN AFTER... 46 | JMP CLOSE2 47 | ; 48 | CRALF: 49 | ; 50 | LDA CURRENT_KEY 51 | CMP #$BE ;COMM-V? 52 | BNE ?CRLF 53 | ; 54 | LDY #26 ;FILE-TYPE POSITION (LETTER) 55 | LDA ($D1),Y ;SCREEN ROW 56 | CMP #7 ;SEQ FILE? 57 | BNE ?CRLF 58 | LDA #0 59 | STA $D3 60 | BEQ ?JOIN 61 | ; 62 | ?CRLF: 63 | JSR CRLF 64 | ; 65 | ?JOIN: 66 | JSR GETIN1 67 | CMP #3 68 | BEQ ABORT 69 | JMP CHNL2I 70 | ; 71 | PULLX: 72 | JSR CHRIN ;THROW AWAY .X 73 | DEX ;DISK CHARACTERS 74 | BNE PULLX 75 | RTS 76 | ; 77 | SIZE: 78 | JSR CHNL2I ;INPUT CHANNEL 79 | JSR CHRIN ;PRINT BLOCK SIZE 80 | STA TEMP0 81 | JSR CHRIN 82 | LDY TEMP0 83 | LDX $90 84 | BNE ABORT 85 | JSR COUT 86 | JSR CLRCHN 87 | LDY #0 ;ALL POSITIVE,NO SPACE 88 | CALOOP: 89 | LDA $100,Y 90 | BEQ CALOO1 91 | JSR CHROUT 92 | INY 93 | BNE CALOOP 94 | CALOO1: 95 | RTS 96 | ; 97 | ; 98 | END 99 | ; 100 | -------------------------------------------------------------------------------- /WW6_2500AD/CONFIG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE CONFIGURATION_WINDOWS 3 | PW 80 4 | ; 5 | ; LOCATIONS FOR INSTALL PROGRAM 6 | ; 7 | ; TXCOLR: IS TEXT COLOR 0..15 8 | ; STCOLR: IS PROMPT COLOR 0..15 9 | ; BDRBAK: IS BORDER & BACKGOUND COLOR 0..15 10 | ; BE SURE BDRBAK IS NOT EQUAL TO TXCOLR OR STCOLR! 11 | ; 12 | ; FLASHING_CURSOR: IS 0 FOR SOLID, 1 FOR FLASHING 13 | ; 14 | ; ALL D_ VARIABLS ARE FROM THE PRINTER DRIVER, SEE GD_MX80 15 | ; FILE. 16 | ; 17 | .LIST OFF 18 | INCLUDE WWSETUP.ASM 19 | INCLUDE VARIABLS.ASM 20 | ; 21 | COMMODORE: EQU 0 22 | EPSON: EQU 1 23 | EPSON_80DPI: EQU 0 24 | EPSON_24: EQU 0 25 | ; 26 | PUBLIC BDRBAK 27 | PUBLIC BLNKSCRN 28 | PUBLIC CHNPAG 29 | PUBLIC CMACST 30 | PUBLIC COLORS 31 | PUBLIC DEVICE 32 | PUBLIC DRIVE 33 | ; 34 | PUBLIC D_CLEAR_TB_MARGIN 35 | PUBLIC D_PIXELS_PER_INCH 36 | PUBLIC D_PIXELS_PER_LINE 37 | PUBLIC D_VERTICAL_PIXELS_LETTER 38 | PUBLIC D_VERTICAL_PIXELS_LEGAL 39 | PUBLIC D_VERTICAL_PIXELS_INCH 40 | PUBLIC D_FUTURE_EXPANSION 41 | ; 42 | PUBLIC INSERTM 43 | PUBLIC FLASHING_CURSOR 44 | PUBLIC KEY_RECORD_BUFFER 45 | PUBLIC MACRO_1_START 46 | PUBLIC MACRO_1_END 47 | PUBLIC MACRO_2_START 48 | PUBLIC MACRO_2_END 49 | PUBLIC MACRO_LIMIT 50 | PUBLIC PCBOX 51 | PUBLIC PCSTART 52 | PUBLIC PRTDRP 53 | PUBLIC PRTLST 54 | PUBLIC PW_S_PRINT_GRAPHICS 55 | PUBLIC PW_S_EJECT_PAGE 56 | PUBLIC PW_S_MERGE_NAMES 57 | PUBLIC PRTWIN_TOPMAR 58 | PUBLIC PRTWIN_BOTMAR 59 | PUBLIC PG_LENGTH 60 | PUBLIC STCOLR 61 | PUBLIC SAVEPRNT 62 | PUBLIC SAVEPRNTE 63 | PUBLIC SCREEN_CONSTRAIN 64 | PUBLIC SPECIAL_BYTE 65 | PUBLIC CONFIG_TAB_TABLE 66 | PUBLIC TAB_ASCII 67 | PUBLIC TXCOLR 68 | PUBLIC UPPER_CASE_LOCK 69 | PUBLIC WHICH_MACRO 70 | ; 71 | .LIST ON 72 | SAVEPRNT: 73 | ; 74 | DB $FE ;WORD WRITER 4 VERSION FLAG 75 | ; 76 | ; 77 | .IF EPSON 78 | ; 79 | D_PIXELS_PER_INCH: 80 | DW 120 81 | D_PIXELS_PER_LINE: 82 | DW 960 83 | D_VERTICAL_PIXELS_INCH: 84 | DW 72 85 | D_VERTICAL_PIXELS_LETTER: 86 | DW 72*11 87 | D_VERTICAL_PIXELS_LEGAL: 88 | DW 72*14 89 | D_CLEAR_TB_MARGIN: 90 | DB 0 91 | D_FUTURE_EXPANSION: 92 | DB 0 93 | DW 0,0,0,0,0 94 | ; 95 | .ENDIF 96 | ; 97 | ; 98 | .IF EPSON_80DPI 99 | ; 100 | D_PIXELS_PER_INCH: 101 | DW 80 102 | D_PIXELS_PER_LINE: 103 | DW 640 104 | D_VERTICAL_PIXELS_INCH: 105 | DW 72 106 | D_VERTICAL_PIXELS_LETTER: 107 | DW 72*11 108 | D_VERTICAL_PIXELS_LEGAL: 109 | DW 72*14 110 | D_CLEAR_TB_MARGIN: 111 | DB 0 112 | D_FUTURE_EXPANSION: 113 | DB 0 114 | DW 0,0,0,0,0 115 | ; 116 | .ENDIF 117 | ; 118 | ; 119 | .IF COMMODORE 120 | ; 121 | D_PIXELS_PER_INCH: 122 | DW 60 123 | D_PIXELS_PER_LINE: 124 | DW 480 125 | D_VERTICAL_PIXELS_INCH: 126 | DW 64 127 | D_VERTICAL_PIXELS_LETTER: 128 | DW 64*11 129 | D_VERTICAL_PIXELS_LEGAL: 130 | DW 64*14 131 | D_CLEAR_TB_MARGIN: 132 | DB 0 133 | D_FUTURE_EXPANSION: 134 | DB 0 135 | DW 0,0,0,0,0 136 | ; 137 | .ENDIF 138 | ; 139 | .IF EPSON_24 140 | ; 141 | D_PIXELS_PER_INCH: 142 | DW 120 143 | D_PIXELS_PER_LINE: 144 | DW 960 145 | D_VERTICAL_PIXELS_INCH: 146 | DW 90 147 | D_VERTICAL_PIXELS_LETTER: 148 | DW 90*11 149 | D_VERTICAL_PIXELS_LEGAL: 150 | DW 90*14 151 | D_CLEAR_TB_MARGIN: 152 | DB 0 153 | D_FUTURE_EXPANSION: 154 | DB 0 155 | DW 0,0,0,0,0 156 | ; 157 | .ENDIF 158 | ; 159 | ; 160 | PRTDRP: 161 | DB 18 162 | DB $FF,64,16 163 | DB ' PRINTER OPTIONS ' 164 | DB $FF,32,16 165 | PRTLST: EQU $+14 166 | PW_S_PRINT_GRAPHICS: EQU $+14 167 | ; 123456 7 89012345 168 | DB 'A)PRIN','T'-64,'FONTS N' 169 | DB 'B)NUMBE','R'-64,'PAGES N' 170 | BLNKSCRN: EQU $+14 171 | DB 'C)BLAN','K'-64,'SCREEN N' 172 | PW_S_EJECT_PAGE: EQU $+14 173 | DB 'D)EJEC','T'-64,'PAGE Y' 174 | DB 'E)LINEFEED','S'-64,' N' 175 | CMACST: EQU $+14 176 | DB 'F)NORMA','L'-64,'ASCII Y' 177 | CHNPAG: EQU $+14 178 | DB 'G)LINKE','D'-64,'PRINT N' 179 | PW_S_MERGE_NAMES: EQU $+14 180 | DB 'H)MERG','E'-64,'NAMES N' 181 | DB 'I)SHEE','T'-64,'FEED N' 182 | DB 'J)OPE','N'-64,'4,4,? 07' 183 | PRTWIN_TOPMAR: EQU $+13 184 | DB 'K)TO','P'-64,'MARGIN 04' 185 | PRTWIN_BOTMAR: EQU $+13 186 | DB 'L)BO','T'-64,'MARGIN 04' 187 | PG_LENGTH: EQU $+13 188 | DB 'M)PAG','E'-64,'LENGTH 66' 189 | DB 'N)NUMBE','R'-64,'FROM 01' 190 | DB 'O)# O','F'-64,'COPIES 01' 191 | DB $FF,32,16 192 | DB 'F1= PRIN','T'-64,'PREVIEW' 193 | DB 'RUNSTOP=EN','D'-64,'PRINT' 194 | DB $FF,64,16,0 195 | ; 196 | PCBOX: 197 | DB 24 198 | DB $FF,64,22 199 | DB $FF,32,4,'PRINTER CODES',$FF,32,4 200 | DB $FF,32,22 201 | PCSTART: EQU $+2 202 | DB 'U'+$80,' 27,45,1-UNDERLINE ON ' 203 | DB 'U'+$40,' 27,45,0 ' 204 | DB 'B'+$80,' 27,69-BOLD ON ' 205 | DB 'B'+$40,' 27,70 ' 206 | DB 'I'+$80,' 27,52-ITALICS ON ' 207 | DB 'I'+$40,' 27,53 ' 208 | DB $DB,' 27,83,0-SUPERSCRPT ON' 209 | DB $AB,' 27,84 ' 210 | DB $C0,' 27,83,1-SUBSCRIPT ON ' 211 | DB $AD,' 27,84 ' 212 | DB 'W'+$80,' USER DEFINED 1 ON ' 213 | DB 'W'+$40,' ' 214 | DB 'X'+$80,' USER DEFINED 2 ON ' 215 | DB 'X'+$40,' ' 216 | DB 'Y'+$80,' USER DEFINED 3 ON ' 217 | DB 'Y'+$40,' ' 218 | DB '* GLOBAL CODE ' 219 | DB TABCHAR,' ' 220 | TAB_ASCII: 221 | ; 123456789012345678901 222 | DB '10,20,30,40,50 ' 223 | DB $FF,32,22 224 | DB $FF,64,22,0 225 | ; 226 | COLORS: 227 | TXCOLR: DB 14 228 | STCOLR: DB 3 229 | BDRBAK: DB 0 230 | DEVICE: DB 8,8,8 231 | DRIVE: DB 0,0,0 232 | ; 233 | FLASHING_CURSOR: 234 | DB 1 235 | ; 236 | INSERTM: 237 | DB $80 238 | ; 239 | SCREEN_CONSTRAIN: 240 | DB 0 241 | ; 242 | UPPER_CASE_LOCK: 243 | DB 0 244 | ; 245 | SPECIAL_BYTE: 246 | DB 0 ;0=CARDFILE NZ=OUTLINER 247 | ; 248 | CONFIG_TAB_TABLE: 249 | DB 1,2,3,4,5,6 250 | ; 251 | ; 252 | KEY_RECORD_BUFFER: 253 | DB 'THIS PROGRAM IS DEDICATED TO MARK G' 254 | DB 'OLDBERG, VICTOR SCHILLER, NICHOLAS ' 255 | DB 'ALEXANDER, AND THE TIMEWORKS TEAM. ' 256 | DB ' ' 257 | KEY_RECORD_OVER: 258 | LENG: VAR KEY_RECORD_OVER-KEY_RECORD_BUFFER 259 | DS 120-LENG 260 | ; 261 | MACRO_1_START: 262 | DB 0 263 | MACRO_1_END: 264 | DB 0 265 | MACRO_2_START: 266 | DB 1 267 | MACRO_2_END: 268 | DB 1 269 | WHICH_MACRO: 270 | DB 0 271 | MACRO_LIMIT: 272 | DB 0 273 | ; 274 | ; 275 | SAVEPRNTE: 276 | ; 277 | END 278 | ; 279 | 280 | 281 | 282 | 283 | 284 | -------------------------------------------------------------------------------- /WW6_2500AD/DISPLAY.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE DISPLAY_ROUTINES 3 | ; 4 | INCLUDE WWSETUP.ASM 5 | INCLUDE VARIABLS.ASM 6 | PW 91 7 | ; 8 | PUBLIC AD28SC 9 | PUBLIC ADDASM 10 | PUBLIC AD28SM 11 | PUBLIC DISPLY 12 | PUBLIC DISPLAYOFF 13 | PUBLIC DISPLYOFF 14 | PUBLIC DISPLAYON 15 | PUBLIC END_BLOCK 16 | PUBLIC IN_CURRENT_BLOCK 17 | PUBLIC MAXIMUM_LINES 18 | PUBLIC MAXIMUM_LINES_M2 19 | PUBLIC START_BLOCK 20 | PUBLIC START_BLK_1ST_LINE_CHAR 21 | PUBLIC RESET 22 | PUBLIC RESET_1 23 | PUBLIC RESET_AND_DISPLAY 24 | ; 25 | EXTERN DISPLAY_ON_NO_DISPLAY ;EDITLN 26 | EXTERN EDIT_LINE ;EDITLN 27 | ; 28 | .LIST ON 29 | ; 30 | START_BLOCK: 31 | DW 0 32 | END_BLOCK: 33 | DW 0 34 | START_BLK_1ST_LINE_CHAR: 35 | DB 0 36 | MAXIMUM_LINES: ;SCREEN DEPTH 37 | DB 23 38 | MAXIMUM_LINES_M2: EQU 20 39 | ; 40 | DISPLAYOFF: 41 | DISPLYOFF: 42 | LDA #$60 43 | STA DISPLY 44 | RTS 45 | ; 46 | RESET_AND_DISPLAY: 47 | JSR RESET 48 | ; 49 | DISPLAYON: 50 | PHP 51 | ; LDA #$20 52 | ; STA DISPLY 53 | JSR DISPLAY_ON_NO_DISPLAY 54 | JSR DISPLY 55 | PLP 56 | RTS 57 | ; 58 | DISPLY: 59 | JSR TEXOUT 60 | CMP #ENDT 61 | BEQ ?FILL_THE_SCREEN 62 | ; 63 | LDA MAXIMUM_LINES 64 | CMP #23 65 | BCS RESET 66 | LDY #0 67 | STY TMINDX 68 | ; 69 | ?FILL_THE_SCREEN: 70 | JSR FILLSC 71 | RESET: 72 | LDA #VIDEO 75 | STA SCRMO+1 76 | RESET_1: 77 | LDA TEXPAG 78 | STA TEXTMO 79 | LDA TEXPAG+1 80 | STA TEXTMO+1 81 | RTS 82 | ; 83 | CONV_TO_LIT_C: 84 | STY ?CVL_SM1 85 | STX TEMP1 86 | LDY TEMP1 87 | JSR IN_CURRENT_BLOCK 88 | DB $A0 ;LDY # 89 | ?CVL_SM1: 90 | DB $00 91 | JMP RE_ENTER_C 92 | ; 93 | CLEAR_REMAINING_LINE: 94 | LDY #0 95 | JSR FILLLN1 96 | JMP NXTLIN 97 | ; 98 | TEXOUT: 99 | ;LDX #23 ;TEMP0 COUNTS 100 | LDX MAXIMUM_LINES ;TEMP0 COUNTS 101 | STX TEMP0 ;DOWN THE SCREEN LINES 102 | COUNT9: 103 | SEC 104 | ;LDA #23 ;#LINES PER SCREEN 105 | LDA MAXIMUM_LINES ;#LINES PER SCREEN 106 | SBC CURRENT_SCREEN_LINE 107 | CMP TEMP0 ;ARE WE ON THE LINE BEING EDITED? 108 | BNE REGULAR_LINE 109 | ; 110 | LDY #0 111 | STY TMINDX 112 | ; 113 | LDX COUNT ;IF CHARACTERS TO SKIP > LL THEN CLEAN OUT LINE 114 | CPX CHARS_IN_LINE 115 | BCS CLEAR_REMAINING_LINE 116 | ; 117 | LINE_LOOP: 118 | LDA EDIT_LINE,X 119 | BMI END_LINE 120 | LINE_LOOP1: 121 | BIT MOVE_COPY_HL 122 | BMI CONV_TO_LIT_C 123 | RE_ENTER_C: 124 | ; 125 | STA (SCRMO),Y 126 | INX 127 | INY 128 | CPY #$28 129 | BCC LINE_LOOP 130 | STY TMINDX 131 | JMP NXTLIN ;PROCESS END-OF-LINE 132 | ; 133 | END_LINE: 134 | ; 135 | CMP #ENDT 136 | BCC LINE_LOOP1 137 | ; 138 | STY TMINDX 139 | BNE END_OF_LINE 140 | ; 141 | LDA #ENDT 142 | RTS 143 | ; 144 | ; 145 | REGULAR_LINE: 146 | ; 147 | LDY #0 148 | STY TMINDX 149 | ; 150 | LDX COUNT 151 | BEQ COLUM01 152 | ; 153 | COUNT0: 154 | LDA (TEXTMO),Y 155 | BMI SUBR1 156 | COUNT1: 157 | INY 158 | DEX 159 | BNE COUNT0 160 | COLUM: 161 | ; 162 | TYA 163 | CLC 164 | ADC TEXTMO 165 | STA TEXTMO 166 | BCC ?SKP 167 | INC TEXTMO+1 ;ADJUST TEXTMO TO POINT AT FIRST USABLE CHAR 168 | ?SKP: 169 | LDY #0 170 | COLUM01: 171 | LDX #40 172 | ; 173 | COLUM0: 174 | LDA (TEXTMO),Y 175 | BMI SUBR2 176 | COLUM1: 177 | ; 178 | BIT MOVE_COPY_HL 179 | BMI CONV_TO_LIT 180 | RE_ENTER_REG: 181 | STA (SCRMO),Y 182 | ; 183 | INY 184 | DEX 185 | BNE COLUM0 186 | STY TMINDX 187 | ; 188 | NXTLIN: 189 | JSR FINDTX 190 | CMP #ENDT 191 | BEQ LSTLIN 192 | DEC TEMP0 193 | BNE COUNT9 194 | LSTLIN: 195 | RTS 196 | ; 197 | SUBR1: 198 | CMP #ENDT ;/ 199 | BCC COUNT1 200 | BEQ LSTLIN 201 | LDY #0 ;NO CHARACTERS FOR THIS LINE 202 | SUBR11: 203 | ; 204 | SUBR15: 205 | JSR FILLLN 206 | JMP NXTLIN 207 | ; 208 | SUBR2: 209 | CMP #ENDT ;DID WE END WITH EOT? 210 | BCC COLUM1 211 | STY TMINDX 212 | BEQ LSTLIN 213 | ; 214 | END_OF_LINE: 215 | CMP #RETURN 216 | BNE SUBR11 ;SOFT RETURN 217 | STY TMINDX ;TMINDX=TMINDX+1 218 | ; 219 | LDA #31 ;HARD RETURN SYMBOL 220 | STA (SCRMO),Y 221 | ; 222 | INY 223 | JSR FILLLN 224 | JMP NXTLIN 225 | ; 226 | ; 227 | CONV_TO_LIT: 228 | JSR IN_CURRENT_BLOCK 229 | JMP RE_ENTER_REG 230 | ; 231 | IN_CURRENT_BLOCK: 232 | ;(REGULAR LINE CALL) 233 | PHA ;SAVE .A (CHAR TO EFFECT) 234 | STX TEMP1 ;SAVE .X 235 | ; 236 | CLC 237 | TYA ;INDEX 238 | ADC TEXTMO ;PLUS TEXTMO 239 | LDX TEXTMO+1 240 | BCC ?SKP 241 | INX ;.A,.X = TEXTMO + .Y 242 | ?SKP: 243 | CPX START_BLOCK+1 ;ARE WE ON OR BEYOND START_BLOCK? 244 | BNE ?TST_S_LO 245 | CMP START_BLOCK 246 | BEQ ?IN_BLOCK ;IF .A,.X = START_BLOCK ON 1ST CHAR 247 | ?TST_S_LO: 248 | BCC ?OUT_BLOCK ;IF .A,.X < START_BLOCK BEFORE BLOCK 249 | ; 250 | CPX END_BLOCK+1 251 | BNE ?TST_E_LO 252 | CMP END_BLOCK 253 | BEQ ?IN_BLOCK 254 | ?TST_E_LO: 255 | BCS ?OUT_BLOCK 256 | ; 257 | ?IN_BLOCK: 258 | PLA 259 | EOR #$80 260 | ?END: 261 | LDX TEMP1 262 | RTS 263 | ; 264 | ?OUT_BLOCK: 265 | PLA 266 | LDX TEMP1 267 | RTS 268 | ; 269 | FILLLN: 270 | ; 271 | FILLLN1: 272 | LDA #$60 ;SHIFT SPACE 273 | FILOOP: 274 | STA (SCRMO),Y 275 | INY 276 | CPY #$28 277 | BCC FILOOP 278 | RTS 279 | ; 280 | FINDTX: 281 | ; 282 | ;## POSSIBLE PROBLEMS SKIPPING PAST EOT. MUST OPTIMIZE 283 | ; LDY #0 284 | ;FIREAD: 285 | ; LDA (TEXTMO),Y ;GET CHAR 286 | ; INY 287 | ; CMP #ENDT ;LOOK FOR RETURN 288 | ; BCC FIREAD ;OR EOT 289 | ; BEQ FIOUT ;EXIT W/ENDT 290 | ; 291 | LDY #$FF 292 | ?LOOP: 293 | INY 294 | LDA (TEXTMO),Y 295 | BPL ?LOOP 296 | CMP #ENDT 297 | BCC ?LOOP 298 | BEQ FIOUT 299 | INY 300 | ; 301 | CLC 302 | TYA 303 | ADC TEXTMO 304 | STA TEXTMO 305 | BCC AD28SM 306 | INC TEXTMO+1 307 | AD28SM: 308 | LDA #$28 309 | ADDASM: 310 | CLC 311 | ADC SCRMO 312 | STA SCRMO 313 | BCC FIOUT 314 | INC SCRMO+1 315 | FIOUT: 316 | RTS 317 | ; 318 | FILLSC: 319 | ; 320 | LDY TMINDX 321 | FILLSC0: 322 | LDA #$60 ;SHIFTED SPACE 323 | FILINE: 324 | JSR FILLLN1 325 | JSR AD28SM 326 | LDY #0 327 | ; 328 | LDX SCRMO+1 329 | CPX #7 ;SCRN 330 | BNE FILLSC0 331 | ; 332 | CMP #$D7 ;SCRN 333 | BCC FILLSC0 334 | RTS 335 | ; 336 | AD28SC: 337 | LDA #$28 338 | ADD_A_SCREEN: 339 | CLC 340 | ADC SCREEN 341 | STA SCREEN 342 | BCC ?SKP 343 | INC SCREEN+1 344 | ?SKP: 345 | RTS 346 | ; 347 | ; 348 | END 349 | ; 350 | -------------------------------------------------------------------------------- /WW6_2500AD/FONTWIND.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE FONT_WINDOW 3 | ; 4 | PW 92 5 | INCLUDE WWSETUP.ASM 6 | INCLUDE VARIABLS.ASM 7 | ; 8 | PUBLIC FC_FONT_WINDOW 9 | ; 10 | EXTERN CLR_BACKGROUND 11 | EXTERN CURRENT_CHARACTER_Y 12 | EXTERN AD28SM 13 | EXTERN AX_INTO_MSGOUT 14 | EXTERN BP_MIN_CUR_PAGE_LENGTH 15 | EXTERN BP_PLS_CUR_PAGE_LENGTH 16 | EXTERN BUMP_LINE_PAGE 17 | EXTERN CALCULATE_LINE_LENGTH1 18 | EXTERN CHKNUM 19 | EXTERN CLRBLK 20 | EXTERN DISPLY 21 | EXTERN EDIT_LINE 22 | EXTERN FC_LINE_OUT 23 | EXTERN FC_REFORMAT_FROM_CURSOR 24 | EXTERN FC_SHOW_STATUS 25 | EXTERN FC_WORK_KEY_INS 26 | EXTERN FONT_TABLE_X_INTO_PT 27 | EXTERN FULL_SCREEN 28 | EXTERN INC_PT_BY_1 29 | EXTERN KEYBRD 30 | EXTERN ON_AND_REFREASH 31 | EXTERN OUTMODE 32 | EXTERN PULLDN 33 | EXTERN RESET 34 | EXTERN START_LINE_FONT 35 | EXTERN SWAPXY 36 | EXTERN VID_A_TO_SCRMO 37 | EXTERN WRAP_LINE 38 | EXTERN W_INTO_MSGOUT ;POINTERM 39 | ; 40 | FC_FONT_WINDOW: 41 | ; 42 | LDX OUTMODE 43 | BNE ?NO_FONTS 44 | ; 45 | LDX CURRENT_FONT 46 | BPL ?SKP0 47 | ?NO_FONTS: 48 | RTS 49 | ; 50 | ?SKP0: 51 | JSR CURRENT_CHARACTER_Y 52 | CMP #CMARK 53 | BNE ?CONT 54 | JMP FC_SHOW_STATUS 55 | ; 56 | ?CONT: 57 | STX POINTER3 ;CURRENT_FONT 58 | ; 59 | ; LDA #FONT_BOX 61 | ; JSR AX_INTO_MSGOUT 62 | ; JSR W_INTO_MSGOUT 63 | ; DW FONT_BOX 64 | ; 65 | LDA #12 ;CBOFFSET 66 | JSR PULLDN ;DRAW THE BOX 67 | DW FONT_BOX 68 | ; 69 | ?BIG_LOOP: 70 | LDA #12+1+40+40 71 | JSR VID_A_TO_SCRMO 72 | ; 73 | LDX #0 74 | STX POINTER2 ;COUNTER 1..9 75 | ; 76 | ?OLOOP: 77 | STX POINTER2+1 ;COUNTER 0..2.. 78 | JSR FONT_TABLE_X_INTO_PT ;POINTER = FONT_TABLE,X .Y = NAME 79 | JSR INC_PT_BY_1 80 | LDX #13 81 | ?LOOP: 82 | LDA POINTER2 83 | CMP POINTER3 ;CURRENT_FONT 84 | BEQ ?NEED_80 85 | LDA #$00 86 | DB $2C 87 | ?NEED_80: 88 | LDA #$80 ;$80 OR 0 89 | ; 90 | ORA (POINTER),Y 91 | JSR SWAPXY 92 | STA (SCRMO),Y 93 | JSR SWAPXY 94 | DEY 95 | DEX 96 | CPX #1 97 | BNE ?LOOP 98 | INC POINTER2 99 | ; 100 | LDY #0 101 | LDA POINTER2 102 | CLC 103 | ADC #'0' 104 | CMP #':' 105 | BNE ?SKP 106 | LDA #'0' 107 | ?SKP: 108 | STA (SCRMO),Y 109 | ; 110 | JSR AD28SM 111 | LDX POINTER2+1 ;COUNTER 112 | INX 113 | INX 114 | CPX #20 ;NUMBER OF INSTALLED FONTS/2 115 | BCC ?OLOOP 116 | ; 117 | ?KEYS_IN: 118 | JSR KEYBRD 119 | ; 120 | PHA 121 | JSR CHKNUM 122 | PLA 123 | BCS ?CURS_DOWN 124 | SBC #$30 125 | BPL ?ONE_NINE 126 | LDA #9 127 | ?ONE_NINE: 128 | STA POINTER3 129 | BPL ?FORCE_FONT 130 | ; 131 | ?CURS_DOWN: 132 | CMP #$11 133 | BNE ?CURS_UP 134 | INC POINTER3 135 | LDA POINTER3 136 | CMP #10 137 | BCC ?BIG_LOOP 138 | LDA #0 139 | ?STORE_LOOP: 140 | STA POINTER3 141 | JMP ?BIG_LOOP 142 | ; 143 | ?CURS_UP: 144 | CMP #$91 145 | BNE ?RETURN 146 | DEC POINTER3 147 | LDA POINTER3 148 | BPL ?BIG_LOOP 149 | ?MAKE_END: 150 | LDA #$9 151 | BNE ?STORE_LOOP 152 | ; 153 | ?RETURN: 154 | CMP #$0D 155 | BNE ?KEYS_IN 156 | ; 157 | ?FORCE_FONT: 158 | JSR RESET 159 | ; 160 | LDA POINTER3 ;NEW FONT 161 | LDX CURRENT_CHAR ;DOES THIS UPDATE START_LINE? 162 | BNE ?NO_START_UPDATE 163 | STA START_LINE_FONT ;NEW START LINE FONT 164 | ; 165 | ; 166 | ?NO_START_UPDATE: 167 | CMP #9 ;0..9 = 10 168 | BNE ?SKP1 169 | LDA #$FF 170 | ?SKP1: 171 | CLC 172 | ADC #'1'+$80 173 | JSR FC_WORK_KEY_INS 174 | ; 175 | LDA EDIT_LINE 176 | CMP #CMARK 177 | BEQ ?SKP3 178 | ; 179 | LDA CURRENT_FONT 180 | PHA 181 | ; 182 | JSR BP_MIN_CUR_PAGE_LENGTH 183 | ; 184 | JSR CALCULATE_LINE_LENGTH1 185 | JSR BUMP_LINE_PAGE 186 | ;*MUST FIX* 187 | ; BRK 188 | LDA LINE 189 | CMP #0 190 | BNE ?NO_LINE_CHANGE 191 | INC LINE ;THIS IS FONT MODE ONLY, SPECIAL COND, MAY BE OK 192 | ;*MUST FIX* 193 | JSR FC_LINE_OUT 194 | ; 195 | ?NO_LINE_CHANGE: 196 | PLA 197 | STA CURRENT_FONT 198 | JSR CLR_BACKGROUND 199 | ; 200 | ;JSR DISPLY 201 | ;*NOTE* REMOVED DISPLAY 2/6/91 202 | ;*NOTE* 203 | ; FULL_SCREEN: 204 | ; 205 | ; LDA EDIT_LINE 206 | ; CMP #CMARK 207 | ; BEQ ?SKP3 208 | JSR FC_REFORMAT_FROM_CURSOR 209 | ; 210 | ?SKP3: 211 | JMP FULL_SCREEN 212 | ; 213 | ; 214 | .IF REMOVE_TEXT 215 | FONT_BOX 216 | DB 16 217 | DB 112,$FF,64,13,110 218 | DB 93,$FF,32,3,'FONTS',$FF,32,4,93 219 | DB 93,$FF,32,13,93 220 | DB 93,$FF,32,13,93 221 | DB 93,$FF,32,13,93 222 | DB 93,$FF,32,13,93 223 | DB 93,$FF,32,13,93 224 | DB 93,$FF,32,13,93 225 | DB 93,$FF,32,13,93 226 | DB 93,$FF,32,13,93 227 | DB 93,$FF,32,13,93 228 | DB 93,$FF,32,13,93 229 | DB 109,$FF,64,13,125,0 230 | .ENDIF 231 | ; 232 | ; 233 | FONT_BOX 234 | DB 15 235 | DB $FF,64,13 236 | DB $FF,32,3,'FONTS',$FF,32,4 237 | DB $FF,32,13 238 | DB $FF,32,13 239 | DB $FF,32,13 240 | DB $FF,32,13 241 | DB $FF,32,13 242 | DB $FF,32,13 243 | DB $FF,32,13 244 | DB $FF,32,13 245 | DB $FF,32,13 246 | DB $FF,32,13 247 | DB $FF,64,13,0 248 | ; 249 | ; 250 | END 251 | ; 252 | -------------------------------------------------------------------------------- /WW6_2500AD/HELP.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE HELP_SCREEN 3 | PW 92 4 | ; 5 | INCLUDE WWSETUP.ASM 6 | PUBLIC FC_HELP 7 | ; 8 | EXTERN AX_INTO_MSGOUT 9 | EXTERN FULL_SCREEN 10 | EXTERN KEYBRD 11 | EXTERN PULLDN 12 | EXTERN W_INTO_MSGOUT ;POINTERM 13 | ; 14 | ; 15 | INCLUDE VARIABLS.ASM 16 | ; 17 | ; 18 | FC_HELP: 19 | ; LDA #HELP_BOX 21 | ; JSR AX_INTO_MSGOUT 22 | ; JSR W_INTO_MSGOUT 23 | ; DW HELP_BOX 24 | ; 25 | LDA #6 ;CBOFFSET 26 | JSR PULLDN ;DRAW THE BOX 27 | DW HELP_BOX 28 | JSR KEYBRD 29 | JMP FULL_SCREEN 30 | ; 31 | ; 32 | .BIT7 OFF 33 | ; 34 | HELP_BOX: 35 | ; DB 27 36 | DB 26 37 | DB $FF,64,24 38 | DB $FF,32,9,'HELP!',$FF,32,9 39 | DB $6A 40 | .BIT7 ON 41 | DB 'COMM KEYS' 42 | .BIT7 OFF 43 | DB $74,32,111,32,$6A 44 | .BIT7 ON 45 | DB 'CTRL KEYS' 46 | .BIT7 OFF 47 | DB $74 48 | ; 49 | .IFFALSE DEBUGGER_PRESENT 50 | ; 51 | DB 'BOL','D'-64,'OF','F'-64,' ',$6A 52 | DB 'B'+$80,$74,'BOL','D'-64,'ON',$FF,32,3 53 | ; 54 | ; DB 93,'CAP','S'-64,'LOC','K'-64,' ',$6A 55 | ; DB 'C'+$80,$74,'CLEA','R'-64,'TAB','S'-64,93 56 | ; 57 | DB 'DE','L'-64,'CHA','R'-64,'RT',$6A,'D'+$80,$74,'DELIMITE','R'-64,' ' 58 | ; 59 | DB 'FONT/STYL','E'-64,$6A,'F'+$80,$74,'FON','T'-64,'SELECT' 60 | DB 'GOT','O'-64,'EN','D'-64,' ',$6A 61 | DB 'G'+$80,$74,'GOT','O'-64,'TO','P'-64,' ' 62 | ; 63 | DB 'ITALIC','S'-64,'OFF',$6A,'I'+$80,$74,'ITALIC','S'-64,'O','N'-64 64 | DB 'LOA','D'-64,'DO','C'-64,' ',$6A,'L'+$80,$74,'LOWE','R'-64,'INDEX' 65 | DB 'NEX','T'-64,'MAR','K'-64,' ',$6A 66 | DB 'N'+$80,$74,'NEX','T'-64,'PAG','E'-64,' ' 67 | ; 68 | DB 'PRIN','T'-64,'DO','C'-64,' ',$6A 69 | DB 'P'+$80,$74,'PRE','V'-64,'PAG','E'-64,' ' 70 | ; 71 | DB 'QUI','T'-64,'O','R'-64,'NEW',$6A 72 | DB 'Q'+$80,$74,'QUER','Y'-64,'MEMRY' 73 | ; 74 | DB 'RETUR','N'-64,'TOGL',$6A,'R'+$80,$74,'RAIS','E'-64,'INDEX' 75 | DB 'SAV','E'-64,'DO','C'-64,' ',$6A 76 | DB 'S'+$80,$74,'SE','T'-64,'MAR','K'-64,' ' 77 | ; 78 | DB 'UNDRL','N'-64,'OF','F'-64,$6A 79 | DB 'U'+$80,$74,'UNDRL','N'-64,'O','N'-64,' ' 80 | ; 81 | DB 'VIE','W'-64,'DI','R'-64,' ',$6A,'V'+$80,$74,'VIRTUA','L'-64,'MAR' 82 | DB 'COD','E'-64,'1 OF','F'-64,$6A 83 | DB 'W'+$80,$74,'COD','E'-64,'1 O','N'-64,' ' 84 | ; 85 | DB 'COD','E'-64,'2 OF','F'-64,$6A 86 | DB 'X'+$80,$74,'COD','E'-64,'2 O','N'-64,' ' 87 | ; 88 | DB 'COD','E'-64,'3 OF','F'-64,$6A 89 | DB 'Y'+$80,$74,'COD','E'-64,'3 O','N'-64,' ' 90 | ; 91 | .ENDIF 92 | ; 93 | DB $FF,64,11,249,$FF,64,11,0 94 | ; 95 | ; 96 | END 97 | ; 98 | -------------------------------------------------------------------------------- /WW6_2500AD/IMG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE IMG 3 | PW 120 4 | ; 5 | ; READ GEM .IMG FORMAT FILE 6 | ; 7 | ;CAVEATS: 8 | ; FILE LOAD ADDRESS 9 | ; 10 | ;MAY DESTROY 11 | ; POINTER, POINTER2 12 | ; 13 | ; 14 | INCLUDE WWSETUP.ASM 15 | INCLUDE VARIABLS.ASM 16 | ; 17 | PUBLIC BAD_HEADER 18 | PUBLIC BYTES_PER_LINE 19 | PUBLIC COPY_FILENAME 20 | PUBLIC OPEN_IMG_FILE 21 | PUBLIC PIXELS_PR_LINE 22 | PUBLIC READ_IMG_RASTER 23 | PUBLIC SCAN_LINES 24 | PUBLIC READ_IMG_RASTER 25 | ; 26 | EXTERN ASCTYP 27 | EXTERN AX_INTO_PT 28 | EXTERN BIT_ON 29 | EXTERN BPCODES ;ONLY NEEDED DURING TEXT PRINT 30 | EXTERN CHKIN 31 | EXTERN CHRIN 32 | EXTERN CLRCHN 33 | EXTERN CLOSE 34 | EXTERN GRAPHIC_EFFECT 35 | EXTERN GRAPHIC_FILENAME 36 | EXTERN GRAPHIC_RASTER_BUFFER 37 | EXTERN GRAPHIC_X_OFFSET 38 | EXTERN IW_INTO_AX 39 | EXTERN LSR_AX_3 ;DIVIDE .AX BY 8, NO REM. 40 | EXTERN OPEN_FILE_A 41 | EXTERN PATTERN_BYTES 42 | EXTERN REGLOAD 43 | EXTERN SETNAM 44 | EXTERN TOASCI 45 | ; 46 | .LIST ON 47 | GRAPHIC_RASTER_FILE: EQU 7 48 | ; 49 | ; 50 | HEADER_TABLE: ;{ 51 | HEADER_LENGTH: ;} 52 | DB 0 53 | IDENTICAL_SCAN_LINES: 54 | DB 0 55 | ; 56 | NUMBER_OF_PLANES: 57 | DW 0 58 | PATTERN_LENGTH: 59 | DW 0 60 | BYTES_PER_LINE: 61 | PIXEL_WIDTH: ;NOT NEEDED 62 | DW 0 63 | ; 64 | SCAN_BYTES: ;{ 65 | PIXEL_HEIGHT: ;NOT NEEDED 66 | DW 0 67 | ; 68 | PIXELS_PR_LINE: 69 | DW 0 70 | SCAN_LINES: 71 | DW 0 72 | ; 73 | ;PATTERN_BYTES: 74 | ; DW $FFFF,$FFFF,$FFFF,$FFFF 75 | ;*NOTE* MOVE THIS TO BPCODES BUFFER 76 | ; 77 | ; 78 | OPEN_IMG_FILE: 79 | ;FILES AS USED: 80 | ; 2 FOR GRAPHIC TEXT FILE 81 | ; 3 FOR GRAPHIC FONT FILE 82 | ; 4 FOR PRINTER OUTPUT 83 | ; 7 FOR GRAPHIC RASTER DATA 84 | ; 85 | ;MOVE NAME FROM TEXT TO BUFFER SOMEWHERE, 86 | ;SET LENGTH AND OPEN 87 | ; 88 | ; 89 | LDA #USE_FONT_DISK 90 | JSR COPY_FILENAME 91 | BCS BAD_HEADER 92 | ; 93 | LDA #GRAPHIC_RASTER_FILE 94 | JSR OPEN_FILE_A ;OPEN X,DEV1,X,"FONTNAME" 95 | ; 96 | LDX #GRAPHIC_RASTER_FILE 97 | JSR CHKIN 98 | ; 99 | LDX $90 100 | BNE BAD_HEADER 101 | ; 102 | JSR READ_AX_WORD ;GET VERSION.. MUST BE $0001 OR QUIT 103 | CMP #1 104 | BNE BAD_HEADER 105 | CPX #0 106 | BNE BAD_HEADER 107 | ; 108 | LDY #0 109 | STY IDENTICAL_SCAN_LINES 110 | ; 111 | ?HEADER_LOOP: 112 | JSR READ_AX_WORD 113 | STA HEADER_TABLE,Y 114 | TXA 115 | INY 116 | STA HEADER_TABLE,Y 117 | INY 118 | CPY #14 119 | BCC ?HEADER_LOOP 120 | ; 121 | LDX PIXELS_PR_LINE+1 ;HB 122 | CLC 123 | LDA PIXELS_PR_LINE ;LB 124 | ADC #7 ;+7 125 | BCC ?SKP 126 | INX 127 | ?SKP: 128 | JSR LSR_AX_3 ;(PIXELS_PR_LINE +7)/8 129 | STA BYTES_PER_LINE ;STORE LB ONLY (PERSISTENT) 130 | ; 131 | SEC 132 | LDA HEADER_LENGTH 133 | SBC #8 134 | TAY 135 | BEQ ?NO_EXTRA_HEADER 136 | ; 137 | ?STRIP_HEADER: 138 | JSR READ_AX_WORD 139 | DEY 140 | BNE ?STRIP_HEADER 141 | ; 142 | ?NO_EXTRA_HEADER: 143 | JMP CLRCHN 144 | ; 145 | BAD_HEADER: 146 | LDA #GRAPHIC_RASTER_FILE 147 | JSR CLOSE 148 | LDX #$FF 149 | STX GRAPHIC_X_OFFSET ;IS THERE A GRAPHIC? 150 | INX ;[0] 151 | STX SCAN_LINES 152 | STX SCAN_LINES+1 ;NO SCAN LINES 153 | SEC 154 | RTS 155 | ; 156 | ; 157 | ALREADY_IMAGED: 158 | DEC IDENTICAL_SCAN_LINES 159 | JMP FINISH_LINE 160 | ; 161 | ; 162 | READ_IMG_RASTER: 163 | ; 164 | LDA IDENTICAL_SCAN_LINES ;REPEAT # (PERSISTENT) 165 | BNE ALREADY_IMAGED 166 | ; 167 | LDX #GRAPHIC_RASTER_FILE 168 | JSR CHKIN ;GET INPUT CHANNEL IF WE NEED TO READ A LINE 169 | ; 170 | LDA #0 171 | STA SCAN_BYTES 172 | STA POINTER2 ;INDEX 173 | ; 174 | ?LINE_LOOP: ;THIS IS WHERE THE LINE LOOPS TILL FULL 175 | ; 176 | JSR CHRIN ;READ BYTE IN .A 177 | LDX SCAN_BYTES 178 | BNE ?IMAGE_LINE ;TEST FOR HEADER ONLY START OF EACH LINE 179 | ; 180 | CMP #$00 ;IS 1ST BYTE OF LINE 0? 181 | BNE ?IMAGE_LINE ;NO GO EXPAND LINE 182 | ; 183 | JSR CHRIN ;GET 2ND BYTE, PATTERN LENGTH OR 0 184 | CMP #$00 ;IF 0, THEN WE HAVE A REPLICATED LINE COUNT 185 | BNE ?PATTERN_W_LEN ;OTHERWISE REAL PATTERN LENGTH 186 | ; 187 | JSR READ_AX_WORD ;LB IS HOW MANY 188 | STA IDENTICAL_SCAN_LINES 189 | DEC IDENTICAL_SCAN_LINES 190 | JSR CHRIN ;GET FIRST REAL BYTE OF LINE 191 | ; 192 | ?IMAGE_LINE: 193 | CMP #$80 ;BIT_STRING? 194 | BNE ?OTHER 195 | ; 196 | JSR CHRIN ;GET LENGTH OF BITSTRING 197 | TAX 198 | ; 199 | ?LOOP: 200 | JSR CHRIN 201 | JSR SET_BYTE ;SET EACH BYTE OF BIT_STRING 202 | DEX 203 | BNE ?LOOP 204 | BEQ ?LOOP_LINE_OR_END 205 | ; 206 | ; 207 | ?OTHER 208 | CMP #$00 ;PATTERN? 209 | BEQ ?PATTERN 210 | ; 211 | BIT BIT_ON ;AND NON-DEST WITH $80 212 | BEQ ?ALL_ZERO 213 | ; 214 | AND #$7F ;KILL HI BIT OF # OF ff BYTES 215 | LDX #$FF ;FILL WITH $FF 216 | DB $2C 217 | ; 218 | ?ALL_ZERO: 219 | LDX #$00 ;FILL WITH $00 220 | JSR SET_RPT ;SET .A .X'S IN BUFFER AT INDEX 221 | JMP ?LOOP_LINE_OR_END 222 | ; 223 | ?PATTERN: 224 | JSR CHRIN ;GET PATTERN LENGTH (# OF PDL'S) 225 | ; 226 | ?PATTERN_W_LEN: 227 | STA POINTER ;SAVE LENGTH 228 | ; 229 | LDX #0 230 | ?SET_PATTERN: 231 | JSR CHRIN 232 | STA PATTERN_BYTES,X 233 | INX 234 | CPX PATTERN_LENGTH 235 | BCC ?SET_PATTERN ;FILL THE PATTERN ARRAY WITH DATA 236 | ; 237 | ?EACH_PATTERN: 238 | LDX #0 239 | ?USE_PATTERN: 240 | LDA PATTERN_BYTES,X 241 | JSR SET_BYTE 242 | INX 243 | CPX PATTERN_LENGTH 244 | BCC ?USE_PATTERN 245 | DEC POINTER ;SET PATTERN DATA LENGTH TIMES 246 | BNE ?EACH_PATTERN 247 | ; 248 | ?LOOP_LINE_OR_END: 249 | LDA SCAN_BYTES 250 | CMP BYTES_PER_LINE 251 | BCC ?LINE_LOOP 252 | ; 253 | JSR CLRCHN ;CLOSE CHANNEL 254 | ; 255 | FINISH_LINE: 256 | ; 257 | LDA SCAN_LINES 258 | BNE ?SKPD 259 | DEC SCAN_LINES+1 260 | ?SKPD: 261 | DEC SCAN_LINES 262 | ; 263 | ?SKP1: 264 | ; 265 | LDA PIXELS_PR_LINE 266 | STA PATTERN_BYTES+4 267 | LDA PIXELS_PR_LINE+1 268 | STA PATTERN_BYTES+5 ;RETURN LENGTH FOR PRINTING 269 | ; 270 | LDA SCAN_LINES 271 | ORA SCAN_LINES+1 272 | BNE ?GOOD_EXIT 273 | JMP BAD_HEADER 274 | ; 275 | ?GOOD_EXIT: 276 | CLC 277 | RTS 278 | ; 279 | READ_AX_WORD: 280 | ; 281 | JSR CHRIN ;READ HB IN .A 282 | TAX 283 | JMP CHRIN ;READ LB IN .A 284 | ; 285 | ; 286 | SET_RPT: 287 | ;SET .A .X'S IN BUFFER AT INDEX 288 | STA POINTER+1 289 | TXA 290 | LDX POINTER+1 291 | SET_X_OF_A: 292 | JSR SET_BYTE 293 | DEX 294 | BNE SET_X_OF_A 295 | RTS 296 | ; 297 | SET_BYTE: 298 | ; LEAVE .X .A UNHARMED 299 | LDY POINTER2 ;INDEX 300 | CPY #120 ;INSURE NO BYTE OUT OF BUFFER 301 | ; BCC ?OK 302 | ; LDY #119 303 | BCS BAD_FNAME ;DONT REPEAT BAD BYTE 304 | ?OK: 305 | STA GRAPHIC_RASTER_BUFFER,Y 306 | INC POINTER2 ;INDEX 307 | INC SCAN_BYTES 308 | BAD_FNAME: 309 | SEC 310 | RTS 311 | ; 312 | COPY_FILENAME: 313 | ;.A USE_FONT_DISK OR USE_WORK_DISK 314 | ; 315 | STA REGLOAD 316 | ; 317 | JSR IW_INTO_AX ;CAN NOT HARDCODE TO $CF08 318 | DW GRAPHIC_FILENAME 319 | JSR AX_INTO_PT 320 | ; 321 | LDA ASCTYP 322 | PHA ;SAVE ASCTYP 323 | LDY #0 324 | STY ASCTYP 325 | ?NAMELOOP: 326 | LDA (POINTER),Y ;READ UNTIL $FF 327 | BMI ?COPY_NAM 328 | JSR TOASCI 329 | STA FILENAME_LOC,Y 330 | INY 331 | BNE ?NAMELOOP ;COPY AND CONVERT TO PETASCII 332 | ; 333 | ?COPY_NAM: 334 | PLA 335 | STA ASCTYP ;RESTORE ASCTYP 336 | ?ENDLOOP: 337 | DEY 338 | ; 339 | BEQ BAD_FNAME 340 | ; 341 | LDA (POINTER),Y ;COULD BE FILENAME_LOC 342 | CMP #' ' 343 | BEQ ?ENDLOOP ;BACKUP OVER ANY TRAILING SPACES 344 | ; 345 | INY ;COUNT 1..N 346 | TYA ;FILENAME LENGTH 347 | ; 348 | LDX #FILENAME_LOC 350 | ; 351 | CLC 352 | JMP SETNAM ;RETURN CC (WILL NOT HARM CARRY) 353 | ; 354 | ; 355 | ; 356 | END 357 | ; 358 | -------------------------------------------------------------------------------- /WW6_2500AD/INBOOT.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE WWBOOT 3 | PW 80 4 | ; 5 | ; WORD WRITER BOOTER 6 | ; BY JEFF LOMAX 7 | ; 8 | FAST_LOAD_ADDRESS: EQU $C000 9 | INSTALL_ADDRESS: EQU $0900 10 | INSTALL_RUN: EQU $0900-1 11 | ; 12 | CLALL: EQU $FFE7 13 | CLOSE: EQU $FFC3 14 | CLRCHN: EQU $FFCC 15 | SETLFS: EQU $FFBA 16 | SETNAM: EQU $FFBD 17 | LOAD: EQU $FFD5 18 | ; 19 | ;BASIC START 20 | ; 21 | ORG $801 22 | DB $24,8,$A 23 | ; 24 | CBUF2: 25 | ; 26 | DB 0,$9E,'2087',$3A 27 | DB $8F,34,20,20,20,20,20,20,20 28 | DB 20,20,20,20,20,'WW4 INSTALL' 29 | DB 0,0,0 30 | ; 31 | ; BRANCH TO WORD WRITER 32 | ; 33 | BEGIN: 34 | ; 35 | SEI 36 | CLD 37 | LDX #$FF 38 | TXS 39 | ; 40 | INX ;[0] 41 | STX $02FF ;GEOS FLAG 42 | ; 43 | LDA $BA 44 | STA DRIVE ;GET CURRENT DRIVE 45 | JSR CLRCHN 46 | JSR CLALL 47 | ; 48 | LDX #3 49 | CKGEOS 50 | LDA $C006,X 51 | CMP GEOSMG,X 52 | BNE ?NOT_GEOS 53 | DEX 54 | BPL CKGEOS 55 | LDA #$A5 56 | STA $02FF ;FLAG GEOS PRESENT 57 | ; 58 | ?NOT_GEOS: 59 | ; 60 | LDA $330 ;GET SYSTEM LOAD VECTOR 61 | CMP #165 ;HAS IT BEEN CHANGED? 62 | BEQ ?LOAD_FL ;BIF SO TO LOAD FL 63 | LDA $331 ;GET SYSTEM LOAD VECTOR HI 64 | CMP #244 ;HAS IT BEEN CHANGED? 65 | BNE ?NOT_THERE ;IF NOT CHANGED, SKIP LOAD 66 | ; 67 | ?LOAD_FL: 68 | LDA #2 69 | LDX #FAST_LOAD_NAME 71 | JSR SETNAM 72 | ; 73 | LDA #2 74 | LDX DRIVE 75 | LDY #0 76 | JSR SETLFS 77 | ; 78 | LDX #FAST_LOAD_ADDRESS 80 | LDA #0 81 | JSR LOAD 82 | LDA #2 83 | JSR CLOSE 84 | JSR CLRCHN 85 | ; 86 | LDA $C000 87 | CMP #$A9 88 | BNE ?NOT_THERE 89 | LDA $C020 90 | CMP #$F5 91 | BNE ?NOT_THERE 92 | LDA $C040 93 | CMP #$4C 94 | BNE ?NOT_THERE ;JUST TEST 3 BYTES TO SEE IF FILE LOADED 95 | ; 96 | JSR $C000 ;ENABLE SWIFT-LOAD 97 | ; 98 | ?NOT_THERE: 99 | ; 100 | LDX #0 101 | ?LOOP: 102 | LDA MESSAGE,X 103 | BEQ ?DONE 104 | JSR $FFD2 105 | INX 106 | BNE ?LOOP 107 | ; 108 | ?DONE: 109 | ; 110 | LDA #5 111 | LDX #INSTALL_NAME 113 | JSR SETNAM 114 | ; 115 | LDA #2 116 | LDX DRIVE 117 | LDY #0 118 | JSR SETLFS 119 | ; 120 | LDX #INSTALL_ADDRESS 122 | LDA #>INSTALL_RUN 123 | PHA 124 | LDA # ? 14 |  -------------------------------------------------------------------------------- /WW6_2500AD/LOADER.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | ; WORD WRITER 3 | ; 7/29/85 4 | ; BY JEFF LOMAX 5 | ; 6 | .LIB VARIABLES 7 | .LIB WINDOW 8 | .LIB CALCULATE 9 | .LIB DICTION 10 | .LIB MOVERTNS 11 | .LIB PART3 12 | .LIB CATALOG 13 | .LIB PART4 14 | .LIB PART1 15 | .LIB PRINT 16 | .LIB PART2 17 | .LIB DATA 18 | .LIB MLIB 19 | ; 20 | .END 21 |  -------------------------------------------------------------------------------- /WW6_2500AD/MLIB.ASM: -------------------------------------------------------------------------------- 1 | ;NED WHATLEY/JEFF LOMAX 2/12/85 2 | TITLE MLIB 3 | .LIST OFF 4 | PAGE 5 | ; 6 | ; PUBLIC ATIMEX 7 | ; PUBLIC AXP1 8 | PUBLIC GETWOR 9 | ; PUBLIC P1WOR 10 | ; PUBLIC CLEAR_P1 11 | ; 12 | ;TIMES 13 | ; DB 0 14 | ; 15 | ;-------PROCESSOR EXTENSIONS------- 16 | ;AXTIME PHA 17 | ; JSR CLEAR_P1 18 | ; PLA 19 | ;ATIMEX ;P1=P1+.A*.X 20 | ; STX P4 ;LSB MULTIPLICAND 21 | ; LDX #0 22 | ; STX P4+1 ;0 MSB MULTIPLICAND 23 | ;TIMESA STA TIMES ;MULTIPLIER 24 | ; JMP SHOMUL ;2BYT*1BYT MULTPLY 25 | ; 26 | ;ADEM CLC 27 | ; LDA P4 ;LSB MULTIPLICAND 28 | ; ADC P1 ;LSB PRODUCT 29 | ; STA P1 ;NEW LSB PRODUCT 30 | ; LDA P4+1 ;MSB MULTIPLICAND 31 | ; ADC P1+1 ;MSB PRODUCT 32 | ; STA P1+1 ;NEW MSB PRODUCT 33 | ;SHLEFT ASL P4 ;LSB MULTIPLICAND 34 | ; ROL P4+1 ;MSB MULTIPLICAND 35 | ;SHOMUL LSR TIMES ;GET LOW MULTIPLIER BIT 36 | ; BCS ADEM ;SET BIT ADD MULTIPLICAND TO PRODUCT & SHIFT 37 | ; BNE SHLEFT ;SHIFT IF MORE BITS IN MULTIPLIER 38 | ; RTS 39 | ; 40 | ;ADJP1 ;P1=P1+.A,.X 41 | ; CLC 42 | ; ADC P1 43 | ; STA P1 44 | ; TXA 45 | ; ADC P1+1 46 | ; STA P1+1 47 | ; RTS 48 | ; 49 | ;ADJP2 ;P2=P2+.A,.X 50 | ; CLC 51 | ; ADC P2 52 | ; STA P2 53 | ; TXA 54 | ; ADC P2+1 55 | ; STA P2+1 56 | ; RTS 57 | ; 58 | ;ADJP3 ;P3=P3+.A,.X 59 | ; CLC 60 | ; ADC P3 61 | ; STA P3 62 | ; TXA 63 | ; ADC P3+1 64 | ; STA P3+1 65 | ; RTS 66 | ; 67 | ;CLEAR_P1: 68 | ; P1 = 0 69 | ; .A = 0 70 | ; 71 | ; LDA #0 72 | ; STA P1 73 | ; STA P1+1 74 | ; RTS 75 | ; 76 | ;P1XP4 JSR AXP1 77 | ; PHA 78 | ; TXA 79 | ; PHA 80 | ; JSR P1P4 81 | ; PLA 82 | ; TAX 83 | ; PLA 84 | ; JMP P4AX 85 | ; 86 | ;STIMES: 87 | ; STA TIMES 88 | ; LDX #16 89 | ; LDA #0 90 | ;STIME1 ASL P4 91 | ; ROL P4+1 92 | ; ROL A 93 | ; BCS STIME2 94 | ; CMP TIMES 95 | ; BCC STIME3 96 | ;STIME2 SBC TIMES 97 | ; INC P4 98 | ;STIME3 DEX 99 | ; BNE STIME1 100 | ; RTS 101 | ; 102 | ;P1EQAX ;P1=.A*.X 103 | ; PHA ;SAVE 104 | ; JSR CLEAR_P1 105 | ; PLA ;RESTORE 106 | ; JMP ATIMEX ;P1=P1+.A*.X 107 | ; 108 | ;P1WOR ;SET P1 = .WOR 109 | ; JSR GETWOR ;GET .WOR 110 | ; FALL THROUGH 111 | ;P1AX ;SET P1=.A,.X 112 | ; STA P1 113 | ; STX P1+1 114 | ; RTS 115 | ; 116 | ;AXP1 ;SET .A,.X = P1 117 | ; LDA P1 118 | ; LDX P1+1 119 | ; RTS 120 | ; 121 | ;P4AX ;P4=.A,.X 122 | ; STA P4 123 | ; STX P4+1 124 | ; RTS 125 | ; 126 | ;AXP4 ;.A,.X = P2 127 | ; LDA P4 128 | ; LDX P4+1 129 | ; RTS 130 | ; 131 | ;P3WOR ;P3 = .WOR 132 | ; JSR GETWOR ;GET .WOR 133 | ; 134 | ;P3AX ;SET P3=.A,.X 135 | ; STA P3 136 | ; STX P3+1 137 | ; RTS 138 | ; 139 | ;AXP3 ;SET .A,.X = P3 140 | ; LDA P3 141 | ; LDX P3+1 142 | ; RTS 143 | ; 144 | ;INCYP1 ;INC P1 BY .Y 145 | ; TYA ;INC VALUE 146 | ; .BYT $2C ;SKIP NEXT 2BYTES 147 | ;INC2P1 ;INC P1 BY 2 148 | ; LDA #2 ;INC VALUE 149 | ; .BYT $2C ;SKIP NEXT 2BYTES 150 | ;INC1P1: ;INC P1 BY 1 151 | ; LDA #1 ;INC VALUE 152 | ;INCAP1 ;INC P1+1 BY .A 153 | ; CLC 154 | ; ADC P1 ;LSB VALUE 155 | ; STA P1 ;NEW LSB VALUE 156 | ; BCC INC0P1 ;NO MSB ADJ 157 | ; INC P1+1 ;NEW MSB VALUE 158 | ;INC0P1 RTS 159 | ; 160 | ;INC1P2 ;INC P2+1 BY 1 161 | ; LDA #1 ;INC VALUE 162 | ;INCAP2 ;INC P2+1 BY .A 163 | ; CLC 164 | ; ADC P2 ;LSB VALUE 165 | ; STA P2 ;NEW LSB VALUE 166 | ; BCC INC0P2 ;NO MSB ADJ 167 | ; INC P2+1 ;NEW MSB VALUE 168 | ;INC0P2 RTS 169 | ; 170 | ;INC1P3 ;INC P3 BY 1 171 | ; LDA #1 ;INC VALUE 172 | ;INCAP3 ;INC P3 BY .A 173 | ; CLC 174 | ; ADC P3 ;LSB VALUE 175 | ; STA P3 ;NEW LSB VALUE 176 | ; BCC INC0P3 ;NO MSB ADJ 177 | ; INC P3+1 ;NEW MSB VALUE 178 | ;INC0P3 RTS 179 | ; 180 | ;P1P4 ;P1=P4 181 | ; JSR AXP4 ;.A,.X=P4 182 | ; JMP P1AX ;P1=.A,.X 183 | ; 184 | ;P2P1: 185 | ;P2 = P1 186 | ; JSR AXP1 ;.A,.X = P1 187 | ;P2AX: 188 | ; STA P2 189 | ; STX P2+1 190 | ; RTS 191 | ; 192 | ;P1P3: 193 | ;P1=P3 194 | ; 195 | ; JSR AXP3 ;.A,.X=P3+1 196 | ; JMP P1AX ;P1+1= .A,.X 197 | ; 198 | ;P4WOR ;SET P4 TO .WOR 199 | ; JSR GETWOR ;GET .A,.X = .WOR 200 | ; JMP P4AX ;SET P4 TO .A,.X 201 | ; 202 | PRTP0: 203 | LDY #5 204 | PRTP1: ;PRINT VALUE OF PT, P1 UNHARMED 205 | STX SAVEYG ;# DIGITS TO PRINT 206 | ; JSR P1XP4 ;SWAP P1 & P4,PRESERVE .X 207 | LDX SAVEYG 208 | ; 209 | .LIST ON 210 | PRTP10: 211 | LDA #10 212 | STA STOREY ;DIVISOR 213 | STX SAVEYG 214 | ; JSR STIMES ;DIVIDE P4 BY .A 215 | JSR DIV_PT_BY_S ;Divide POINTER/STOREY POINTER=quo .A=rem 216 | LDX SAVEYG 217 | EOR #$30 ;CONVERT TO ASCII CHA 218 | ; 219 | STA $400,X 220 | DEX 221 | DEY 222 | BNE PRTP10 223 | RTS 224 | ; 225 | ;----------GET WORD---------------- 226 | GETWOR ;GET 2 BYTES FOLLOWING JSR 227 | ; MAGIC NUMBERS $103,$104 ARE 228 | ; FIXED STACK LOCS 229 | STY SAVEYG ;SAVE THROUGH ROUTINE 230 | TSX ;GET STACK POINTER 231 | LDA $103,X ;LSB RETURN FOR UTILITY CALL 232 | STA P4 ;SAVE IT 233 | CLC 234 | ADC #2 ;#BYTES TO SKIP ON RETURN 235 | STA $103,X ;NEW LSB RETURN FOR UTILITY CALL 236 | LDA $104,X ;GET MSB RETURN FOR UTILITY CALL 237 | STA P4+1 ;SAVE IT 238 | ;-- (P4)=BYTE BEFORE DATA 239 | BCC GE201 ;NO MSB ADJUSTMENT 240 | INC $104,X ;INC MSB RETURN 241 | GE201 LDY #2 ;OFFSET TO 2ND ARGUMENT 242 | LDA (P4),Y ;GET 2ND ARGUMENT 243 | TAX ;SAVE IT 244 | DEY ;OFFSET TO 1ST ARGUMENT 245 | LDA (P4),Y ;GET 1ST ARGUMENT 246 | LDY SAVEYG ;RESTORE .Y 247 | RTS ;RETURN 248 | ; 249 | .LIST OFF 250 | ; 251 | END 252 | ; 253 | -------------------------------------------------------------------------------- /WW6_2500AD/MOVERTNS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE MOVERTNS 3 | PAGE 4 | ; 5 | PUBLIC MOVEUP 6 | PUBLIC MOVE_UP_ONE 7 | PUBLIC MOVE_UP_Y 8 | ; 9 | ; 10 | MOVE_UP_ONE: 11 | LDY #1 12 | MOVE_UP_Y: 13 | LDX #0 14 | ; 15 | MOVEUP: 16 | ; 17 | LDA TEXT 18 | STA MUPYL1 19 | STA MUPYL2 ;SEED LOW BYTES LOW POINTER 20 | ; LDA TEXT+1 21 | ; STA MUPYL1+1 22 | ; STA MUPYL2+1 ;MOVE TEXT TO LOW 23 | ; 24 | CLC 25 | TYA 26 | ADC TEXT 27 | STA MUPYH1 28 | STA MUPYH2 29 | TXA 30 | ADC TEXT+1 31 | STA MUPYH1+1 32 | STA MUPYH2+1 ;HIGH=.X.Y+TEXT 33 | ; 34 | CLC 35 | TYA 36 | ADC EOT 37 | STA SAVEOT 38 | TXA 39 | ADC EOT+1 40 | STA SAVEOT+1 ;SAVEOT=.X.Y+EOT 41 | ; 42 | ; LDA SAVEOT 43 | ; CMP HIMEM 44 | ; LDA SAVEOT+1 45 | ; SBC HIMEM+1 ;DO NOT MOVE IF 46 | ; BCS MUENDT ;SAVEOT > HIMEM (CS) 47 | ;# CAREFUL 48 | ; 49 | SEC 50 | LDA EOT 51 | SBC TEXT 52 | TAY 53 | LDA EOT+1 54 | SBC TEXT+1 55 | TAX ;DISTANCE (.X.Y)=EOT-TEXT 56 | ; 57 | CLC 58 | ; ADC MUPYL1+1 59 | ADC TEXT+1 60 | STA MUPYL1+1 61 | STA MUPYL2+1 ;ADD DISTANCE HB TO LO POINTER 62 | ; 63 | TXA 64 | CLC 65 | ADC MUPYH1+1 66 | STA MUPYH1+1 67 | STA MUPYH2+1 ;ADD DISTANCE HB TO HI POINTER 68 | CPY #0 ;NO ODD BYTES? 69 | BEQ MOVE_ZERO_BYTE;IF NOT, SKIP 70 | ; 71 | MUPYL1: EQU $+1 72 | MUPY: 73 | LDA $1234,Y 74 | MUPYH1 EQU $+1 75 | STA $1234,Y 76 | DEY 77 | BNE MUPY ;DO UP TO 255 BYTES 78 | ; 79 | MUPYL2: EQU $+1 80 | MOVE_ZERO_BYTE: 81 | LDA $1234 82 | MUPYH2: EQU $+1 83 | STA $1234 ;DO LOW BYTE 84 | DEY 85 | DEC MUPYL1+1 86 | DEC MUPYL2+1 87 | DEC MUPYH1+1 88 | DEC MUPYH2+1 89 | DEX 90 | BPL MUPY 91 | ; CPX #$FF 92 | ; BNE MUPY 93 | ; 94 | LDA SAVEOT+1 95 | STA EOT+1 96 | LDA SAVEOT 97 | STA EOT 98 | ; 99 | CLC 100 | MUENDT: 101 | RTS ;CC=OK CS=MOVE NOT DONE 102 | ; 103 | END 104 | ; 105 | -------------------------------------------------------------------------------- /WW6_2500AD/OUTLNJMP.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE OUTLNJMP 3 | PAGE 4 | PW 92 5 | ; 6 | ;THIS MODULE IS CREATED ONLY TO FACILITATE CALLS INTO THE 7 | ;OUTLINER. NO CALL TO THE MINI-DATABASE MAY BE PRESENT. 8 | ;THIS MUST BE CALLED ONLY WHEN THE OUTLINER IS IN MEMORY. 9 | ;COMPLIATION ALLIEGENCE IS TO THE OUTLINER ONLY. 10 | ; 11 | PUBLIC OV_OUTLINE_REFORMAT 12 | EXTERN FC_OUTLINE_REFORMAT 13 | ; 14 | INCLUDE WWSETUP.ASM 15 | INCLUDE VARIABLS.ASM 16 | ; 17 | OV_OUTLINE_REFORMAT: 18 | ; 19 | JMP FC_OUTLINE_REFORMAT 20 | ; 21 | ; 22 | END 23 | ; 24 | -------------------------------------------------------------------------------- /WW6_2500AD/OVERLAY.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE OVERLAY 3 | PAGE 4 | PW 92 5 | ; 6 | INCLUDE WWSETUP.ASM 7 | INCLUDE VARIABLS.ASM 8 | ; 9 | ; PUBLIC IN_DATABASE_MODE 10 | PUBLIC FIELD_NAMES 11 | ; PUBLIC FC_MINI_DATABASE 12 | PUBLIC FC_ENTER_OUTLINER 13 | PUBLIC LOAD_OVERLAY_DIRECT 14 | PUBLIC OUTMODE 15 | PUBLIC OVERLAY_IN_MEMORY 16 | PUBLIC OVERLAY_NUMBER 17 | ; 18 | EXTERN DRAWOUT ;PART2 19 | EXTERN PRKECY ;DATA 20 | EXTERN ENTER_DATABASE_MODE ;MINIDB 21 | EXTERN EXIT_DATABASE_MODE ;MINIDB 22 | EXTERN INSERTM ;CONFIG 23 | EXTERN LOAD_ANY_FILE ;SUPPORT (MONSTER) 24 | EXTERN MNLINE ;PART1 25 | EXTERN ON_AND_REFREASH ;EDITLN 26 | EXTERN OVERLAY_START ;MINIDB & OUTLN 27 | EXTERN TOGINS0 ;PART2 28 | EXTERN QSAVE1 ;PART1 29 | ; 30 | .LIST ON 31 | ; 32 | FIELD_NAMES: EQU $FEC0 33 | ; 34 | OVERLAY_IN_MEMORY: 35 | ;1=DATABASE, 0=OUTLINER 36 | DB OVERLAY_ASSEMBLED ; 2019 Configured from WW.ASM, WWDATA.ASM 37 | ; 38 | ;IN_DATABASE_MODE: 39 | ;1=IN DB MODE, 0=NOT IN DB MODE 40 | ; DB 0 41 | ; 42 | ;OUTLINER CONTROL CHARACTERS 43 | OUTMODE: 44 | DB 0 ;0 = OUTLINER INACTIVE, NZ = ACTIVE 45 | ; 46 | ;-------------------- 47 | ; 48 | FC_ENTER_OUTLINER: 49 | ; 50 | LDA OUTMODE ;ARE WE IN OUTLINER NOW? 51 | BNE EXITOUT ;IF SO, GO TRY TO LEAVE THE OUTLINER 52 | ; 53 | LDX IN_DATABASE_MODE ;ARE WE IN THE DATABASE NOW? 54 | BEQ ?OUTL_OR_CARDF ;NOT, ENTER DB OR OUTLN 55 | JMP EXIT_DATABASE_MODE ;GO TRY TO EXIT THE DATABASE 56 | ; 57 | ?OUTL_OR_CARDF: 58 | LDX #40 ;TRY TO ENTER OUTLINER. 59 | STX MERPTR ;FLAG "GOOD SAVE" FOR ENTRY 60 | JSR PRKECY ;'ENTER OUTLINER OR CARDFILE?(O/C)' 61 | CMP #'C' ;WANTS THE CARDFILE? 62 | BEQ ?FORCE_YN ;GO TO CARDFILE! 63 | CMP #'O' ;FALL THRU FOR OUTLINER 64 | BNE OUTLINE3 ;OR EXIT 65 | ; 66 | ?FORCE_YN: 67 | PHA ;SAVE (O) OR (C) 68 | LDX #44 69 | JSR PRKECY ;OUTLINER ERASES MEMORY! SAVE FILE?(Y/N) 70 | BEQ ?DO_SAVE 71 | CMP #'N' 72 | BEQ OUTLINE0 ;NO SAVE 73 | BNE ?FORCE_YN 74 | ; 75 | ?DO_SAVE: 76 | JSR QSAVE1 ;ENTER QUICK SAVE. 77 | ; 78 | OUTLINE0: 79 | ; 80 | PLA 81 | CMP #'C' 82 | BEQ FC_MINI_DATABASE 83 | ; 84 | LDA OVERLAY_IN_MEMORY ;WHICH OVERLAY IS IN MEMORY NOW? 85 | BEQ ?OUTLINER_IN_MEMORY ;IF OUTLINER, GO ON 86 | ; 87 | LDA #'1' ;SELECT CARDFILE 88 | JSR LOAD_OVERLAY ;TRY TO LOAD IT 89 | ; BCS OUTLINE3 ;WE DIDN'T GET THE FILE 90 | BCS FMD_ABORT 91 | DEC OVERLAY_IN_MEMORY ;[0] 92 | ; 93 | ?OUTLINER_IN_MEMORY: 94 | INC OUTMODE ;SET OUTMODE = 1 95 | LDA #0 96 | STA INSERTM ;SORRY, NO INSERT IN OUTLINER 97 | JSR TOGINS0 ;SET OVR IN HEADER 98 | ; 99 | SEC 100 | JSR DRAWOUT ;PLACE 'OUTLINER' IN HEADER 101 | ; 102 | JMP MNLINE 103 | ; 104 | ;-------------------- 105 | ; 106 | EXITOUT: 107 | ;*NOTE* THIS SHOULD MOVE INSIDE OUTLINER CODE 108 | LDX #43 ;'EXIT OUTLINE MODE?(Y/N)' 109 | JSR PRKECY 110 | BNE OUTLINE3 111 | ; 112 | CLC 113 | JSR DRAWOUT ;PLACE ' ' IN HEADER 114 | DEC OUTMODE 115 | OUTLINE3: 116 | JMP ON_AND_REFREASH 117 | ; 118 | ;-------------------- 119 | ; 120 | FC_MINI_DATABASE: 121 | ; 122 | ?ENTER_DB: 123 | ; 124 | LDA OVERLAY_IN_MEMORY 125 | BNE ?ENTER_OVERLAY 126 | ; 127 | LDA #'2' 128 | JSR LOAD_OVERLAY 129 | BCS FMD_ABORT ;WE DIDN'T GET IT 130 | INC OVERLAY_IN_MEMORY ;[1] WE GOT IT 131 | ; 132 | ?ENTER_OVERLAY: 133 | JMP ENTER_DATABASE_MODE 134 | FMD_ABORT: 135 | RTS 136 | ; 137 | ;-------------------- 138 | ; 139 | LOAD_OVERLAY: 140 | ;.A NUMBER OF OVERLAY TO LOAD 141 | STA OVERLAY_NUMBER ;SELECT OVERLAY 142 | ; 143 | LDX #7 144 | JSR PRKECY ;'PLACE PROGRAM DISK IN DRIVE' 145 | ; 146 | LOAD_OVERLAY_DIRECT: 147 | JSR LOAD_ANY_FILE ;LOAD THE SELECTED OVERLAY 148 | DB #>OVERLAY_FILENAME 149 | DB #USE_DATA_DISK 150 | DB 3 151 | DB #OVERLAY_START 153 | DB #PCBOX 194 | ; JSR AX_INTO_MSGOUT ;POINT TO CLUSTER BOX 195 | ; JSR W_INTO_MSGOUT 196 | ; DW PCBOX 197 | ; 198 | LDA #7 ;CBOFFSET 199 | JSR PULLDN ;DRAW THE BOX 200 | DW PCBOX 201 | RTS 202 | ; 203 | DSETLINE: 204 | ;MSGOUT POINTS TO 1ST PRINTER (TEXT) CODE 205 | ;INPUT MOVEHI (0..9) 206 | ; 207 | JSR W_INTO_PT 208 | DW PCSTART ;SET P1 = PCSTART 209 | ; 210 | LDX #BOX_WIDTH ;WIDTH AROUND BOX 211 | LDA MOVEHI ;CURRENT POSITION TO SELECT 212 | JSR MUL_AX_PT ;Return POINTER = (.A*.X)+POINTER, DESTROY P1 213 | JSR PT_INTO_AX 214 | JMP AX_INTO_MSGOUT 215 | ; 216 | ; 217 | POINT_AND_PRINT: 218 | STA MOVEHI 219 | JSR POINTTOPRC ;POINT P1 AT PRINTER CODE 220 | ;(FT) 221 | ; 222 | PRINTPP1: 223 | ;PRINT CODE AT P1 224 | ;BINARY OUTPUT 225 | LDY MOVEHI 226 | CPY #1 227 | BNE ?NO_FEATURE 228 | INC FEATUR ;WAS UNDERLINING 229 | ; 230 | ?NO_FEATURE: 231 | LDY #0 232 | STY SESLEN 233 | PRINTPP2: 234 | LDY SESLEN 235 | LDA (POINTER1),Y 236 | CMP #$FF 237 | BEQ PRINTPP3 238 | CPY #6 ;ALL DONE? 239 | BCS PRINTPP3 240 | BIT PREVIEW 241 | BMI PRINTPP8 242 | ; 243 | JSR CHROUT ;OUT GOES CODE 244 | PRINTPP8: 245 | INC SESLEN 246 | BNE PRINTPP2 ;BRA 247 | ; 248 | PRINTPP3: 249 | RTS 250 | ; 251 | ; 252 | PFILEB: 253 | DB '@:' 254 | PFILE: 255 | DB 'DEFAULT.TXT,P,W' 256 | PFILEE: 257 | ; 258 | PFILE_LEN: EQU PFILEE-PFILE-4 259 | ; 260 | FC_SAVE_DEF_PRINT_FILE: 261 | ; 262 | LDX #46 263 | JSR PRKECY 264 | BNE PRINTPP3 ;EXIT 265 | ; 266 | LDA #0 ;SET TO DATA PATH AND CHECK DRIVE 267 | STA REGLOAD 268 | ; 269 | LDX #7 270 | JSR PRKECY 271 | ; 272 | LDA #PFILEE-PFILEB 273 | LDX #PFILEB 275 | JSR SETNAM 276 | ; 277 | ;*NOTE* 278 | ;COPY TABS FROM TAB TABLE TO DEF_FILE HERE 279 | ; 280 | LDA #3 281 | JSR XDEVICEN 282 | ; 283 | LDY #0 284 | JSR SETLFS 285 | ; 286 | JSR W_INTO_PT 287 | DW SAVEPRNT ;SET PT = START ADDRESS 288 | LDA #SAVEPRNTE 291 | JMP SAVE_RAM 292 | ; 293 | ; 294 | END 295 | ; 296 | -------------------------------------------------------------------------------- /WW6_2500AD/VARIABLS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE VARIABLS.ASM 3 | ; 4 | ;DEBUGGER_PRESENT: EQU 0 ;1=YES 5 | ; 6 | USE_DATA_DISK: EQU 0 7 | USE_SPELL_DISK: EQU 1 8 | USE_FONT_DISK: EQU 2 9 | USE_DEFAULT_FONT: EQU 0 10 | ; 11 | MAX_CHARS_IN_LINE EQU 200 ;132 12 | MAX_PCODES: EQU 16 13 | MAX_LINE_LENGTH: EQU 200 ;132 14 | .IF DEBUGGER_PRESENT 15 | MAX_PAGES: EQU 10 16 | .ELSE 17 | MAX_PAGES: EQU 50 18 | .ENDIF 19 | ; 20 | ; 21 | ; NEED RS.232 SUPPORT, ZP VARIABLS NEEDED: 22 | ; $A7,,$AB $B4..$B6 $BD $F7..$FA 23 | ; $293..$29E $2A1 24 | ; 25 | ; 26 | ;$2 .. $B INCLUSIVE RESERVED FOR PRINTER DRIVER 27 | ; 28 | TEMP6: EQU $C 29 | STOREY: EQU $D 30 | STAC_X: EQU $E ;BUFPTR EQU $D ;$E 31 | ;$E 32 | MSGOUT: EQU $F ;$10 33 | ; 34 | MOVELO: EQU $14 ;$15 35 | ; 36 | POINTER: EQU $16 37 | BUILD: EQU $18 ;{SAME NAME 38 | POINTER1: EQU $18 ;} 39 | POINTER2: EQU $1A 40 | ; 41 | MOVEHI: EQU $1C ;$1D 42 | JUSCHR: EQU $1E 43 | MOVE_COPY_HL: EQU $1F ;JUSTTX EQU $1F 44 | BUFFLG: EQU $20 45 | ; 46 | WW_INDEX: EQU $21 ;{ 47 | LSTCLS: EQU $21 ;} CLUSTER PRESENTED 48 | T6: EQU $22 49 | ; 50 | XSAVE: EQU $23 51 | MSLEN: EQU $24 52 | ;$25 UNSAFE DURING CATALOG 53 | ; 54 | ;JUSWOR: EQU $26 MOVED INTO PRINT.ASM 55 | IN_DATABASE_MODE: EQU $26 56 | ;# DOESN'T DESERVE ZP STATUS 57 | RPSLEN: EQU $27 58 | SESLEN: EQU $28 59 | SAVEOT: EQU $29 ;$2A 60 | ; 61 | ;CHR_OUT_TEMP: EQU $2B ;$2C { 62 | ;T80/T81 REMOVED CHR_OUT_TEMP MOVED TO OUTVAR 63 | ;T80: EQU $2B 64 | ;T81: EQU $2C ;} 65 | DOCUMENT_ALTERED: EQU $2B 66 | ; 67 | T82: EQU $2D ;TEMP USED IN IMAGE.ASM 68 | PRINT_STATUS: EQU $2E ;{ 69 | T83: EQU $2E ;} 70 | EDIT_BUFFER_CHANGED: EQU $2F 71 | ; 72 | CHAR_WIDTH_ADJUST: EQU $30 73 | PSAVET: EQU $31 74 | SPECL: EQU $32 75 | TMINDX: EQU $33 76 | CURFLG: EQU $34 ;# HARDLY WORTH ZP STATUS-SEE OUTLN 77 | PRTLIN: EQU $35 78 | CURRENT_FONT: EQU $36 79 | PRINTABLE_CHARACTERS: EQU $37 80 | ; 81 | DOT_COLUMN: EQU $38 ;$39 82 | ; 83 | P2: EQU $3A ;$3B 84 | P4: EQU $3C ;$3D 85 | KEYABT: EQU $3E ;KEYBRD ABORT FLAG $80 = NO, $00 = YES 86 | SAVEY: EQU $3F 87 | ; 88 | ;$43-$44 POSSIBLY UNSAFE 89 | FONT_BASE: EQU $40 ;$41 90 | FONT_WORK: EQU $42 ;$43 91 | TEMP0: EQU $45 92 | TEMP1: EQU $46 93 | TEMP2: EQU $47 94 | TEMP3: EQU $48 95 | TEMP4: EQU $49 96 | TEMP5: EQU $4A 97 | TOTAL_LINE_LENGTH: EQU $4B ;$4C { 98 | POINTER3: EQU $4B ;$4C } 99 | POINTER4: EQU $4D ;$4E 100 | ; 101 | RETRNA: EQU $4F 102 | BIIT: EQU $51 103 | ; 104 | JBUFF: EQU $52 ;{ 105 | BITBIN: EQU $52 106 | BITROT: EQU $53 ;} 107 | ; 108 | TEMP: EQU $54 109 | CURRENT_KEY: EQU $55 110 | STAC_Y: EQU $56 ;WAS A5, KILLED JIFFY-DOS 111 | ; 112 | ;71-8F BLOCK 113 | ;DUAL DOCUMENT CRITICAL VARIABLS: 114 | ;SHOULD NOT NEED :SCRMO, TEXTMO 115 | ; 116 | ; 117 | SCRMO: EQU $71 ;$72 118 | MARGIN: EQU $73 ;$74 119 | END_OF_TEXT: EQU $75 ;FOR OUTLINER 120 | EOT: EQU $75 ;$76 121 | SCREEN: EQU $77 ;$78 122 | PAGE: EQU $79 123 | FIRST_CHAR_P: EQU $7A 124 | TEXPAG: EQU $7B ;$7C 125 | TEXTMO: EQU $7D ;$7E 126 | TEXT: EQU $7F ;$80 127 | COLUMN: EQU $81 128 | COUNT: EQU $82 129 | LINE: EQU $83 130 | HIMEM: EQU $84 ;$85 131 | STARTTEXT: EQU $86 ;FOR OUTLN 132 | STTEXT: EQU $86 ;$87 133 | CURRENT_CHAR: EQU $88 ;REFERENCE IN OUTLN.ASM 134 | LINE_LENGTH: EQU $89 ;$8A 135 | CHARS_IN_LINE: EQU $8B 136 | ACTUAL_COLUMN: EQU $8C 137 | CURRENT_SCREEN_LINE: EQU $8D 138 | FIRST_CHAR: EQU $8E 139 | FIRST_CHAR_F: EQU $8F 140 | ; 141 | ;A6-B6 BLOCK 142 | ; 143 | ;STAC_Y: EQU $A5 MOVED TO $56 FOR JIFFY-DOS 144 | CHAIN: EQU $A6 145 | MERPTR: EQU $A7 ;$A8 146 | ;TPAGE: EQU $A9 147 | EDIT_TEMP: EQU $A9 148 | ;*NOTE* FREE 149 | ;TPASS: EQU $AA ;FREE! FREE AT LAST! 150 | BIGGEST_POINTSIZE: EQU $AA 151 | COUNT_DOWN: EQU $AB 152 | ;# DOES THIS CHANGE AFTER DIRECTORY SCROLLS SCREEN 153 | STACKY: EQU $AC 154 | ATTRIBUTES: EQU $AD 155 | ;BLD,ITL,US1,US2,US3,SUP,SUB,UND 156 | ; 157 | ;SYSTEM $AE,AF 158 | OUTVAR: EQU $B0 ;B0,B1,B2,B3 159 | DOTS_PRESENT_IN_BAND: EQU $B0 ;RE-USE 160 | CHR_OUT_TEMP: EQU $B1 161 | JUSTEXTP: EQU $B4 ;POSITION IN TEXT FOR JUSTIFIED CHAR 162 | ; 163 | ;OK FOR USE 164 | BUFCHR: EQU $BD 165 | PREVIEW: EQU $BE 166 | ; 167 | ;NTEMP3: EQU $C0 168 | ;NP1: EQU $C3 ;/C4 169 | NDX EQU $C6 ;NUMBER OF CHARACTERS IN QUEUE (SYSTEM) 170 | SAVEYG: EQU $C8 171 | ;NP2: EQU $F3 172 | ;$F5,F6 RESERVED, SYSTEM KEY MATRIX 173 | ; 174 | ;OUTVR1 $F7,F8,F9,FA 175 | ; 176 | CURRENT_POINTSIZE: EQU $FB 177 | EXPAND_ON: EQU $FC 178 | CUR_PAGE_LENGTH: EQU $FD ; $FE 179 | ; 180 | UPARROW: EQU 30 181 | CMARK: EQU 122 ;CHECKMARK CHAR 182 | TABCHAR: EQU 212 ;TAB CHARACTER 183 | ; 184 | STOPREC: EQU 249 ;DEL LINE FILL 185 | LINEFLD: EQU 250 ;SKIP THIS FIELD 186 | SKIPFLD: EQU 251 ;FIELD SKIP CODE 187 | ENDREC: EQU 252 ;END OF RECORD 188 | ; 189 | ENDT: EQU 253 ;END OF TEXT 190 | SRETRN: EQU 254 ;SOFT RETURN 191 | RETURN: EQU 255 ;HARD RETURN 192 | ; 193 | PRTFEATURE: EQU $201 ;211 ANY SPECIAL CODE. 194 | ; 195 | INPBUF: EQU $204 ;21E BUFFER FOR KEYBOARD INPUT NOTE ACTUAL START $202 196 | FILENAME_LOC: EQU INPBUF 197 | ; 198 | SEARCH_BUFFER: EQU INPBUF+39 ;LONGEST = DISK COMMANDS(39) 199 | FILENAME_BUFFER: EQU SEARCH_BUFFER + 32 ;SIZEOF SEARCH(32) 200 | ; 201 | ; 202 | PTEXT_COLOR: EQU $286 203 | ; 204 | VIDEO EQU $400 ;VIDEO SCREEN HOME 205 | ; 206 | ;PRINTER DRIVER EQUATES 207 | PRINT_DRIVER_START: EQU $04F2 ;$04F0 - LOAD ADDR 208 | ARGUMENT_TYPE: EQU $052A 209 | BAND_BUFFER: EQU $04F6 210 | JI_BYTE_OUT_PATCH: EQU $04F8 211 | JI_CHANNEL_OUT: EQU $0508 212 | JI_CHARACTER_OUT: EQU $0502 213 | JI_CLEAR_CHANNEL: EQU $050A 214 | JI_CLOSE_PRINTER: EQU $0506 215 | JI_END_LINE_PATCH: EQU $04FE 216 | JI_END_PRINT_PATCH: EQU $04FA 217 | JI_OPEN_PRINTER: EQU $0504 218 | JI_PAD_SPACES_PATCH: EQU $0500 219 | JI_START_LINE_PATCH: EQU $04FC 220 | MATRIX_DEFINITION: EQU $0512 221 | PDEVICE: EQU $051E 222 | PIXELS_IN_SPACE: EQU $0529 223 | PIXELS_PER_INCH: EQU $0515 224 | PIXELS_PER_LINE: EQU $0513 225 | PRINTER_FILE_VERSION: EQU $04F3 226 | PRINT_STRINGS: EQU $0532 227 | PSECOND_ADDR: EQU $051F 228 | P_ARG_1: EQU $0520 229 | P_ARG_2: EQU $0521 230 | P_ARG_3: EQU $0523 231 | P_ARG_4: EQU $0523 232 | SPECIAL_EFFECT1: EQU $0527 233 | SPECIAL_EFFECT2: EQU $0528 234 | VARIABLE_SPACE: EQU $04F4 235 | VERTICAL_PIXELS_INCH: EQU $0518 236 | VERTICAL_PIXELS_LEGAL: EQU $051C 237 | VERTICAL_PIXELS_LETTER: EQU $051A 238 | ; 239 | GEOSFL EQU $0801 ;0=SYSTEM NZ=GEOS 240 | ; 241 | CLSNUM: EQU $0802 ;NUMBER OF CLUSTERS? 242 | WORD: EQU $0803 ;WORD TO FIND IN THESAURUS 243 | HWORD: EQU $0816 ;SECOND COPY OF WORD 244 | ; 245 | ENDRAM_MP: EQU $FD80 246 | ENDRAM_M3: EQU $FE7D 247 | ENDRAM_M2: EQU $FE7E 248 | ENDRAM_M1: EQU $FE7F 249 | ENDRAM: EQU $FE80 250 | ; 251 | ; 252 | END 253 | ; 254 | -------------------------------------------------------------------------------- /WW6_2500AD/WDLINK.LNK: -------------------------------------------------------------------------------- 1 | WW 2 | 0 3 | DISPLAY 4 | _ 5 | OVERLAY 6 | _ 7 | THESRUS 8 | _ 9 | MINIDB 10 | _ 11 | DISPATCH 12 | _ 13 | BITMAP 14 | _ 15 | EDITLN 16 | _ 17 | FORMAT 18 | _ 19 | CONFIG 20 | _ 21 | POINTERM 22 | _ 23 | STACK 24 | _ 25 | SUPPORT 26 | _ 27 | BPRINT 28 | _ 29 | PRINT 30 | _ 31 | GPRINT 32 | _ 33 | IMAGE 34 | _ 35 | IMG 36 | _ 37 | FONTWIND 38 | _ 39 | HELP 40 | _ 41 | BUFFERS 42 | _ 43 | ENDMOD 44 | _ 45 | SPRITE 46 | _ 47 | _ 48 | WD. 49 | _ 50 | X 51 | 52 |  53 | -------------------------------------------------------------------------------- /WW6_2500AD/WINDOW.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE WINDOW 3 | PAGE 4 | .LIST OFF 5 | ; 6 | ; WORD WRITER LORAM 7 | ; BY JEFF LOMAX 8 | ; 9 | PUBLIC BYEBYE 10 | PUBLIC CHKOUT 11 | PUBLIC CHROUT 12 | PUBLIC CLALL 13 | PUBLIC CLOSE 14 | PUBLIC CLRCHN 15 | PUBLIC CLRBLK 16 | PUBLIC GETIN 17 | PUBLIC FONT_BASE 18 | PUBLIC MACRO_FIX_X ;INC X AND WRAP 19 | PUBLIC RECORD_PLAY 20 | PUBLIC OPEN 21 | PUBLIC SAVE_LOAD_STRING_LEN 22 | PUBLIC SETLFS 23 | PUBLIC SPACE_OUT 24 | PUBLIC RESTOR 25 | PUBLIC ROMOUT 26 | PUBLIC ROMSIN 27 | PUBLIC RTIBYT 28 | ; 29 | EXTERN DRAWCHAR ;ALTERNATIVE CHROUT (BITMAP) 30 | EXTERN MACRO_LENGTH 31 | EXTERN MACRO_LIMIT 32 | EXTERN MACRO_1_START 33 | EXTERN MACRO_1_END 34 | EXTERN MACRO_2_START 35 | EXTERN MACRO_2_END 36 | EXTERN STRTUP ;BEGIN EXCESS CODE ENDMOD 37 | EXTERN WHICH_MACRO 38 | ; 39 | MAX_MACRO_LENGTH: EQU 119 40 | .LIST ON 41 | ; 42 | ; BASIC START 43 | ; 44 | ORG $801 45 | ; ORG $7FF 46 | ; DB $01,$08 47 | DB $24,8,$A 48 | ; 49 | CBUF2: 50 | ; 51 | DB 0,$9E,'2087',$3A 52 | DB $8F,34,20,20,20,20,20,20,20 53 | DB 20,20,20,20,20,'WORD WRITER' 54 | DB 0,0,0 55 | ; 56 | ; BRANCH TO WORD WRITER 57 | ; 58 | BEGIN 59 | ; 60 | JMP STRTUP ;HELLO WORD WRITER (ENDMOD) 61 | ; 62 | IFTRUE DEBUGGER_PRESENT 63 | NOP 64 | ELSE 65 | PAGE_TABLE: EQU $033C+$1F 66 | PAGE_LENGTH_LO: EQU $033C+$1F+53 67 | PAGE_LENGTH_HI: EQU $033C+$1F+53+53 68 | ; 69 | ENDIF 70 | ; 71 | ; 72 | ; WINDOW ROUTINES 73 | ; 74 | ROMSIN: 75 | PHA ;SAVE AC 76 | LDA #$37 ;GET BASIC/IO/KERNAL 77 | STA $01 ;INTO CONTEXT 78 | ; 79 | IF DEBUGGER_PRESENT 80 | NOP 81 | ELSE 82 | CLI ;START INTERRUPTS 83 | ENDIF 84 | ; 85 | PLA ;RESTORE A 86 | RTS 87 | ; 88 | ; 89 | CHRIN: ;MOST IMPORTANT KERNAL CALL 90 | JSR ROMSIN ;DROPS THRU 91 | JSR $FFCF 92 | ;(FT) 93 | ; 94 | ROMOUT: 95 | PHA ;SAVE AC 96 | LDA #$38 97 | SEI 98 | STA $01 ;KILL OP-SYSTEM 99 | PLA ;RESTORE AC 100 | RTS 101 | ; 102 | VIC_SCREEN_ON: 103 | JSR ROMSIN ;.X UNHARMED 104 | LDA #27 105 | BNE VSO_JOIN 106 | ; 107 | VIC_SCREEN_OFF: 108 | JSR ROMSIN 109 | LDA #11 110 | VSO_JOIN: 111 | STA $D011 112 | BNE ROMOUT 113 | ; 114 | CLR_BACKGROUND: 115 | CLRBLK: 116 | JSR ROMSIN 117 | LDX #0 118 | ?CLRB_LOOP: 119 | LDA STCOLR 120 | STA $D800,X 121 | LDA TXCOLR 122 | STA $286 123 | STA $D84F,X 124 | STA $D900,X 125 | STA $DA00,X 126 | STA $DB00,X 127 | DEX 128 | BNE ?CLRB_LOOP 129 | ; 130 | BEQ ROMOUT 131 | ; 132 | ; 133 | TOP_AREA: 134 | LDA TXCOLR 135 | PHA 136 | LDA BDRBAK 137 | STA TXCOLR 138 | JSR CLRBLK 139 | PLA 140 | STA TXCOLR 141 | RTS 142 | ; 143 | ; 144 | .IFTRUE DEBUGGER_PRESENT 145 | CBUF: DS 30 146 | PAGE_TABLE: 147 | DB 0,0,0,0,0,0,0,0,0,0 148 | PAGE_LENGTH_LO: 149 | DB 0,0,0,0,0,0,0,0,0,0 150 | PAGE_LENGTH_HI: 151 | DB 0,0,0,0,0,0,0,0,0,0 152 | ; 153 | ELSE 154 | CBUF: EQU $033C 155 | ENDIF 156 | ; 157 | ; 158 | ; INDIVIDUAL ROM ROUTINES 159 | ; 160 | CHKIN: 161 | JSR ROMSIN 162 | JSR $FFC6 163 | JMP ROMOUT 164 | ; 165 | CHKOUT: 166 | JSR ROMSIN 167 | JSR $FFC9 168 | JMP ROMOUT 169 | ; 170 | SPACE_OUT: 171 | LDA #' ' 172 | DB $2C ;SKIP 2 173 | CRLF: 174 | LDA #$0D ;SEND CR 175 | CHROUT: 176 | ;INTERFACE TO PRINT PREVIEW 177 | BIT PREVIEW ;ARE WE IN PREVIEW MODE? 178 | BPL CHROUT1 ;[0] NO, DO REGULAR CHROUT 179 | JMP DRAWCHAR ;PLACE CHAR ON 80 COLUMN SCREEN 180 | ; 181 | CHROUT1: 182 | JSR ROMSIN 183 | JSR $FFD2 184 | JMP ROMOUT 185 | ; 186 | CLALL: 187 | JSR ROMSIN 188 | JSR $FFE7 189 | JMP ROMOUT 190 | ; 191 | CLOSE: 192 | JSR ROMSIN 193 | JSR $FFC3 194 | JMP ROMOUT 195 | ; 196 | CLRCHN: 197 | JSR ROMSIN 198 | JSR $FFCC 199 | JMP ROMOUT 200 | ; 201 | .IF CALCULATOR_PRESENT 202 | CRUNCH: 203 | JSR ROMSIN 204 | LDA #0 205 | STA $7A 206 | JSR $A57C ;CRUNCH 207 | LDA #0 208 | STA $7A 209 | LDA #2 210 | STA $7B 211 | JSR $AD9E ;EVAL 212 | JMP ROMOUT 213 | .ENDIF 214 | ; 215 | RECORD_PLAY: 216 | DB 0 ;0 NORMAL FF PLAY 1 RECORD 217 | ; 218 | ; 219 | GETIN: 220 | LDA RECORD_PLAY ;MACRO ACTIVE? 221 | BEQ ?NORMAL_READ ;NO, GO DO NORMAL READ 222 | CMP #$FF ;PLAYING? 223 | BNE ?RECORD ;NO, GO RECORD 224 | ; 225 | LDY WHICH_MACRO ;WHICH MACRO 0/2? 226 | LDA MACRO_LIMIT 227 | CMP MACRO_1_END,Y ;GET INDEX TO START OF MACRO 228 | BNE ?STILL_MORE 229 | ; 230 | JMP ?NORMAL_PLAY_READY 231 | ;*NOTE* CAN GO JUST TO END_PLAY 232 | ; 233 | ?STILL_MORE: 234 | TAX 235 | LDA KEY_RECORD_BUFFER,X 236 | JSR MACRO_FIX_X ;INC X AND WRAP 237 | STX MACRO_LIMIT 238 | ?OUT: 239 | RTS ;EXIT 240 | ; 241 | ; 242 | ;RECORD BUFFER 243 | ?RECORD: 244 | JSR ?NORMAL_READ ;GET A KEY TO RECORD 245 | BEQ ?OUT ;IF NO KEY, SKIP 246 | ; 247 | LDY WHICH_MACRO ;0 OR 2 FOR WHICH MACRO 248 | LDX MACRO_1_END,Y ;GET END ADDRESS FOR THIS MACRO 249 | STA KEY_RECORD_BUFFER,X ;STORE THE KEY 250 | JSR MACRO_FIX_X ;INC X AND WRAP 251 | CPX MACRO_LIMIT ;ARE WE OUT OF MEMORY? 252 | BEQ ?OUT_OF_MEM 253 | ; 254 | ;READY TO RECORD CHARACTER 255 | PHA ;SAVE CHAR FOR WW 256 | TXA 257 | STA MACRO_1_END,Y ;UPDATE THE INDEX 258 | PLA ;RESTORE CHAR FOR WW 259 | RTS ;EXIT 260 | ; 261 | ?OUT_OF_MEM: 262 | LDX #0 263 | STX RECORD_PLAY 264 | ; 265 | JSR NOT_ENOUGH_MEMORY ;ACKNOWLEDGE PROBLEM 266 | ; 267 | ?NORMAL_PLAY_READY: 268 | ; 269 | JMP END_PLAY 270 | ; 271 | ; 272 | ?NORMAL_READ: 273 | JSR ROMSIN 274 | ; 275 | .IF DEBUGGER_PRESENT 276 | ?LOOP: 277 | LDA NDX 278 | BNE ?READ_KEY 279 | JSR $EA87 ;SCAN FOR A KEY 280 | LDY #$05 281 | LDX #$FF 282 | ?XLOOP: 283 | DEX 284 | BNE ?XLOOP 285 | DEY 286 | BNE ?XLOOP 287 | ; 288 | ; JMP ?LOOP 289 | BEQ ?LOOP 290 | ; 291 | ?READ_KEY: 292 | JSR $E5B4 293 | .ELSE 294 | JSR $FFE4 295 | .ENDIF 296 | JMP ROMOUT 297 | ; 298 | GETIN1: 299 | JSR ROMSIN 300 | ; 301 | .IF DEBUGGER_PRESENT 302 | LDA NDX 303 | BNE ?KEY_THERE 304 | JSR $EA87 ;SCAN FOR A KEY 305 | LDY #$05 306 | LDX #$FF 307 | ?XLOOP: 308 | DEX 309 | BNE ?XLOOP 310 | DEY 311 | BNE ?XLOOP 312 | ; 313 | LDA #0 314 | JMP ROMOUT 315 | ?KEY_THERE: 316 | JSR $E5B4 317 | .ELSE 318 | JSR $FFE4 319 | .ENDIF 320 | ; 321 | JMP ROMOUT 322 | ; 323 | MACRO_FIX_X: 324 | INX ;INC X AND WRAP 325 | CPX #119 ;MAX_MACRO_LENGTH 326 | BCC ?OK ;KEEP THIS PAIRED WITH RECORD 327 | LDX #0 ;START IN EDITLN 328 | ?OK: 329 | RTS 330 | ; 331 | ; 332 | OPEN: 333 | JSR ROMSIN 334 | JSR $FFC0 335 | JMP ROMOUT 336 | ; 337 | RTIBYT 338 | LDA $DC0D ;ADDED DECEMBER 1987 339 | RESTOR: 340 | ; 341 | RTI 342 | ; 343 | .IF CALCULATOR_PRESENT 344 | FOUT: 345 | JSR ROMSIN 346 | ; 347 | FOUT1: 348 | JSR $BDDD ;FOUT 349 | JMP ROMOUT 350 | .ENDIF 351 | ; 352 | COUT JSR ROMSIN ;CATALOG OUT 353 | JSR $B391 ;.AYTOFAC 354 | ; JMP FOUT1 ;FOUT 355 | ;*NOTE* CAN RE-ORGANIZE FOUT FALL THRU 356 | FOUT1: 357 | JSR $BDDD ;FOUT 358 | JMP ROMOUT 359 | ; 360 | SETLFS: 361 | STA $B8 ;LA 362 | STX $BA ;FA 363 | STY $B9 ;SA 364 | RTS 365 | ; 366 | SETNAM: 367 | STA $B7 ;FNLEN 368 | STX $BB ;FNADR 369 | STY $BC ;FNADR+1 370 | RTS 371 | ; 372 | BYEBYE: 373 | JSR ROMSIN 374 | JMP $FCE2 375 | ; 376 | DCNAME 377 | DB '0:A,S,R' 378 | ; 379 | ; 380 | .IF CALCULATOR_PRESENT 381 | CERROR: 382 | JSR ROMOUT 383 | JMP CERRVT ;HANDLE ERROR 384 | .ENDIF 385 | ; 386 | ; 387 | CLRBYT: 388 | JSR ROMSIN 389 | STA (SCRMO),Y 390 | JMP ROMOUT 391 | ; 392 | LOAD: 393 | GLOAD: 394 | JSR ROMSIN 395 | LDA #0 396 | JSR $FFD5 397 | JMP ROMOUT 398 | ; 399 | SAVE_RAM: 400 | JSR ROMSIN 401 | JSR $FFD8 402 | JMP ROMOUT 403 | ; 404 | ; 405 | SAVE_LOAD_STRING_LEN: 406 | DB 0 407 | SAVE_LOAD_STRING: 408 | DS 15 409 | ; 410 | GEOFIL: 411 | DB ':*' 412 | GEOSMG: 413 | DB 'GEOS BOOT' 414 | CATD: 415 | DB '$0' ;CAT 416 | ; 417 | PRINTER_DEF_NAME: 418 | ; 419 | DB '0:DEFAULT.GRF*' 420 | ; 421 | EXTENSION_TABLE: 422 | DB 'GRF' 423 | DB 'SCN' 424 | DB 'DRF' 425 | ; 426 | ;# MOVE TO ZP 427 | REGLOAD: 428 | DB 0 429 | ; 430 | ; 431 | END 432 | ; 433 | -------------------------------------------------------------------------------- /WW6_2500AD/WORDDATA: -------------------------------------------------------------------------------- 1 | ALL: WD. 2 | 3 | WW.OBJ: VARIABLS.ASM WINDOW.ASM CALCULA.ASM DICTION.ASM MOVERTNS.ASM\ 4 | PART3.ASM CATALOG.ASM PART1.ASM PART2.ASM DATA.ASM\ 5 | MLIB.ASM THSCODE.ASM PRTCODE.ASM 6 | X -Q WW > AUX 7 | 8 | OVERLAY.OBJ: OVERLAY.ASM 9 | X -Q OVERLAY > AUX 10 | 11 | HELP.OBJ: HELP.ASM 12 | X -Q HELP > AUX 13 | 14 | DISPLAY.OBJ: DISPLAY.ASM 15 | X -Q DISPLAY > AUX 16 | 17 | CONFIG.OBJ: CONFIG.ASM 18 | X -Q CONFIG > AUX 19 | 20 | FONTWIND.OBJ: FONTWIND.ASM 21 | X -Q FONTWIND > AUX 22 | 23 | SUPPORT.OBJ: SUPPORT.ASM 24 | X -Q SUPPORT > AUX 25 | 26 | DISPATCH.OBJ: DISPATCH.ASM 27 | X -Q DISPATCH > AUX 28 | 29 | THESRUS.OBJ: THESRUS.ASM 30 | X -Q THESRUS > AUX 31 | 32 | MINIDB.OBJ: MINIDB.ASM 33 | X -Q MINIDB > AUX 34 | 35 | BITMAP.OBJ: BITMAP.ASM 36 | X -Q BITMAP > AUX 37 | 38 | EDITLN.OBJ: EDITLN.ASM 39 | X -Q EDITLN > AUX 40 | 41 | FORMAT.OBJ: FORMAT.ASM 42 | X -Q FORMAT > AUX 43 | 44 | POINTERM.OBJ: POINTERM.ASM 45 | X -Q POINTERM > AUX 46 | 47 | STACK.OBJ: STACK.ASM 48 | X -Q STACK > AUX 49 | 50 | PRINT.OBJ: PRINT.ASM 51 | X -Q PRINT > AUX 52 | 53 | BPRINT.OBJ: BPRINT.ASM 54 | X -Q BPRINT > AUX 55 | 56 | GPRINT.OBJ: GPRINT.ASM 57 | X -Q GPRINT > AUX 58 | 59 | IMAGE.OBJ: IMAGE.ASM 60 | X -Q IMAGE > AUX 61 | 62 | IMG.OBJ: IMG.ASM 63 | X -Q IMG > AUX 64 | 65 | BUFFERS.OBJ: BUFFERS.ASM 66 | X -Q BUFFERS > AUX 67 | 68 | ENDMOD.OBJ: ENDMOD.ASM 69 | X -Q ENDMOD > AUX 70 | 71 | SPRITE.OBJ: SPRITE.ASM 72 | X -Q SPRITE > AUX 73 | 74 | WD.: WW.OBJ DISPLAY.OBJ OVERLAY.OBJ THESRUS.OBJ MINIDB.OBJ EDITLN.OBJ\ 75 | FORMAT.OBJ POINTERM.OBJ PRINT.OBJ IMAGE.OBJ BUFFERS.OBJ\ 76 | GPRINT.OBJ IMG.OBJ STACK.OBJ ENDMOD.OBJ BPRINT.OBJ HELP.OBJ\ 77 | CONFIG.OBJ SUPPORT.OBJ FONTWIND.OBJ BITMAP.OBJ DISPATCH.OBJ\ 78 | SPRITE.OBJ 79 | LINK WDLINK 80 | 81 | -------------------------------------------------------------------------------- /WW6_2500AD/WORDWRIT: -------------------------------------------------------------------------------- 1 | ALL: WW. 2 | 3 | WW.OBJ: VARIABLS.ASM WINDOW.ASM CALCULA.ASM DICTION.ASM MOVERTNS.ASM\ 4 | PART3.ASM CATALOG.ASM PART1.ASM PART2.ASM DATA.ASM\ 5 | MLIB.ASM THSCODE.ASM PRTCODE.ASM 6 | X -Q WW > AUX 7 | 8 | OVERLAY.OBJ: OVERLAY.ASM 9 | X -Q OVERLAY > AUX 10 | 11 | HELP.OBJ: HELP.ASM 12 | X -Q HELP > AUX 13 | 14 | DISPLAY.OBJ: DISPLAY.ASM 15 | X -Q DISPLAY > AUX 16 | 17 | CONFIG.OBJ: CONFIG.ASM 18 | X -Q CONFIG > AUX 19 | 20 | FONTWIND.OBJ: FONTWIND.ASM 21 | X -Q FONTWIND > AUX 22 | 23 | SUPPORT.OBJ: SUPPORT.ASM 24 | X -Q SUPPORT > AUX 25 | 26 | DISPATCH.OBJ: DISPATCH.ASM 27 | X -Q DISPATCH > AUX 28 | 29 | THESRUS.OBJ: THESRUS.ASM 30 | X -Q THESRUS > AUX 31 | 32 | OUTLN.OBJ: OUTLN.ASM 33 | X -Q OUTLN > AUX 34 | 35 | BITMAP.OBJ: BITMAP.ASM 36 | X -Q BITMAP > AUX 37 | 38 | EDITLN.OBJ: EDITLN.ASM 39 | X -Q EDITLN > AUX 40 | 41 | FORMAT.OBJ: FORMAT.ASM 42 | X -Q FORMAT > AUX 43 | 44 | POINTERM.OBJ: POINTERM.ASM 45 | X -Q POINTERM > AUX 46 | 47 | STACK.OBJ: STACK.ASM 48 | X -Q STACK > AUX 49 | 50 | PRINT.OBJ: PRINT.ASM 51 | X -Q PRINT > AUX 52 | 53 | BPRINT.OBJ: BPRINT.ASM 54 | X -Q BPRINT > AUX 55 | 56 | GPRINT.OBJ: GPRINT.ASM 57 | X -Q GPRINT > AUX 58 | 59 | IMAGE.OBJ: IMAGE.ASM 60 | X -Q IMAGE > AUX 61 | 62 | IMG.OBJ: IMG.ASM 63 | X -Q IMG > AUX 64 | 65 | BUFFERS.OBJ: BUFFERS.ASM 66 | X -Q BUFFERS > AUX 67 | 68 | ENDMOD.OBJ: ENDMOD.ASM 69 | X -Q ENDMOD > AUX 70 | 71 | SPRITE.OBJ: SPRITE.ASM 72 | X -Q SPRITE > AUX 73 | 74 | WW.: WW.OBJ OVERLAY.OBJ THESRUS.OBJ OUTLN.OBJ DISPLAY.OBJ EDITLN.OBJ\ 75 | FORMAT.OBJ POINTERM.OBJ PRINT.OBJ IMAGE.OBJ BUFFERS.OBJ\ 76 | GPRINT.OBJ IMG.OBJ STACK.OBJ ENDMOD.OBJ BPRINT.OBJ HELP.OBJ\ 77 | CONFIG.OBJ SUPPORT.OBJ FONTWIND.OBJ BITMAP.OBJ DISPATCH.OBJ\ 78 | SPRITE.OBJ 79 | LINK WWLINK 80 | 81 | -------------------------------------------------------------------------------- /WW6_2500AD/WW.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | ; WORD WRITER 3 | ; 9/06/86 4 | ; BY JEFF LOMAX 5 | ; 6 | PW 92 7 | .LIST OFF 8 | ; 9 | INCLUDE WWSETUP.ASM 10 | OVERLAY_ASSEMBLED: EQU 0 ; OUTLINER (OUTLN.ASM), used in OVERLAY.ASM 11 | ; 12 | PUBLIC CLSNUM 13 | PUBLIC WORD 14 | PUBLIC END_OF_TEXT 15 | PUBLIC STARTTEXT 16 | PUBLIC COLUMN 17 | PUBLIC COUNT 18 | ; 19 | PUBLIC ABORT_FUNCTION 20 | PUBLIC ACTUAL_COLUMN_OUT 21 | PUBLIC AXASCII 22 | PUBLIC CATD 23 | PUBLIC CBUF 24 | PUBLIC CHANGECOD 25 | PUBLIC CHKIN 26 | PUBLIC CHKNUM 27 | PUBLIC CHNL2I 28 | PUBLIC CLR_BACKGROUND 29 | PUBLIC CLRAXY 30 | PUBLIC CHRIN 31 | PUBLIC CLOSE2 32 | PUBLIC CLSANY 33 | PUBLIC CRLF 34 | PUBLIC DECTE1 35 | PUBLIC DCNAME 36 | PUBLIC EXTENSION_TABLE 37 | .IF CALCULATOR_PRESENT 38 | PUBLIC FC_CALCULATOR 39 | .ENDIF 40 | PUBLIC FC_CATALOG 41 | PUBLIC FC_CHECK_SPELLING 42 | PUBLIC FC_CHANGE_DEVICE 43 | PUBLIC FC_DISK_COMMAND 44 | ; PUBLIC FC_ENTER_OUTLINER 45 | PUBLIC FC_THESAURUS_LOOKUP 46 | PUBLIC FC_LOAD_FILE 47 | PUBLIC FC_PRINTER_CODES 48 | PUBLIC FC_RUN_STOP 49 | PUBLIC FC_SAVE_DEF_PRINT_FILE 50 | PUBLIC FC_SAVE_FILE 51 | PUBLIC FC_SAVE_LOAD_MERGE 52 | PUBLIC FC_SEARCH 53 | PUBLIC FC_SEARCH_AGAIN 54 | ; PUBLIC FC_SET_INDEX 55 | PUBLIC FC_SHOW_MEMORY 56 | PUBLIC FC_TOGGLE_INSERT 57 | PUBLIC GEOFIL 58 | PUBLIC GEOSMG 59 | PUBLIC GETIN1 60 | PUBLIC GLOAD 61 | PUBLIC HEADER 62 | PUBLIC HEXIN 63 | PUBLIC HEXIN1 64 | PUBLIC HEXOUT 65 | PUBLIC INCEO1 66 | PUBLIC INIDSK 67 | PUBLIC INITIL 68 | PUBLIC INIT_BLOCK_TWO 69 | PUBLIC KILL_BLOCK 70 | PUBLIC LKFDP1 71 | PUBLIC LOAD 72 | PUBLIC LSTCLR 73 | PUBLIC MERGE_NAMES 74 | PUBLIC MNLINE 75 | PUBLIC MVTEMV 76 | PUBLIC OPENE1 77 | PUBLIC OPEN_FILE_A 78 | PUBLIC OPEN_A_DV_15 79 | PUBLIC OPEN_USER_FILE_1 80 | PUBLIC OPEN_15_NO_NAME 81 | PUBLIC OPNDIC 82 | ; PUBLIC OUTMODE 83 | PUBLIC PAGNUM 84 | PUBLIC PAGOUT 85 | PUBLIC PAGE_LENGTH_HI 86 | PUBLIC PAGE_LENGTH_LO 87 | PUBLIC PAGE_TABLE 88 | PUBLIC PRESS_ANY_KEY_CHROUT 89 | PUBLIC PRINTER_DEF_NAME 90 | ; PUBLIC PRTSET 91 | PUBLIC PULLDN 92 | PUBLIC PFILE_LEN 93 | PUBLIC PRTP0 94 | PUBLIC PTCTRL 95 | PUBLIC READWD 96 | PUBLIC REGLOAD 97 | PUBLIC REMOVE_BLOCK 98 | PUBLIC RETOUT 99 | PUBLIC RETOUT_X 100 | PUBLIC RETNATOTE 101 | PUBLIC RET_AT_TEXT_Y 102 | PUBLIC SAVE_DOCUMENT 103 | PUBLIC SAVE_DOCUMENT_1 104 | PUBLIC SEARCH_AGAIN_FROM_CURS 105 | PUBLIC SEARCH_STRING_LENGTH 106 | PUBLIC SETNAM 107 | PUBLIC SETUP_RW 108 | PUBLIC SET_MARGIN_ONLY 109 | PUBLIC STATUS 110 | PUBLIC STATUS_DEFAULT_IN 111 | PUBLIC SWPBLK 112 | PUBLIC TETORETNA 113 | PUBLIC TOASCI 114 | PUBLIC TOP_AREA 115 | PUBLIC VIC_SCREEN_ON 116 | PUBLIC VIC_SCREEN_OFF 117 | PUBLIC WAIT_FOR_KEY 118 | PUBLIC WAIT_FOR_KEY_AND_HEADER 119 | PUBLIC XDEVICEN 120 | ; 121 | ; 122 | ; 123 | EXTERN KILJUS 124 | EXTERN CMACST 125 | EXTERN PRTLST 126 | EXTERN PRTDRP 127 | EXTERN CHNPAG 128 | EXTERN OUTMODE ;OVERLAY 129 | EXTERN PCBOX 130 | EXTERN PCSTART 131 | ; 132 | EXTERN AD28SC 133 | EXTERN AD28SM 134 | EXTERN ADDASM 135 | EXTERN ASCTYP 136 | EXTERN AX_INTO_CUR_PAGE_LENGTH 137 | EXTERN AX_INTO_MARGIN 138 | EXTERN AX_INTO_MSGOUT 139 | EXTERN AX_INTO_PAGE_LENGTH 140 | EXTERN AX_INTO_PT 141 | EXTERN AX_INTO_TEXT 142 | EXTERN AX_INTO_P2 143 | ; EXTERN BIGGEST_POINTSIZE 144 | EXTERN BOTTOM_MARGIN 145 | EXTERN BP_PLS_CUR_PAGE_LENGTH 146 | EXTERN BUMP_COLUMN_COUNT 147 | EXTERN COLORS 148 | EXTERN TXCOLR 149 | EXTERN STCOLR 150 | EXTERN BDRBAK 151 | EXTERN DEVICE 152 | ; 153 | EXTERN CURLIN 154 | ; EXTERN CUR_PAGE_LENGTH 155 | EXTERN CTRL_SHIFT 156 | EXTERN DBUMP_COLUMN_COUNT 157 | EXTERN DEC_AX_BY_PT 158 | EXTERN DEC_AX_BY_1 159 | EXTERN DEC_AX_BY_Y 160 | EXTERN DEC_P2_BY_1 161 | EXTERN DEC_ZPPT_X 162 | EXTERN DEL_WHOLE_LINE 163 | EXTERN DISPLY 164 | EXTERN DISPLYOFF 165 | EXTERN DISPLAYON 166 | EXTERN DISPLAY_SCREEN_AND_HEADER 167 | EXTERN DISPLAY_ON_AND_LINE_OUT 168 | EXTERN DIV_PT_BY_S ;POINTER/STOREY POINTER=quo .A=rem 169 | EXTERN DIV_AX_BY_Y 170 | ; EXTERN DOCUMENT_ALTERED 171 | EXTERN D_PIXELS_PER_INCH 172 | ; EXTERN EDIT_BUFFER_CHANGED 173 | EXTERN EOM_TEST_PLUS_Y 174 | EXTERN EOT_INTO_AX 175 | EXTERN END_PLAY 176 | EXTERN EXTENDED_CODES 177 | EXTERN FC_BEGINNING_OF_LINE 178 | EXTERN FC_CLEAR_HOME 179 | EXTERN FC_CLEAR_HOME_DSP 180 | EXTERN FC_CLEAR_HOME_NT 181 | EXTERN FC_CURSOR_RIGHT 182 | EXTERN FC_PAGE_FORWARD_NT 183 | EXTERN FC_REFORMAT_DOC 184 | EXTERN FC_WORK_KEY 185 | EXTERN FC_WORK_KEY_INS 186 | EXTERN FEATUR 187 | EXTERN FILE_STATUS 188 | EXTERN FULL_SCREEN 189 | EXTERN FONT_DEF_LEN 190 | EXTERN FONT_LEADING 191 | EXTERN GET_MARGIN 192 | EXTERN GET_PRINT_WINDOW_NUMBER 193 | EXTERN GET_SPACING 194 | EXTERN INSERTM 195 | EXTERN INC_AX_BY_1 196 | EXTERN INC_P3_BY_1 197 | EXTERN INSTALL_FONTS 198 | EXTERN IW_INTO_AX 199 | EXTERN KEY_RECORD_BUFFER 200 | EXTERN KEY_RECORD_INDEX 201 | EXTERN KEY_RECORD_END 202 | EXTERN LEFPRT 203 | EXTERN LINE_OUT 204 | EXTERN MOVE_TO_START_OF_WORD 205 | EXTERN MGP1PAX 206 | EXTERN MUL_AX_PT 207 | EXTERN NUMPGS 208 | EXTERN PAGE_LENGTH 209 | EXTERN PW_START_PAGE 210 | EXTERN NOT_ENOUGH_MEMORY 211 | EXTERN ON_AND_REFREASH 212 | EXTERN PATTERN_BYTES 213 | EXTERN PEELNU 214 | EXTERN PLNLEN 215 | EXTERN POP_AX 216 | EXTERN POP_TEXT 217 | EXTERN PUSH_EOT 218 | EXTERN PUSH_TEXT 219 | EXTERN PRINT 220 | EXTERN PRTPRM 221 | EXTERN PRTDEVICE 222 | EXTERN PRTWIN_TOPMAR 223 | EXTERN PTCRLF 224 | EXTERN PXCRLF 225 | EXTERN P2_INTO_PT 226 | EXTERN PT_INTO_P1 227 | EXTERN PT_INTO_AX 228 | EXTERN REFORMAT_DOC 229 | EXTERN REMOVE_A_BYTES ;DEL .A BYTES AT TEXTP-POINTERM 230 | EXTERN RESET 231 | EXTERN SAVEPRNTE 232 | EXTERN SCAN_FOR_KEY 233 | EXTERN SET_LEFT_MARGIN 234 | EXTERN SET_LINE_MARGIN 235 | EXTERN SET_TO_TEXT_OR_GRAPHICS 236 | EXTERN SET_VMARGINS 237 | EXTERN SHIFT 238 | EXTERN START_OF_TEXT 239 | EXTERN STPAGE 240 | EXTERN STRIP 241 | EXTERN TAB_TABLE 242 | EXTERN TEXT_INTO_AX ;POINTERM 243 | EXTERN TOP_MARGIN 244 | EXTERN UNDTAB 245 | EXTERN USER_DEFINED_LEAD 246 | EXTERN VID_A_TO_SCRMO ;SUPPORT 247 | EXTERN WORK_KEY 248 | EXTERN WORK_SPACE_D200 249 | EXTERN W_INTO_P2 250 | EXTERN W_INTO_P3 251 | EXTERN W_INTO_PT 252 | EXTERN XLATE 253 | EXTERN Y_TO_END_LINE 254 | EXTERN JUSTIFY_FORMAT ;XUSTTX 255 | ;(BITMAP) 256 | EXTERN INITILIZE40 257 | ; 258 | INCLUDE VARIABLS.ASM 259 | .LIST ON 260 | INCLUDE WINDOW.ASM 261 | .LIST OFF 262 | INCLUDE CALCULA.ASM 263 | .LIST ON 264 | INCLUDE DICTION.ASM 265 | INCLUDE MOVERTNS.ASM 266 | INCLUDE PART3.ASM 267 | INCLUDE CATALOG.ASM 268 | INCLUDE PART1.ASM 269 | INCLUDE PART2.ASM 270 | INCLUDE DATA.ASM 271 | INCLUDE MLIB.ASM 272 | INCLUDE THSCODE.ASM 273 | INCLUDE PRTCODE.ASM 274 | ; 275 | ;2019 Mods 276 | ;ORDER OF FILES COPIED FROM WWLINK.LNK 277 | INCLUDE DISPLAY.ASM 278 | INCLUDE OVERLAY.ASM 279 | INCLUDE THESRUS.ASM 280 | 281 | INCLUDE OUTLN.ASM 282 | ;INCLUDE MINIDB.ASM 283 | 284 | INCLUDE DISPATCH.ASM 285 | INCLUDE BITMAP.ASM 286 | INCLUDE EDITLN.ASM 287 | INCLUDE FORMAT.ASM 288 | INCLUDE CONFIG.ASM 289 | INCLUDE POINTERM.ASM 290 | INCLUDE STACK.ASM 291 | INCLUDE SUPPORT.ASM 292 | INCLUDE BPRINT.ASM 293 | INCLUDE PRINT.ASM 294 | INCLUDE GPRINT.ASM 295 | INCLUDE IMAGE.ASM 296 | INCLUDE IMG.ASM 297 | INCLUDE FONTWIND.ASM 298 | INCLUDE HELP.ASM 299 | INCLUDE BUFFERS.ASM 300 | INCLUDE ENDMOD.ASM 301 | INCLUDE SPRITE.ASM 302 | ; 303 | END 304 | ; 305 | -------------------------------------------------------------------------------- /WW6_2500AD/WWBOOT.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | TITLE WWBOOT 3 | PW 80 4 | ; 5 | ; WORD WRITER BOOTER 6 | ; BY JEFF LOMAX 7 | ; 8 | FAST_LOAD_ADDRESS: EQU $C000 9 | WORD_WRITER_ADDRESS: EQU $0801 10 | WORD_WRITER_RUN: EQU $0827-1 11 | ; 12 | CLALL: EQU $FFE7 13 | CLOSE: EQU $FFC3 14 | CLRCHN: EQU $FFCC 15 | SETLFS: EQU $FFBA 16 | SETNAM: EQU $FFBD 17 | LOAD: EQU $FFD5 18 | ; 19 | ;BASIC START 20 | ; 21 | ORG $801 22 | DB $24,8,$A 23 | ; 24 | CBUF2: 25 | ; 26 | DB 0,$9E,'2087',$3A 27 | DB $8F,34,20,20,20,20,20,20,20 28 | DB 20,20,20,20,20,'WORD WRITER' 29 | DB 0,0,0 30 | ; 31 | ; BRANCH TO WORD WRITER 32 | ; 33 | BEGIN: 34 | ; 35 | SEI 36 | CLD 37 | LDX #$FF 38 | TXS 39 | ; 40 | LDA $BA 41 | STA DRIVE ;GET CURRENT DRIVE 42 | JSR CLRCHN 43 | JSR CLALL 44 | ; 45 | LDA $02FF 46 | CMP #$A5 47 | BEQ NOT_GEOS 48 | ; 49 | LDX #$0 50 | STX $02FF ;GEOS FLAG 51 | ; 52 | LDX #3 53 | CKGEOS 54 | LDA $C006,X 55 | CMP GEOSMG,X 56 | BNE NOT_GEOS 57 | DEX 58 | BPL CKGEOS 59 | LDA #$A5 60 | STA $02FF ;FLAG GEOS PRESENT 61 | ; 62 | NOT_GEOS: 63 | ; 64 | LDA $330 ;GET SYSTEM LOAD VECTOR 65 | CMP #165 ;HAS IT BEEN CHANGED? 66 | BEQ ?LOAD_FL ;BIF SO TO LOAD FL 67 | LDA $331 ;GET SYSTEM LOAD VECTOR HI 68 | CMP #244 ;HAS IT BEEN CHANGED? 69 | BNE ?NOT_THERE ;IF NOT CHANGED, SKIP LOAD 70 | ; 71 | ?LOAD_FL: 72 | LDA #2 73 | LDX #FAST_LOAD_NAME 75 | JSR SETNAM 76 | ; 77 | LDA #2 78 | LDX DRIVE 79 | LDY #0 80 | JSR SETLFS 81 | ; 82 | LDX #FAST_LOAD_ADDRESS 84 | LDA #0 85 | JSR LOAD 86 | LDA #2 87 | JSR CLOSE 88 | JSR CLRCHN 89 | ; 90 | LDA $C000 91 | CMP #$A9 92 | BNE ?NOT_THERE 93 | LDA $C020 94 | CMP #$F5 95 | BNE ?NOT_THERE 96 | LDA $C040 97 | CMP #$4C 98 | BNE ?NOT_THERE ;JUST TEST 3 BYTES TO SEE IF FILE LOADED 99 | ; 100 | JSR $C000 ;ENABLE SWIFT-LOAD 101 | ; 102 | ?NOT_THERE: 103 | ; 104 | LDX #0 105 | ?LOOP: 106 | LDA MESSAGE,X 107 | BEQ ?DONE 108 | JSR $FFD2 109 | INX 110 | BNE ?LOOP 111 | ; 112 | ?DONE: 113 | ; 114 | LDA #3 115 | LDX #WORD_WRITER_NAME 117 | JSR SETNAM 118 | ; 119 | LDA #2 120 | LDX DRIVE 121 | LDY #0 122 | JSR SETLFS 123 | ; 124 | LDX #WORD_WRITER_ADDRESS 126 | LDA #>WORD_WRITER_RUN 127 | PHA 128 | LDA # ..\WW6_ACME\%%1 3 | -------------------------------------------------------------------------------- /WW6_ACME/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "build -> C64 -> VICE", 8 | "type": "shell", 9 | "osx": { 10 | "command": "../bin/mac/acme -f cbm -l build/labels -o build/${fileBasenameNoExtension}.prg ${fileBasename} && /Applications/Vice/x64.app/Contents/MacOS/x64 -moncommands build/labels build/${fileBasenameNoExtension}.prg 2> /dev/null", 11 | }, 12 | "windows": { 13 | "command": "..\\bin\\win\\acme -f cbm -l build/labels -o build/${fileBasenameNoExtension}.prg ${fileBasename} ; C:/tools/vice/x64.exe -moncommands build/labels build/${fileBasenameNoExtension}.prg" 14 | }, 15 | "linux": { 16 | "command": "../bin/linux/acme -f cbm -l build/labels -o build/${fileBasenameNoExtension}.prg ${fileBasename} && x64 -moncommands build/labels build/${fileBasenameNoExtension}.prg 2> /dev/null" 17 | }, 18 | "group": { 19 | "kind": "build", 20 | "isDefault": true 21 | }, 22 | "presentation": { 23 | "clear": true 24 | }, 25 | "problemMatcher": { 26 | "owner": "acme", 27 | "fileLocation": ["relative", "${workspaceFolder}"], 28 | "pattern": { 29 | "regexp": "^(Error - File\\s+(.*), line (\\d+) (\\(Zone .*\\))?:\\s+(.*))$", 30 | "file": 2, 31 | "location": 3, 32 | "message": 1 33 | } 34 | } 35 | }, 36 | { 37 | "label": "build -> C64 -> Pucrunch -> VICE", 38 | "type": "shell", 39 | "osx": { 40 | "command": "bin/mac/acme -f cbm -l build/labels -o build/main.prg code/main.asm && bin/mac/pucrunch build/main.prg build/main.prg && /Applications/Vice/x64.app/Contents/MacOS/x64 -moncommands build/labels build/main.prg 2> /dev/null", 41 | }, 42 | "windows": { 43 | "command": "bin\\win\\acme -f cbm -l build/labels -o build/main.prg code/main.asm && bin\\win\\pucrunch build/main.prg build/main.prg && C:/tools/vice/x64.exe -moncommands build/labels build/main.prg", 44 | }, 45 | "linux": { 46 | "command": "bin/linux/acme -f cbm -l build/labels -o build/main.prg code/main.asm && bin/linux/pucrunch build/main.prg build/main.prg && x64 -moncommands build/labels build/main.prg 2> /dev/null" 47 | }, 48 | "group": "build", 49 | "presentation": { 50 | "clear": true 51 | }, 52 | "problemMatcher": { 53 | "owner": "acme", 54 | "fileLocation": ["relative", "${workspaceFolder}"], 55 | "pattern": { 56 | "regexp": "^(Error - File\\s+(.*), line (\\d+) (\\(Zone .*\\))?:\\s+(.*))$", 57 | "file": 2, 58 | "location": 3, 59 | "message": 1 60 | } 61 | } 62 | }, 63 | { 64 | "label": "build -> C16 -> VICE", 65 | "type": "shell", 66 | "osx": { 67 | "command": "bin/mac/acme -f cbm -l build/labels -o build/main.prg code/main.asm && /Applications/Vice/xplus4.app/Contents/MacOS/xplus4 -moncommands build/labels build/main.prg 2> /dev/null", 68 | }, 69 | "windows": { 70 | "command": "bin\\win\\acme -f cbm -l build/labels -o build/main.prg code/main.asm && C:/tools/vice/xplus4.exe -moncommands build/labels build/main.prg" 71 | }, 72 | "linux": { 73 | "command": "bin/linux/acme -f cbm -l build/labels -o build/main.prg code/main.asm && xplus4 -moncommands build/labels build/main.prg 2> /dev/null" 74 | }, 75 | "group": "build", 76 | "presentation": { 77 | "clear": true 78 | }, 79 | "problemMatcher": { 80 | "owner": "acme", 81 | "fileLocation": [ 82 | "relative", 83 | "${workspaceFolder}" 84 | ], 85 | "pattern": { 86 | "regexp": "^(Error - File\\s+(.*), line (\\d+) (\\(Zone .*\\))?:\\s+(.*))$", 87 | "file": 2, 88 | "location": 3, 89 | "message": 1 90 | } 91 | } 92 | }, 93 | { 94 | "label": "build -> C128 -> VICE", 95 | "type": "shell", 96 | "osx": { 97 | "command": "bin/mac/acme -f cbm -l build/labels -o build/main.prg code/main.asm && /Applications/Vice/x128.app/Contents/MacOS/x128 -moncommands build/labels build/main.prg 2> /dev/null", 98 | }, 99 | "windows": { 100 | "command": "bin\\win\\acme -f cbm -l build/labels -o build/main.prg code/main.asm && C:/tools/vice/x128.exe -moncommands build/labels build/main.prg" 101 | }, 102 | "linux": { 103 | "command": "bin/linux/acme -f cbm -l build/labels -o build/main.prg code/main.asm && x128 -moncommands build/labels build/main.prg 2> /dev/null" 104 | }, 105 | "group": "build", 106 | "presentation": { 107 | "clear": true 108 | }, 109 | "problemMatcher": { 110 | "owner": "acme", 111 | "fileLocation": [ 112 | "relative", 113 | "${workspaceFolder}" 114 | ], 115 | "pattern": { 116 | "regexp": "^(Error - File\\s+(.*), line (\\d+) (\\(Zone .*\\))?:\\s+(.*))$", 117 | "file": 2, 118 | "location": 3, 119 | "message": 1 120 | } 121 | } 122 | }, 123 | { 124 | "label": "build -> VC20 -> VICE", 125 | "type": "shell", 126 | "osx": { 127 | "command": "bin/mac/acme -f cbm -l build/labels -o build/main.prg code/main.asm && /Applications/Vice/xvic.app/Contents/MacOS/xvic -moncommands build/labels build/main.prg 2> /dev/null", 128 | }, 129 | "windows": { 130 | "command": "bin\\win\\acme -f cbm -l build/labels -o build/main.prg code/main.asm && C:/tools/vice/xvic.exe -moncommands build/labels build/main.prg" 131 | }, 132 | "linux": { 133 | "command": "bin/linux/acme -f cbm -l build/labels -o build/main.prg code/main.asm && xvic -moncommands build/labels build/main.prg 2> /dev/null" 134 | }, 135 | "group": "build", 136 | "presentation": { 137 | "clear": true 138 | }, 139 | "problemMatcher": { 140 | "owner": "acme", 141 | "fileLocation": [ 142 | "relative", 143 | "${workspaceFolder}" 144 | ], 145 | "pattern": { 146 | "regexp": "^(Error - File\\s+(.*), line (\\d+) (\\(Zone .*\\))?:\\s+(.*))$", 147 | "file": 2, 148 | "location": 3, 149 | "message": 1 150 | } 151 | } 152 | } 153 | ] 154 | } -------------------------------------------------------------------------------- /WW6_ACME/BITMAP.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone BITMAP 3 | ; 4 | !SOURCE "WWSETUP.ASM" 5 | !SOURCE "VARIABLS.ASM" 6 | ; 7 | ; 8 | ; 9 | ; 10 | ; 11 | ;THIS MODULE INITS 80 COLUMN HI-RES MODE ON A COMMODORE 64 AND 12 | ;WILL PREFORM A TEXT DISPLAY OF PETASCII CHARACTERS. 13 | ; 14 | ;PRIMITIVE CALLS: 15 | ; 16 | ;INITILIZE80 17 | ; SETS UP AND CLEARS THE 80 COLUMN SCREEN. COLORS NOT PRESERVED. 18 | ; RESIDES AS $E000 19 | ; 20 | ;INITILIZE40 21 | ; SETS UP NORMAL SYSTEM 40 COLUMN SCREEN 22 | ; 23 | ;DRAWCHAR 24 | ; PLACES PETASCII CHARACTER (IF VALID) AT CURSOR, INCREMENTS 25 | ; CURSOR 26 | ; 27 | ;SETATTRIB 28 | ; SETS ATTRIBUTE OF UNDERLINED, REVERSED, OR NORMAL 29 | ; 30 | ; 31 | BITMAP = $E000 32 | BITCURSOR = POINTER2 33 | ; 34 | ;BITCOLUMN: DB 0 35 | BITCOLUMN = POINTER4 36 | MASK: 37 | !byte 0;MASK FOR SETTING ON SCREEN F0 0F 38 | ;T1: DB 0 ;TEMPORARY: DRAWCR,MAKE3X8,INIT80 39 | T1 = POINTER4+1 40 | RESULT: 41 | !byte 0;RETURN VALUE FROM 3X8 42 | XYTEMP 43 | !word 0;SAVE X & Y IN DRAWCR 44 | BITROW 45 | !byte 0; 46 | ; 47 | ; 48 | INITILIZE80: 49 | ; 50 | LDA #$D8 51 | STA POINTER1+1 52 | STA POINTER3+1 53 | LDY #$00 54 | STY POINTER1 55 | STY POINTER3 56 | ; 57 | LDX #5 58 | STX T1 59 | ; 60 | ; LDY #0 61 | MOVECR: 62 | ;COPY SECTION OF CHARACTER SET TO $D800 FOR USE 63 | ; 64 | LDX #%00110011 ;ENABLE CHAR ROM 65 | STX $1 66 | LDA (POINTER1),Y 67 | LDX #%00111000 ;ALL RAM 68 | STX $1 69 | STA (POINTER3),Y 70 | DEY 71 | BNE MOVECR 72 | ; 73 | INC POINTER1+1 74 | INC POINTER3+1 75 | ; 76 | DEC T1 ;4 PAGES FROM CSET TO $D800 77 | BNE MOVECR 78 | ; 79 | LDA #0 80 | STA PRTFEATURE ;SET DRAWING ATTRIBUTE TO NORMAL 81 | STA BITCOLUMN ;HOME POSITION 82 | STA BITROW 83 | ; 84 | JSR CLEARBM ;AND FILL BITMAP W/0 (CLEAR) 85 | ; 86 | ;.Y [$00] 87 | LDA TXCOLR 88 | ASL 89 | ASL 90 | ASL 91 | ASL 92 | ORA BDRBAK 93 | CLEARSCRN: 94 | STA $DC00,Y 95 | STA $DD00,Y 96 | STA $DE00,Y 97 | STA $DF00,Y 98 | DEY 99 | BNE CLEARSCRN 100 | ; 101 | LDA #%00110111 ;RESTORE "NORMAL" CONFIG 102 | STA $1 ;TO SET UP VIC 103 | ; 104 | LDA #63 105 | STA 56578 ;BE SURE OUTPUTS FOR VICII BANK 106 | ; 107 | LDA #148 108 | STA 56576 ;SET TO BANK 3 109 | ; 110 | LDA #59 111 | STA 53265 ;TURN ON BITMAP MODE 112 | ; 113 | LDA #%01111111 ;SCREEN IN $DC00 114 | STA 53272 ;& BITMAP IN SECOND 8 K 115 | ; 116 | ;P2 = BITCURSOR 117 | ; 118 | SETBC: 119 | ; LDA #BITMAP 122 | ; STA BITCURSOR+1 123 | JSR W_INTO_P2 124 | !word BITMAP 125 | ; 126 | ALLRAM: 127 | ; 128 | LDX #%00111000 ;ALL RAM 129 | STX $1 130 | RTS 131 | ; 132 | ; 133 | INITILIZE40: 134 | ; 135 | SEI 136 | LDA #%00110111 ;RESTORE "NORMAL" CONFIG 137 | STA $1 ;TO SET UP VIC 138 | ; 139 | LDA #63 140 | STA 56578 ;BE SURE OUTPUTS FOR VICII BANK 141 | ; 142 | LDA #199 143 | STA 56576 ;SET TO BANK 3 144 | ; 145 | LDA #155 146 | STA 53265 ;TURN ON BITMAP MODE 147 | ; 148 | LDA #23 149 | STA 53272 ;IN SECOND 8 K 150 | ; 151 | ; JMP IOINIT 152 | BNE ALLRAM ;BRA RTS 153 | ; 154 | ; 155 | CLEARBM: 156 | ;SET BITMAP TO .A 157 | PHA 158 | JSR W_INTO_P1 159 | !word BITMAP-64;MOVE VALUE TO MISS "VECTORS" 160 | PLA 161 | ; 162 | LDY #$00 163 | LDX #32 ;NUMBER OF PAGES 164 | CLEARB1: 165 | STA (POINTER1),Y 166 | DEY 167 | BNE CLEARB1 168 | ; 169 | INC POINTER1+1 170 | DEX 171 | BNE CLEARB1 ;REST PAGES 172 | ; 173 | RTS 174 | ; 175 | MAKE3X8: 176 | ;MAKE THIS CHARACTER 3X8 177 | ;DO NOT HARM .Y 178 | ;DATA IN .A 179 | ;RESULT IN RESULT 180 | LDX #0 181 | STX RESULT 182 | LDX HOLDSHIT ;#CMASK1 183 | STX T1 184 | LDX #3 ;NUMBER OF BITS TO ROTATE IN 185 | ; 186 | MAKE3X82: 187 | ASL T1 ;IS THIS A BIT ROW TO KEEP? 188 | BCC MAKE3X83 ;NO, CC 189 | ASL 190 | ROL RESULT ;SET BIT IN RESULT 191 | DEX 192 | BNE MAKE3X82 193 | CLC ;ALIGN 194 | LDA RESULT 195 | ROL 196 | RTS 197 | ; 198 | MAKE3X83: 199 | ASL ;DROP BIT FROM DATA 200 | JMP MAKE3X82 201 | ; 202 | ; 203 | DOCARRET: 204 | ;PERFORM CARRIAGE RETURN 205 | ; 206 | INC BITROW 207 | ; 208 | LDA BITROW 209 | CMP #23 ;S/B 23 210 | BCC DOCARRET8 211 | ; 212 | DEC BITROW ;KEEP AT BOTTOM OF SCREEN 213 | ; 214 | ENDBITMAP = $FFFF-192-$100 215 | ; 216 | JSR PUSH_EOT ;SAVE AND RESTORE EOT 217 | LDA #ENDBITMAP 220 | STA EOT+1 ;"END" ADDRESS FOR COPYDN 221 | ; 222 | LDA #BITMAP 225 | STA MOVELO+1 ;START OF COPYDN 226 | ; 227 | BIT1STLINE = BITMAP+320 228 | ; 229 | LDA #BIT1STLINE 232 | STA MOVEHI+1 ;END OF COPY RANGE 233 | ; 234 | JSR COPYDN 235 | JSR POP_EOT ;RESTORE EOT 236 | ; 237 | DOCARRET8: 238 | ; 239 | JSR W_INTO_P1 240 | !word BITMAP 241 | ; 242 | LDA BITROW 243 | STA T1 244 | ; 245 | DOCARRET1: 246 | LDA #<320 247 | LDX #>320 248 | JSR INC_P1_BY_AX 249 | ; 250 | DEC T1 251 | BNE DOCARRET1 252 | ; 253 | JSR P1_INTO_P2 254 | ; 255 | DOCARRET9: 256 | LDA #0 257 | STA BITCOLUMN 258 | JMP DRAWCHAR3 259 | ; 260 | ; 261 | DRAWCHAR: 262 | ;PLACE CHARACTER AT BITCURSOR 263 | STX XYTEMP 264 | STY XYTEMP+1 265 | ; 266 | CMP #$0D 267 | BEQ DOCARRET ;DO A CARRIAGE RETURN 268 | CMP #$0A 269 | BEQ DRAWCHAR3 270 | LDX BITCOLUMN 271 | CPX #80 272 | BCS DRAWCHAR3 ;EXIT IF BITCOLUMN > 80 273 | ; 274 | DRAWCHAR0: 275 | ; 276 | JSR PETASC 277 | ; 278 | ; AND #$7F 279 | ; 280 | PHA ;CHARACTER TO DRAW (ASSUME SCREEN CODE FOR NOW) 281 | ; 282 | JSR SETSHIFT ;SET SHIFT BYTE FOR CHARACTER .A 283 | ; 284 | JSR W_INTO_PT 285 | !word $D800 286 | PLA 287 | LDX #8 288 | JSR MUL_AX_PT ;Return POINTER = (.A*.X)+POINTER, DESTROY P1 289 | JSR PT_INTO_P1 290 | ; 291 | LDY #0 ;INDEX THRU CHARACTER 292 | DRAWCHAR1: 293 | ; 294 | LDA #$F0 295 | STA MASK ;ASSUME LOW NYBBLE REPLACED 296 | ; 297 | LDA (POINTER1),Y ;READ CHARACTER VALUE 298 | JSR MAKE3X8 ;MAKE THIS CHARACTER 3X8 299 | ; 300 | TAX ;SAVE CHARACTER 301 | LDA ATTRIBUTES ;TEST FOR UNDERLINING CHARACTER 302 | AND #1 303 | ; 304 | BNE .TEST_UNDERLINE ;UNDERLINING IS ON, DRAW UNDERSCORE? 305 | LDA ATTRIBUTES ;ARE ANY OTHER ATTRIBUTES ON? 306 | AND #$FE 307 | PHP 308 | TXA 309 | PLP 310 | BEQ DRAWCHAR1C 311 | BNE DRAWCHAR1B 312 | ; 313 | .TEST_UNDERLINE: 314 | TXA 315 | CPY #7 ;TEST UNDERLINING ROW? 316 | BNE DRAWCHAR1C ;NO, NOT ON LAST COLUMN 317 | LDA #$0F ;YES UNDERLINING 318 | BNE DRAWCHAR1C 319 | ; 320 | DRAWCHAR1B: 321 | ;REVERSE MODE IF NOT UNDERLINING 322 | EOR #$0F 323 | ; 324 | DRAWCHAR1C: 325 | ; 326 | PHA ;SAVE [LOWER 4] SIGNIFICANT 327 | LDA BITCOLUMN ;MSN OR LSN? 328 | AND #1 329 | BNE DRAWCHAR2 ;LEAST SIG NYBBLE 330 | PLA 331 | ASL 332 | ASL 333 | ASL 334 | ASL ;NOW SET AS HI NYBBLE 335 | PHA 336 | LDA #$0F 337 | STA MASK 338 | ; 339 | DRAWCHAR2: 340 | PLA 341 | STA T1 342 | LDA (BITCURSOR),Y ;GET CHARACTER FROM MEMORY 343 | AND MASK ;GET ONLY NEEDED STUFF 344 | ORA T1 345 | STA (BITCURSOR),Y 346 | INY 347 | CPY #8 348 | BCC DRAWCHAR1 349 | ; 350 | INC BITCOLUMN 351 | LDA BITCOLUMN 352 | AND #1 353 | BNE DRAWCHAR3 ;ADVANCE ONLY IF BECOMES EVEN 354 | ; 355 | ; CLC 356 | ; LDA #8 357 | ; ADC BITCURSOR 358 | ; STA BITCURSOR 359 | ; BCC DRAWCHAR3 360 | ; INC BITCURSOR+1 361 | LDA #8 362 | JSR INC_P2_BY_A ;P2 += .A 363 | ; 364 | DRAWCHAR3: 365 | LDX XYTEMP 366 | LDY XYTEMP+1 367 | RTS 368 | ; 369 | ; 370 | SETSHIFT: 371 | ;SET SHIFTBYTE FROM .A (PRESERVE NOTHING) 372 | LDX #0 373 | SETSHIFT1: 374 | CMP CSTABLE,X 375 | BCC SETSHIFT2 376 | INX 377 | INX 378 | BNE SETSHIFT1 379 | ; 380 | SETSHIFT2: 381 | INX 382 | LDA CSTABLE,X 383 | STA HOLDSHIT 384 | RTS 385 | ; 386 | HOLDSHIT: 387 | !byte 0 388 | ; 389 | ; 390 | CSTABLE: 391 | ; 392 | !byte 'B'-64;IF LESS THAN 393 | !byte CMASK1 394 | !byte 'C'-64 395 | !byte CMASK4 396 | !byte 'F'-64 397 | !byte CMASK2 398 | !byte 'G'-64 399 | !byte CMASK1 400 | !byte 'I'-64 401 | !byte CMASK2 402 | !byte 'M'-64 403 | !byte CMASK1 404 | !byte 'N'-64 405 | !byte CMASK7;*3 406 | !byte 'U'-64 407 | !byte CMASK4 408 | !byte 'W'-64 409 | !byte CMASK1 410 | !byte 'X'-64 411 | !byte CMASK6 412 | !byte 'Y'-64 413 | !byte CMASK1 414 | !byte 'Z'-64 415 | !byte CMASK2 416 | !byte '['-64 417 | !byte CMASK1 418 | !byte '['+1-64 419 | !byte CMASK5 420 | !byte ']'-64 421 | !byte CMASK2 422 | !byte '%' 423 | !byte CMASK1 424 | !byte '&' 425 | !byte CMASK2 426 | !byte ')' 427 | !byte CMASK1 428 | !byte '*' 429 | !byte CMASK5 430 | !byte ',' 431 | !byte CMASK4 432 | !byte '/' 433 | !byte CMASK1 434 | !byte '0' 435 | !byte CMASK2 436 | !byte '1' 437 | !byte CMASK4 438 | !byte '<' 439 | !byte CMASK1 440 | !byte '>' 441 | !byte CMASK2 442 | !byte '?' 443 | !byte CMASK4 444 | !byte 'A' 445 | !byte CMASK2 446 | !byte 'B' 447 | !byte CMASK1 448 | !byte 'D' 449 | !byte CMASK4 450 | !byte 'G' 451 | !byte CMASK2 452 | !byte 'I' 453 | !byte CMASK6 454 | !byte 'J' 455 | !byte CMASK1 456 | !byte 'M' 457 | !byte CMASK2 458 | !byte 'N' 459 | !byte CMASK4 460 | !byte 'Q' 461 | !byte CMASK7 462 | !byte 'U' 463 | !byte CMASK2 464 | !byte 'W' 465 | !byte CMASK1 466 | !byte 'X' 467 | !byte CMASK4 468 | !byte 'Z' 469 | !byte CMASK6 470 | !byte 255 471 | !byte CMASK1 472 | ; 473 | CMASK1 = %00110100 ;5,4,2 474 | CMASK2 = %01010100 ;6,4,2 475 | CMASK3 = %10010100 ;7,4,2 476 | CMASK4 = %01010010 ;6,4,1 477 | CMASK5 = %00101100 ;5,3,2 478 | CMASK6 = %00101010 ;5,3,1 479 | CMASK7 = %01001010 ;6,3,1 480 | CMASK8 = %10010100 ;??? 481 | ; 482 | ; 483 | !eof 484 | ; 485 | 486 | ; PUBLIC INITILIZE80 487 | ; PUBLIC INITILIZE40 488 | ; PUBLIC DRAWCHAR 489 | ; EXTERN ACTIVE_STYLE 490 | ; EXTERN AX_INTO_P1 491 | ; EXTERN BDRBAK 492 | ; EXTERN COPYDN 493 | ; EXTERN GETIN 494 | ; EXTERN INC_P1_BY_AX 495 | ; EXTERN INC_P2_BY_A 496 | ; EXTERN IN_ACTIVE_STYLE 497 | ; EXTERN IOINIT 498 | ; EXTERN MUL_AX_PT 499 | ; EXTERN POP_EOT 500 | ; EXTERN PUSH_EOT 501 | ; EXTERN PRESS_ANY_KEY_CHROUT 502 | ; EXTERN PT_INTO_AX 503 | ; EXTERN PT_INTO_P1 504 | ; EXTERN P1_INTO_P2 505 | ; EXTERN P2_INTO_AX 506 | ; EXTERN P2_INTO_P1 507 | ; EXTERN PETASC 508 | ; EXTERN TXCOLR 509 | ; EXTERN W_INTO_PT 510 | ; EXTERN W_INTO_P1 511 | ; EXTERN W_INTO_P2 512 | -------------------------------------------------------------------------------- /WW6_ACME/BUFFERS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone BUFFERS 3 | ; 4 | ; 5 | ; 6 | !SOURCE "WWSETUP.ASM" 7 | !SOURCE "VARIABLS.ASM" 8 | ; 9 | L_BUFFER_DEPTH = 15+38 10 | ; 11 | B_BUFFER_DEPTH = 15 12 | ; 13 | FONT_BUFFER = $8000 14 | FONT_START = $8000 15 | ; 16 | !if DEBUGGER_PRESENT { 17 | ; 18 | LINE_BUFFER = $D400 ;$C600 19 | ; DS L_BUFFER_DEPTH*960/8 20 | LINE_BUFFER_E = LINE_BUFFER+L_BUFFER_DEPTH*960/8 21 | ; DS B_BUFFER_DEPTH*960/8 22 | LINE_BUFFER_D = LINE_BUFFER_E+B_BUFFER_DEPTH*960/8 23 | ; DB 00 ;FUDGE 24 | ; 25 | LINE_SIZE = LINE_BUFFER_E-LINE_BUFFER 26 | BOT_SIZE = LINE_BUFFER_D-LINE_BUFFER_E 27 | ; 28 | FAKE_FONT_HEADER = $F500 29 | PRINT_WORK_SPACE = $9000 ;#WATCH LARGE FONTS!!!! 30 | ; 31 | PLINE_BUFFER = $C000 32 | ; DS 120*8 33 | GRAPHIC_RASTER_BUFFER = $C500 34 | ; DS 120 35 | GRAPHIC_TEXT_LINE = $CF00 36 | ; 37 | } else { 38 | ; 39 | GRAPHIC_RASTER_BUFFER = $BE80 40 | GRAPHIC_TEXT_LINE = $BF00 41 | PLINE_BUFFER = $BFF1 42 | LINE_BUFFER = $C3B1 43 | LINE_BUFFER_E = LINE_BUFFER+L_BUFFER_DEPTH*960/8 44 | LINE_BUFFER_D = LINE_BUFFER_E+B_BUFFER_DEPTH*960/8 45 | LINE_SIZE = LINE_BUFFER_E-LINE_BUFFER 46 | BOT_SIZE = LINE_BUFFER_D-LINE_BUFFER_E 47 | FAKE_FONT_HEADER = $E392 48 | PRINT_WORK_SPACE = $E600 49 | ; 50 | } 51 | ; 52 | ; 53 | BPCODES: 54 | PATTERN_BYTES = BPCODES+48 55 | ;TOTAL_CODES 6 BYTE BINARY PRINTER CODES, $FF TERMINATED 56 | ;# 57 | ;NEED TO PUT THESE DAMN THINGS SOMEWHERE, PERHAPS $FF00 58 | ;CANNOT USE EDIT_LINE, JBUFF, MAYBE CBUF2? 59 | ; 60 | !byte $FF,$FF,$FF,$FF,$FF,$FF;BP + 0 DISK STATUS 61 | !byte $FF,$FF,$FF,$FF,$FF,$FF;6 62 | !byte $FF,$FF,$FF,$FF,$FF,$FF;12 63 | !byte $FF,$FF,$FF,$FF,$FF,$FF;18 64 | !byte $FF,$FF,$FF,$FF,$FF,$FF;24 65 | !byte $FF,$FF,$FF,$FF,$FF,$FF;36 66 | !byte $FF,$FF,$FF,$FF,$FF,$FF;42 67 | !byte $FF,$FF,$FF,$FF,$FF,$FF;BP + 48 68 | !byte $FF,$FF,$FF,$FF,$FF,$FF 69 | !byte $FF,$FF,$FF,$FF,$FF,$FF 70 | !byte $FF,$FF,$FF,$FF,$FF,$FF 71 | !byte $FF,$FF,$FF,$FF,$FF,$FF 72 | !byte $FF,$FF,$FF,$FF,$FF,$FF 73 | !byte $FF,$FF,$FF,$FF,$FF,$FF 74 | GFNAME_SAVE: 75 | !byte $FF,$FF,$FF,$FF,$FF,$FF 76 | !byte $FF,$FF,$FF,$FF,$FF,$FF 77 | !byte $FF,$FF,$FF,$FF,$FF,$FF 78 | TAB_TABLE: 79 | !byte 10,20,30,40,50,$FF;TABS 80 | ; 81 | !byte $FF;FILLER OR TAB END 82 | ; 83 | !eof 84 | ; 85 | ; PUBLIC BPCODES 86 | ; PUBLIC BOT_SIZE 87 | ; PUBLIC FAKE_FONT_HEADER 88 | ; PUBLIC FILENAME_LOC 89 | ; PUBLIC FONT_BUFFER 90 | ; PUBLIC FONT_START 91 | ; PUBLIC GFNAME_SAVE 92 | ; PUBLIC GRAPHIC_RASTER_BUFFER 93 | ; PUBLIC GRAPHIC_TEXT_LINE 94 | ; PUBLIC LINE_BUFFER 95 | ; PUBLIC LINE_BUFFER_E 96 | ; PUBLIC LINE_SIZE 97 | ; PUBLIC L_BUFFER_DEPTH 98 | ; PUBLIC PATTERN_BYTES 99 | ; PUBLIC PLINE_BUFFER 100 | ; PUBLIC PRINT_WORK_SPACE 101 | ; PUBLIC TAB_TABLE 102 | -------------------------------------------------------------------------------- /WW6_ACME/CATALOG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone CATALOG 3 | ; 4 | ; 5 | CATLOG: 6 | JSR CLALL 7 | LDA #2 8 | LDX #CATD 10 | JSR SETNAM 11 | LDA #2 12 | JSR XDEVICEN 13 | LDY #0 14 | JSR OPENE1 15 | JSR CHNL2I 16 | ; 17 | LDX #4 18 | BNE DLOOP ;LINE LINK 19 | OLOOP: 20 | JSR GETX ;DISK NAME 21 | LDX #$02 22 | DLOOP: 23 | JSR PULLX ;LINE LINK 24 | JSR SIZE ;BLOCKSIZE 25 | JMP OLOOP ;FNAME 26 | ; 27 | GETX: 28 | JSR CHNL2I 29 | JSR CHRIN 30 | LDX $90 ;STATUS 31 | BNE CRALF 32 | PHA 33 | JSR CLRCHN 34 | PLA 35 | BEQ CRALF ;CR/LF STOP KEY 36 | ; 37 | JSR CHROUT 38 | JMP GETX 39 | ; 40 | ABORT: 41 | PLA 42 | PLA 43 | ; JSR CLRCHN 44 | ;*NOTE* THIS MAY BE COMPLETELY UNNEC, CLOSE2 DOES CLRCHN AFTER... 45 | JMP CLOSE2 46 | ; 47 | CRALF: 48 | ; 49 | LDA CURRENT_KEY 50 | CMP #$BE ;COMM-V? 51 | BNE .CRLF 52 | ; 53 | LDY #26 ;FILE-TYPE POSITION (LETTER) 54 | LDA ($D1),Y ;SCREEN ROW 55 | CMP #7 ;SEQ FILE? 56 | BNE .CRLF 57 | LDA #0 58 | STA $D3 59 | BEQ .JOIN 60 | ; 61 | .CRLF: 62 | JSR CRLF 63 | ; 64 | .JOIN: 65 | JSR GETIN1 66 | CMP #3 67 | BEQ ABORT 68 | JMP CHNL2I 69 | ; 70 | PULLX: 71 | JSR CHRIN ;THROW AWAY .X 72 | DEX ;DISK CHARACTERS 73 | BNE PULLX 74 | RTS 75 | ; 76 | SIZE: 77 | JSR CHNL2I ;INPUT CHANNEL 78 | JSR CHRIN ;PRINT BLOCK SIZE 79 | STA TEMP0 80 | JSR CHRIN 81 | LDY TEMP0 82 | LDX $90 83 | BNE ABORT 84 | JSR COUT 85 | JSR CLRCHN 86 | LDY #0 ;ALL POSITIVE,NO SPACE 87 | CALOOP: 88 | LDA $100,Y 89 | BEQ CALOO1 90 | JSR CHROUT 91 | INY 92 | BNE CALOOP 93 | CALOO1: 94 | RTS 95 | ; 96 | ; 97 | !eof 98 | ; 99 | -------------------------------------------------------------------------------- /WW6_ACME/CONFIG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone CONFIG;CONFIGURATION_WINDOWS 3 | ; 4 | ; LOCATIONS FOR INSTALL PROGRAM 5 | ; 6 | ; TXCOLR: IS TEXT COLOR 0..15 7 | ; STCOLR: IS PROMPT COLOR 0..15 8 | ; BDRBAK: IS BORDER & BACKGOUND COLOR 0..15 9 | ; BE SURE BDRBAK IS NOT EQUAL TO TXCOLR OR STCOLR! 10 | ; 11 | ; FLASHING_CURSOR: IS 0 FOR SOLID, 1 FOR FLASHING 12 | ; 13 | ; ALL D_ VARIABLS ARE FROM THE PRINTER DRIVER, SEE GD_MX80 14 | ; FILE. 15 | ; 16 | !SOURCE "WWSETUP.ASM" 17 | !SOURCE "VARIABLS.ASM" 18 | ; 19 | COMMODORE = 0 20 | EPSON = 1 21 | EPSON_80DPI = 0 22 | EPSON_24 = 0 23 | ; 24 | ; 25 | ; 26 | ; 27 | SAVEPRNT: 28 | ; 29 | !byte $FE;WORD WRITER 4 VERSION FLAG 30 | ; 31 | ; 32 | !if EPSON { 33 | ; 34 | D_PIXELS_PER_INCH: 35 | !word 120 36 | D_PIXELS_PER_LINE: 37 | !word 960 38 | D_VERTICAL_PIXELS_INCH: 39 | !word 72 40 | D_VERTICAL_PIXELS_LETTER: 41 | !word 72*11 42 | D_VERTICAL_PIXELS_LEGAL: 43 | !word 72*14 44 | D_CLEAR_TB_MARGIN: 45 | !byte 0 46 | D_FUTURE_EXPANSION: 47 | !byte 0 48 | !word 0,0,0,0,0 49 | ; 50 | } 51 | ; 52 | ; 53 | !if EPSON_80DPI { 54 | ; 55 | D_PIXELS_PER_INCH: 56 | !word 80 57 | D_PIXELS_PER_LINE: 58 | !word 640 59 | D_VERTICAL_PIXELS_INCH: 60 | !word 72 61 | D_VERTICAL_PIXELS_LETTER: 62 | !word 72*11 63 | D_VERTICAL_PIXELS_LEGAL: 64 | !word 72*14 65 | D_CLEAR_TB_MARGIN: 66 | !byte 0 67 | D_FUTURE_EXPANSION: 68 | !byte 0 69 | !word 0,0,0,0,0 70 | ; 71 | } 72 | ; 73 | ; 74 | !if COMMODORE { 75 | ; 76 | D_PIXELS_PER_INCH: 77 | !word 60 78 | D_PIXELS_PER_LINE: 79 | !word 480 80 | D_VERTICAL_PIXELS_INCH: 81 | !word 64 82 | D_VERTICAL_PIXELS_LETTER: 83 | !word 64*11 84 | D_VERTICAL_PIXELS_LEGAL: 85 | !word 64*14 86 | D_CLEAR_TB_MARGIN: 87 | !byte 0 88 | D_FUTURE_EXPANSION: 89 | !byte 0 90 | !word 0,0,0,0,0 91 | ; 92 | } 93 | ; 94 | !if EPSON_24 { 95 | ; 96 | D_PIXELS_PER_INCH: 97 | !word 120 98 | D_PIXELS_PER_LINE: 99 | !word 960 100 | D_VERTICAL_PIXELS_INCH: 101 | !word 90 102 | D_VERTICAL_PIXELS_LETTER: 103 | !word 90*11 104 | D_VERTICAL_PIXELS_LEGAL: 105 | !word 90*14 106 | D_CLEAR_TB_MARGIN: 107 | !byte 0 108 | D_FUTURE_EXPANSION: 109 | !byte 0 110 | !word 0,0,0,0,0 111 | ; 112 | } 113 | ; 114 | ; 115 | PRTDRP: 116 | !byte 18 117 | !byte $FF,64,16 118 | !text " PRINTER OPTIONS " 119 | !byte $FF,32,16 120 | PRTLST = *+14 121 | PW_S_PRINT_GRAPHICS = *+14 122 | ; 123456 7 89012345 123 | !text "A)PRIN",'T'-64,"FONTS N" 124 | !text "B)NUMBE",'R'-64,"PAGES N" 125 | BLNKSCRN = *+14 126 | !text "C)BLAN",'K'-64,"SCREEN N" 127 | PW_S_EJECT_PAGE = *+14 128 | !text "D)EJEC",'T'-64,"PAGE Y" 129 | !text "E)LINEFEED",'S'-64," N" 130 | CMACST = *+14 131 | !text "F)NORMA",'L'-64,"ASCII Y" 132 | CHNPAG = *+14 133 | !text "G)LINKE",'D'-64,"PRINT N" 134 | PW_S_MERGE_NAMES = *+14 135 | !text "H)MERG",'E'-64,"NAMES N" 136 | !text "I)SHEE",'T'-64,"FEED N" 137 | !text "J)OPE",'N'-64,"4,4,? 07" 138 | PRTWIN_TOPMAR = *+13 139 | !text "K)TO",'P'-64,"MARGIN 04" 140 | PRTWIN_BOTMAR = *+13 141 | !text "L)BO",'T'-64,"MARGIN 04" 142 | PG_LENGTH = *+13 143 | !text "M)PAG",'E'-64,"LENGTH 66" 144 | !text "N)NUMBE",'R'-64,"FROM 01" 145 | !text "O)# O",'F'-64,"COPIES 01" 146 | !byte $FF,32,16 147 | !text "F1= PRIN",'T'-64,"PREVIEW" 148 | !text "RUNSTOP=EN",'D'-64,"PRINT" 149 | !byte $FF,64,16,0 150 | ; 151 | PCBOX: 152 | !byte 24 153 | !byte $FF,64,22 154 | !text $FF,32,4,"PRINTER CODES",$FF,32,4 155 | !byte $FF,32,22 156 | PCSTART = *+2 157 | !text 'U'+$80," 27,45,1-UNDERLINE ON " 158 | !text 'U'+$40," 27,45,0 " 159 | !text 'B'+$80," 27,69-BOLD ON " 160 | !text 'B'+$40," 27,70 " 161 | !text 'I'+$80," 27,52-ITALICS ON " 162 | !text 'I'+$40," 27,53 " 163 | !text $DB," 27,83,0-SUPERSCRPT ON" 164 | !text $AB," 27,84 " 165 | !text $C0," 27,83,1-SUBSCRIPT ON " 166 | !text $AD," 27,84 " 167 | !text 'W'+$80," USER DEFINED 1 ON " 168 | !text 'W'+$40," " 169 | !text 'X'+$80," USER DEFINED 2 ON " 170 | !text 'X'+$40," " 171 | !text 'Y'+$80," USER DEFINED 3 ON " 172 | !text 'Y'+$40," " 173 | !text "* GLOBAL CODE " 174 | !byte TABCHAR,' ' 175 | TAB_ASCII: 176 | ; 123456789012345678901 177 | !text "10,20,30,40,50 " 178 | !byte $FF,32,22 179 | !byte $FF,64,22,0 180 | ; 181 | COLORS: 182 | TXCOLR: 183 | !byte 14 184 | STCOLR: 185 | !byte 3 186 | BDRBAK: 187 | !byte 0 188 | DEVICE: 189 | !byte 8,8,8 190 | DRIVE: 191 | !byte 0,0,0 192 | ; 193 | FLASHING_CURSOR: 194 | !byte 1 195 | ; 196 | INSERTM: 197 | !byte $80 198 | ; 199 | SCREEN_CONSTRAIN: 200 | !byte 0 201 | ; 202 | UPPER_CASE_LOCK: 203 | !byte 0 204 | ; 205 | SPECIAL_BYTE: 206 | !byte 0;0=CARDFILE NZ=OUTLINER 207 | ; 208 | CONFIG_TAB_TABLE: 209 | !byte 1,2,3,4,5,6 210 | ; 211 | ; 212 | KEY_RECORD_BUFFER: 213 | !text "THIS PROGRAM IS DEDICATED TO MARK G" 214 | !text "OLDBERG, VICTOR SCHILLER, NICHOLAS " 215 | !text "ALEXANDER, AND THE TIMEWORKS TEAM. " 216 | !text " " 217 | KEY_RECORD_OVER: 218 | ;CONV VAR SUBSTITUTED with EQU 219 | LENG = KEY_RECORD_OVER-KEY_RECORD_BUFFER 220 | !fill 120-LENG, $FF 221 | ; 222 | MACRO_1_START: 223 | !byte 0 224 | MACRO_1_END: 225 | !byte 0 226 | MACRO_2_START: 227 | !byte 1 228 | MACRO_2_END: 229 | !byte 1 230 | WHICH_MACRO: 231 | !byte 0 232 | MACRO_LIMIT: 233 | !byte 0 234 | ; 235 | ; 236 | SAVEPRNTE: 237 | ; 238 | !eof 239 | ; 240 | 241 | 242 | 243 | 244 | 245 | ; PUBLIC BDRBAK 246 | ; PUBLIC BLNKSCRN 247 | ; PUBLIC CHNPAG 248 | ; PUBLIC CMACST 249 | ; PUBLIC COLORS 250 | ; PUBLIC DEVICE 251 | ; PUBLIC DRIVE 252 | ; PUBLIC D_CLEAR_TB_MARGIN 253 | ; PUBLIC D_PIXELS_PER_INCH 254 | ; PUBLIC D_PIXELS_PER_LINE 255 | ; PUBLIC D_VERTICAL_PIXELS_LETTER 256 | ; PUBLIC D_VERTICAL_PIXELS_LEGAL 257 | ; PUBLIC D_VERTICAL_PIXELS_INCH 258 | ; PUBLIC D_FUTURE_EXPANSION 259 | ; PUBLIC INSERTM 260 | ; PUBLIC FLASHING_CURSOR 261 | ; PUBLIC KEY_RECORD_BUFFER 262 | ; PUBLIC MACRO_1_START 263 | ; PUBLIC MACRO_1_END 264 | ; PUBLIC MACRO_2_START 265 | ; PUBLIC MACRO_2_END 266 | ; PUBLIC MACRO_LIMIT 267 | ; PUBLIC PCBOX 268 | ; PUBLIC PCSTART 269 | ; PUBLIC PRTDRP 270 | ; PUBLIC PRTLST 271 | ; PUBLIC PW_S_PRINT_GRAPHICS 272 | ; PUBLIC PW_S_EJECT_PAGE 273 | ; PUBLIC PW_S_MERGE_NAMES 274 | ; PUBLIC PRTWIN_TOPMAR 275 | ; PUBLIC PRTWIN_BOTMAR 276 | ; PUBLIC PG_LENGTH 277 | ; PUBLIC STCOLR 278 | ; PUBLIC SAVEPRNT 279 | ; PUBLIC SAVEPRNTE 280 | ; PUBLIC SCREEN_CONSTRAIN 281 | ; PUBLIC SPECIAL_BYTE 282 | ; PUBLIC CONFIG_TAB_TABLE 283 | ; PUBLIC TAB_ASCII 284 | ; PUBLIC TXCOLR 285 | ; PUBLIC UPPER_CASE_LOCK 286 | ; PUBLIC WHICH_MACRO 287 | -------------------------------------------------------------------------------- /WW6_ACME/DISPLAY.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone DISPLAY;DISPLAY_ROUTINES 3 | ; 4 | !SOURCE "WWSETUP.ASM" 5 | !SOURCE "VARIABLS.ASM" 6 | ; 7 | ; 8 | ; 9 | ; 10 | START_BLOCK: 11 | !word 0 12 | END_BLOCK: 13 | !word 0 14 | START_BLK_1ST_LINE_CHAR: 15 | !byte 0 16 | MAXIMUM_LINES: ;SCREEN DEPTH 17 | !byte 23 18 | MAXIMUM_LINES_M2 = 20 19 | ; 20 | DISPLAYOFF: 21 | DISPLYOFF: 22 | LDA #$60 23 | STA DISPLY 24 | RTS 25 | ; 26 | RESET_AND_DISPLAY: 27 | JSR RESET 28 | ; 29 | DISPLAYON: 30 | PHP 31 | ; LDA #$20 32 | ; STA DISPLY 33 | JSR DISPLAY_ON_NO_DISPLAY 34 | JSR DISPLY 35 | PLP 36 | RTS 37 | ; 38 | DISPLY: 39 | JSR TEXOUT 40 | CMP #ENDT 41 | BEQ .FILL_THE_SCREEN 42 | ; 43 | LDA MAXIMUM_LINES 44 | CMP #23 45 | BCS RESET 46 | LDY #0 47 | STY TMINDX 48 | ; 49 | .FILL_THE_SCREEN: 50 | JSR FILLSC 51 | RESET: 52 | LDA #VIDEO 55 | STA SCRMO+1 56 | RESET_1: 57 | LDA TEXPAG 58 | STA TEXTMO 59 | LDA TEXPAG+1 60 | STA TEXTMO+1 61 | RTS 62 | ; 63 | CONV_TO_LIT_C: 64 | STY .CVL_SM1 65 | STX TEMP1 66 | LDY TEMP1 67 | JSR IN_CURRENT_BLOCK 68 | !byte $A0;LDY # 69 | .CVL_SM1: 70 | !byte $00 71 | JMP RE_ENTER_C 72 | ; 73 | CLEAR_REMAINING_LINE: 74 | LDY #0 75 | JSR FILLLN1 76 | JMP NXTLIN 77 | ; 78 | TEXOUT: 79 | ;LDX #23 ;TEMP0 COUNTS 80 | LDX MAXIMUM_LINES ;TEMP0 COUNTS 81 | STX TEMP0 ;DOWN THE SCREEN LINES 82 | COUNT9: 83 | SEC 84 | ;LDA #23 ;#LINES PER SCREEN 85 | LDA MAXIMUM_LINES ;#LINES PER SCREEN 86 | SBC CURRENT_SCREEN_LINE 87 | CMP TEMP0 ;ARE WE ON THE LINE BEING EDITED? 88 | BNE REGULAR_LINE 89 | ; 90 | LDY #0 91 | STY TMINDX 92 | ; 93 | LDX COUNT ;IF CHARACTERS TO SKIP > LL THEN CLEAN OUT LINE 94 | CPX CHARS_IN_LINE 95 | BCS CLEAR_REMAINING_LINE 96 | ; 97 | LINE_LOOP: 98 | LDA EDIT_LINE,X 99 | BMI END_LINE 100 | LINE_LOOP1: 101 | BIT MOVE_COPY_HL 102 | BMI CONV_TO_LIT_C 103 | RE_ENTER_C: 104 | ; 105 | STA (SCRMO),Y 106 | INX 107 | INY 108 | CPY #$28 109 | BCC LINE_LOOP 110 | STY TMINDX 111 | JMP NXTLIN ;PROCESS END-OF-LINE 112 | ; 113 | END_LINE: 114 | ; 115 | CMP #ENDT 116 | BCC LINE_LOOP1 117 | ; 118 | STY TMINDX 119 | BNE END_OF_LINE 120 | ; 121 | LDA #ENDT 122 | RTS 123 | ; 124 | ; 125 | REGULAR_LINE: 126 | ; 127 | LDY #0 128 | STY TMINDX 129 | ; 130 | LDX COUNT 131 | BEQ COLUM01 132 | ; 133 | COUNT0: 134 | LDA (TEXTMO),Y 135 | BMI SUBR1 136 | COUNT1: 137 | INY 138 | DEX 139 | BNE COUNT0 140 | COLUM: 141 | ; 142 | TYA 143 | CLC 144 | ADC TEXTMO 145 | STA TEXTMO 146 | BCC .SKP 147 | INC TEXTMO+1 ;ADJUST TEXTMO TO POINT AT FIRST USABLE CHAR 148 | .SKP: 149 | LDY #0 150 | COLUM01: 151 | LDX #40 152 | ; 153 | COLUM0: 154 | LDA (TEXTMO),Y 155 | BMI SUBR2 156 | COLUM1: 157 | ; 158 | BIT MOVE_COPY_HL 159 | BMI CONV_TO_LIT 160 | RE_ENTER_REG: 161 | STA (SCRMO),Y 162 | ; 163 | INY 164 | DEX 165 | BNE COLUM0 166 | STY TMINDX 167 | ; 168 | NXTLIN: 169 | JSR FINDTX 170 | CMP #ENDT 171 | BEQ LSTLIN 172 | DEC TEMP0 173 | BNE COUNT9 174 | LSTLIN: 175 | RTS 176 | ; 177 | SUBR1: 178 | CMP #ENDT ;/ 179 | BCC COUNT1 180 | BEQ LSTLIN 181 | LDY #0 ;NO CHARACTERS FOR THIS LINE 182 | SUBR11: 183 | ; 184 | SUBR15: 185 | JSR FILLLN 186 | JMP NXTLIN 187 | ; 188 | SUBR2: 189 | CMP #ENDT ;DID WE END WITH EOT? 190 | BCC COLUM1 191 | STY TMINDX 192 | BEQ LSTLIN 193 | ; 194 | END_OF_LINE: 195 | CMP #RETURN 196 | BNE SUBR11 ;SOFT RETURN 197 | STY TMINDX ;TMINDX=TMINDX+1 198 | ; 199 | LDA #31 ;HARD RETURN SYMBOL 200 | STA (SCRMO),Y 201 | ; 202 | INY 203 | JSR FILLLN 204 | JMP NXTLIN 205 | ; 206 | ; 207 | CONV_TO_LIT: 208 | JSR IN_CURRENT_BLOCK 209 | JMP RE_ENTER_REG 210 | ; 211 | IN_CURRENT_BLOCK: 212 | ;(REGULAR LINE CALL) 213 | PHA ;SAVE .A (CHAR TO EFFECT) 214 | STX TEMP1 ;SAVE .X 215 | ; 216 | CLC 217 | TYA ;INDEX 218 | ADC TEXTMO ;PLUS TEXTMO 219 | LDX TEXTMO+1 220 | BCC .SKP0240 221 | INX ;.A,.X = TEXTMO + .Y 222 | .SKP0240: 223 | CPX START_BLOCK+1 ;ARE WE ON OR BEYOND START_BLOCK? 224 | BNE .TST_S_LO 225 | CMP START_BLOCK 226 | BEQ .IN_BLOCK ;IF .A,.X = START_BLOCK ON 1ST CHAR 227 | .TST_S_LO: 228 | BCC .OUT_BLOCK ;IF .A,.X < START_BLOCK BEFORE BLOCK 229 | ; 230 | CPX END_BLOCK+1 231 | BNE .TST_E_LO 232 | CMP END_BLOCK 233 | BEQ .IN_BLOCK 234 | .TST_E_LO: 235 | BCS .OUT_BLOCK 236 | ; 237 | .IN_BLOCK: 238 | PLA 239 | EOR #$80 240 | .END: 241 | LDX TEMP1 242 | RTS 243 | ; 244 | .OUT_BLOCK: 245 | PLA 246 | LDX TEMP1 247 | RTS 248 | ; 249 | FILLLN: 250 | ; 251 | FILLLN1: 252 | LDA #$60 ;SHIFT SPACE 253 | FILOOP: 254 | STA (SCRMO),Y 255 | INY 256 | CPY #$28 257 | BCC FILOOP 258 | RTS 259 | ; 260 | FINDTX: 261 | ; 262 | ;## POSSIBLE PROBLEMS SKIPPING PAST EOT. MUST OPTIMIZE 263 | ; LDY #0 264 | ;FIREAD: 265 | ; LDA (TEXTMO),Y ;GET CHAR 266 | ; INY 267 | ; CMP #ENDT ;LOOK FOR RETURN 268 | ; BCC FIREAD ;OR EOT 269 | ; BEQ FIOUT ;EXIT W/ENDT 270 | ; 271 | LDY #$FF 272 | .LOOP: 273 | INY 274 | LDA (TEXTMO),Y 275 | BPL .LOOP 276 | CMP #ENDT 277 | BCC .LOOP 278 | BEQ FIOUT 279 | INY 280 | ; 281 | CLC 282 | TYA 283 | ADC TEXTMO 284 | STA TEXTMO 285 | BCC AD28SM 286 | INC TEXTMO+1 287 | AD28SM: 288 | LDA #$28 289 | ADDASM: 290 | CLC 291 | ADC SCRMO 292 | STA SCRMO 293 | BCC FIOUT 294 | INC SCRMO+1 295 | FIOUT: 296 | RTS 297 | ; 298 | FILLSC: 299 | ; 300 | LDY TMINDX 301 | FILLSC0: 302 | LDA #$60 ;SHIFTED SPACE 303 | FILINE: 304 | JSR FILLLN1 305 | JSR AD28SM 306 | LDY #0 307 | ; 308 | LDX SCRMO+1 309 | CPX #7 ;SCRN 310 | BNE FILLSC0 311 | ; 312 | CMP #$D7 ;SCRN 313 | BCC FILLSC0 314 | RTS 315 | ; 316 | AD28SC: 317 | LDA #$28 318 | ADD_A_SCREEN: 319 | CLC 320 | ADC SCREEN 321 | STA SCREEN 322 | BCC .SKP0342 323 | INC SCREEN+1 324 | .SKP0342: 325 | RTS 326 | ; 327 | ; 328 | !eof 329 | ; 330 | ; PUBLIC AD28SC 331 | ; PUBLIC ADDASM 332 | ; PUBLIC AD28SM 333 | ; PUBLIC DISPLY 334 | ; PUBLIC DISPLAYOFF 335 | ; PUBLIC DISPLYOFF 336 | ; PUBLIC DISPLAYON 337 | ; PUBLIC END_BLOCK 338 | ; PUBLIC IN_CURRENT_BLOCK 339 | ; PUBLIC MAXIMUM_LINES 340 | ; PUBLIC MAXIMUM_LINES_M2 341 | ; PUBLIC START_BLOCK 342 | ; PUBLIC START_BLK_1ST_LINE_CHAR 343 | ; PUBLIC RESET 344 | ; PUBLIC RESET_1 345 | ; PUBLIC RESET_AND_DISPLAY 346 | ; EXTERN DISPLAY_ON_NO_DISPLAY 347 | ; EXTERN EDIT_LINE 348 | -------------------------------------------------------------------------------- /WW6_ACME/FONTWIND.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone FONTWIND;FONT_WINDOW 3 | ; 4 | !SOURCE "WWSETUP.ASM" 5 | !SOURCE "VARIABLS.ASM" 6 | ; 7 | ; 8 | ; 9 | FC_FONT_WINDOW: 10 | ; 11 | LDX OUTMODE 12 | BNE .NO_FONTS 13 | ; 14 | LDX CURRENT_FONT 15 | BPL .SKP0 16 | .NO_FONTS: 17 | RTS 18 | ; 19 | .SKP0: 20 | JSR CURRENT_CHARACTER_Y 21 | CMP #CMARK 22 | BNE .CONT 23 | JMP FC_SHOW_STATUS 24 | ; 25 | .CONT: 26 | STX POINTER3 ;CURRENT_FONT 27 | ; 28 | ; LDA #FONT_BOX 30 | ; JSR AX_INTO_MSGOUT 31 | ; JSR W_INTO_MSGOUT 32 | ; DW FONT_BOX 33 | ; 34 | LDA #12 ;CBOFFSET 35 | JSR PULLDN ;DRAW THE BOX 36 | !word FONT_BOX 37 | ; 38 | .BIG_LOOP: 39 | LDA #12+1+40+40 40 | JSR VID_A_TO_SCRMO 41 | ; 42 | LDX #0 43 | STX POINTER2 ;COUNTER 1..9 44 | ; 45 | .OLOOP: 46 | STX POINTER2+1 ;COUNTER 0..2.. 47 | JSR FONT_TABLE_X_INTO_PT ;POINTER = FONT_TABLE,X .Y = NAME 48 | JSR INC_PT_BY_1 49 | LDX #13 50 | .LOOP: 51 | LDA POINTER2 52 | CMP POINTER3 ;CURRENT_FONT 53 | BEQ .NEED_80 54 | LDA #$00 55 | !byte $2C 56 | .NEED_80: 57 | LDA #$80 ;$80 OR 0 58 | ; 59 | ORA (POINTER),Y 60 | JSR SWAPXY 61 | STA (SCRMO),Y 62 | JSR SWAPXY 63 | DEY 64 | DEX 65 | CPX #1 66 | BNE .LOOP 67 | INC POINTER2 68 | ; 69 | LDY #0 70 | LDA POINTER2 71 | CLC 72 | ADC #'0' 73 | CMP #':' 74 | BNE .SKP 75 | LDA #'0' 76 | .SKP: 77 | STA (SCRMO),Y 78 | ; 79 | JSR AD28SM 80 | LDX POINTER2+1 ;COUNTER 81 | INX 82 | INX 83 | CPX #20 ;NUMBER OF INSTALLED FONTS/2 84 | BCC .OLOOP 85 | ; 86 | .KEYS_IN: 87 | JSR KEYBRD 88 | ; 89 | PHA 90 | JSR CHKNUM 91 | PLA 92 | BCS .CURS_DOWN 93 | SBC #$30 94 | BPL .ONE_NINE 95 | LDA #9 96 | .ONE_NINE: 97 | STA POINTER3 98 | BPL .FORCE_FONT 99 | ; 100 | .CURS_DOWN: 101 | CMP #$11 102 | BNE .CURS_UP 103 | INC POINTER3 104 | LDA POINTER3 105 | CMP #10 106 | BCC .BIG_LOOP 107 | LDA #0 108 | .STORE_LOOP: 109 | STA POINTER3 110 | JMP .BIG_LOOP 111 | ; 112 | .CURS_UP: 113 | CMP #$91 114 | BNE .RETURN 115 | DEC POINTER3 116 | LDA POINTER3 117 | BPL .BIG_LOOP 118 | .MAKE_END: 119 | LDA #$9 120 | BNE .STORE_LOOP 121 | ; 122 | .RETURN: 123 | CMP #$0D 124 | BNE .KEYS_IN 125 | ; 126 | .FORCE_FONT: 127 | JSR RESET 128 | ; 129 | LDA POINTER3 ;NEW FONT 130 | LDX CURRENT_CHAR ;DOES THIS UPDATE START_LINE? 131 | BNE .NO_START_UPDATE 132 | STA START_LINE_FONT ;NEW START LINE FONT 133 | ; 134 | ; 135 | .NO_START_UPDATE: 136 | CMP #9 ;0..9 = 10 137 | BNE .SKP1 138 | LDA #$FF 139 | .SKP1: 140 | CLC 141 | ADC #'1'+$80 142 | JSR FC_WORK_KEY_INS 143 | ; 144 | LDA EDIT_LINE 145 | CMP #CMARK 146 | BEQ .SKP3 147 | ; 148 | LDA CURRENT_FONT 149 | PHA 150 | ; 151 | JSR BP_MIN_CUR_PAGE_LENGTH 152 | ; 153 | JSR CALCULATE_LINE_LENGTH1 154 | JSR BUMP_LINE_PAGE 155 | ;*MUST FIX* 156 | ; BRK 157 | LDA LINE 158 | CMP #0 159 | BNE .NO_LINE_CHANGE 160 | INC LINE ;THIS IS FONT MODE ONLY, SPECIAL COND, MAY BE OK 161 | ;*MUST FIX* 162 | JSR FC_LINE_OUT 163 | ; 164 | .NO_LINE_CHANGE: 165 | PLA 166 | STA CURRENT_FONT 167 | JSR CLR_BACKGROUND 168 | ; 169 | ;JSR DISPLY 170 | ;*NOTE* REMOVED DISPLAY 2/6/91 171 | ;*NOTE* 172 | ; FULL_SCREEN: 173 | ; 174 | ; LDA EDIT_LINE 175 | ; CMP #CMARK 176 | ; BEQ ?SKP3 177 | JSR FC_REFORMAT_FROM_CURSOR 178 | ; 179 | .SKP3: 180 | JMP FULL_SCREEN 181 | ; 182 | ; 183 | !if REMOVE_TEXT { 184 | FONT_BOX 185 | !byte 16 186 | !byte 112,$FF,64,13,110 187 | !text 93,$FF,32,3,"FONTS",$FF,32,4,93 188 | !byte 93,$FF,32,13,93 189 | !byte 93,$FF,32,13,93 190 | !byte 93,$FF,32,13,93 191 | !byte 93,$FF,32,13,93 192 | !byte 93,$FF,32,13,93 193 | !byte 93,$FF,32,13,93 194 | !byte 93,$FF,32,13,93 195 | !byte 93,$FF,32,13,93 196 | !byte 93,$FF,32,13,93 197 | !byte 93,$FF,32,13,93 198 | !byte 109,$FF,64,13,125,0 199 | } 200 | ; 201 | ; 202 | FONT_BOX 203 | !byte 15 204 | !byte $FF,64,13 205 | !text $FF,32,3,"FONTS",$FF,32,4 206 | !byte $FF,32,13 207 | !byte $FF,32,13 208 | !byte $FF,32,13 209 | !byte $FF,32,13 210 | !byte $FF,32,13 211 | !byte $FF,32,13 212 | !byte $FF,32,13 213 | !byte $FF,32,13 214 | !byte $FF,32,13 215 | !byte $FF,32,13 216 | !byte $FF,64,13,0 217 | ; 218 | ; 219 | !eof 220 | ; 221 | ; PUBLIC FC_FONT_WINDOW 222 | ; EXTERN CLR_BACKGROUND 223 | ; EXTERN CURRENT_CHARACTER_Y 224 | ; EXTERN AD28SM 225 | ; EXTERN AX_INTO_MSGOUT 226 | ; EXTERN BP_MIN_CUR_PAGE_LENGTH 227 | ; EXTERN BP_PLS_CUR_PAGE_LENGTH 228 | ; EXTERN BUMP_LINE_PAGE 229 | ; EXTERN CALCULATE_LINE_LENGTH1 230 | ; EXTERN CHKNUM 231 | ; EXTERN CLRBLK 232 | ; EXTERN DISPLY 233 | ; EXTERN EDIT_LINE 234 | ; EXTERN FC_LINE_OUT 235 | ; EXTERN FC_REFORMAT_FROM_CURSOR 236 | ; EXTERN FC_SHOW_STATUS 237 | ; EXTERN FC_WORK_KEY_INS 238 | ; EXTERN FONT_TABLE_X_INTO_PT 239 | ; EXTERN FULL_SCREEN 240 | ; EXTERN INC_PT_BY_1 241 | ; EXTERN KEYBRD 242 | ; EXTERN ON_AND_REFREASH 243 | ; EXTERN OUTMODE 244 | ; EXTERN PULLDN 245 | ; EXTERN RESET 246 | ; EXTERN START_LINE_FONT 247 | ; EXTERN SWAPXY 248 | ; EXTERN VID_A_TO_SCRMO 249 | ; EXTERN WRAP_LINE 250 | ; EXTERN W_INTO_MSGOUT 251 | -------------------------------------------------------------------------------- /WW6_ACME/HELP.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone HELP;HELP_SCREEN 3 | ; 4 | !SOURCE "WWSETUP.ASM" 5 | ; 6 | ; 7 | ; 8 | !SOURCE "VARIABLS.ASM" 9 | ; 10 | ; 11 | FC_HELP: 12 | ; LDA #HELP_BOX 14 | ; JSR AX_INTO_MSGOUT 15 | ; JSR W_INTO_MSGOUT 16 | ; DW HELP_BOX 17 | ; 18 | LDA #6 ;CBOFFSET 19 | JSR PULLDN ;DRAW THE BOX 20 | !word HELP_BOX 21 | JSR KEYBRD 22 | JMP FULL_SCREEN 23 | ; 24 | ; 25 | ; 26 | HELP_BOX: 27 | ; DB 27 28 | !byte 26 29 | !byte $FF,64,24 30 | !text $FF,32,9,"HELP!",$FF,32,9 31 | !byte $6A 32 | !byte $C3,$CF,$CD,$CD,$A0,$CB,$C5,$D9,$D3 33 | !byte $74,32,111,32,$6A 34 | !byte $C3,$D4,$D2,$CC,$A0,$CB,$C5,$D9,$D3 35 | !byte $74 36 | ; 37 | !if ! DEBUGGER_PRESENT { 38 | ; 39 | !text "BOL",'D'-64,"OF",'F'-64," ",$6A 40 | !text 'B'+$80,$74,"BOL",'D'-64,"ON",$FF,32,3 41 | ; 42 | ; DB 93,'CAP','S'-64,'LOC','K'-64,' ',$6A 43 | ; DB 'C'+$80,$74,'CLEA','R'-64,'TAB','S'-64,93 44 | ; 45 | !text "DE",'L'-64,"CHA",'R'-64,"RT",$6A,'D'+$80,$74,"DELIMITE",'R'-64,' ' 46 | ; 47 | !text "FONT/STYL",'E'-64,$6A,'F'+$80,$74,"FON",'T'-64,"SELECT" 48 | !text "GOT",'O'-64,"EN",'D'-64," ",$6A 49 | !text 'G'+$80,$74,"GOT",'O'-64,"TO",'P'-64," " 50 | ; 51 | !text "ITALIC",'S'-64,"OFF",$6A,'I'+$80,$74,"ITALIC",'S'-64,'O','N'-64 52 | !text "LOA",'D'-64,"DO",'C'-64," ",$6A,'L'+$80,$74,"LOWE",'R'-64,"INDEX" 53 | !text "NEX",'T'-64,"MAR",'K'-64,' ',$6A 54 | !text 'N'+$80,$74,"NEX",'T'-64,"PAG",'E'-64,' ' 55 | ; 56 | !text "PRIN",'T'-64,"DO",'C'-64,' ',$6A 57 | !text 'P'+$80,$74,"PRE",'V'-64,"PAG",'E'-64,' ' 58 | ; 59 | !text "QUI",'T'-64,'O','R'-64,"NEW",$6A 60 | !text 'Q'+$80,$74,"QUER",'Y'-64,"MEMRY" 61 | ; 62 | !text "RETUR",'N'-64,"TOGL",$6A,'R'+$80,$74,"RAIS",'E'-64,"INDEX" 63 | !text "SAV",'E'-64,"DO",'C'-64," ",$6A 64 | !text 'S'+$80,$74,"SE",'T'-64,"MAR",'K'-64," " 65 | ; 66 | !text "UNDRL",'N'-64,"OF",'F'-64,$6A 67 | !text 'U'+$80,$74,"UNDRL",'N'-64,'O','N'-64,' ' 68 | ; 69 | !text "VIE",'W'-64,"DI",'R'-64," ",$6A,'V'+$80,$74,"VIRTUA",'L'-64,"MAR" 70 | !text "COD",'E'-64,"1 OF",'F'-64,$6A 71 | !text 'W'+$80,$74,"COD",'E'-64,"1 O",'N'-64,' ' 72 | ; 73 | !text "COD",'E'-64,"2 OF",'F'-64,$6A 74 | !text 'X'+$80,$74,"COD",'E'-64,"2 O",'N'-64,' ' 75 | ; 76 | !text "COD",'E'-64,"3 OF",'F'-64,$6A 77 | !text 'Y'+$80,$74,"COD",'E'-64,"3 O",'N'-64,' ' 78 | ; 79 | } 80 | ; 81 | !byte $FF,64,11,249,$FF,64,11,0 82 | ; 83 | ; 84 | !eof 85 | ; 86 | ; PUBLIC FC_HELP 87 | ; EXTERN AX_INTO_MSGOUT 88 | ; EXTERN FULL_SCREEN 89 | ; EXTERN KEYBRD 90 | ; EXTERN PULLDN 91 | ; EXTERN W_INTO_MSGOUT 92 | -------------------------------------------------------------------------------- /WW6_ACME/IMG.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone IMG 3 | ; 4 | ; READ GEM .IMG FORMAT FILE 5 | ; 6 | ;CAVEATS: 7 | ; FILE LOAD ADDRESS 8 | ; 9 | ;MAY DESTROY 10 | ; POINTER, POINTER2 11 | ; 12 | ; 13 | !SOURCE "WWSETUP.ASM" 14 | !SOURCE "VARIABLS.ASM" 15 | ; 16 | ; Duplicate PUBLIC READ_IMG_RASTER 17 | ; 18 | ; 19 | GRAPHIC_RASTER_FILE = 7 20 | ; 21 | ; 22 | HEADER_TABLE: ;{ 23 | HEADER_LENGTH: ;} 24 | !byte 0 25 | IDENTICAL_SCAN_LINES: 26 | !byte 0 27 | ; 28 | NUMBER_OF_PLANES: 29 | !word 0 30 | PATTERN_LENGTH: 31 | !word 0 32 | BYTES_PER_LINE: 33 | PIXEL_WIDTH: ;NOT NEEDED 34 | !word 0 35 | ; 36 | SCAN_BYTES: ;{ 37 | PIXEL_HEIGHT: ;NOT NEEDED 38 | !word 0 39 | ; 40 | PIXELS_PR_LINE: 41 | !word 0 42 | SCAN_LINES: 43 | !word 0 44 | ; 45 | ;PATTERN_BYTES: 46 | ; DW $FFFF,$FFFF,$FFFF,$FFFF 47 | ;*NOTE* MOVE THIS TO BPCODES BUFFER 48 | ; 49 | ; 50 | OPEN_IMG_FILE: 51 | ;FILES AS USED: 52 | ; 2 FOR GRAPHIC TEXT FILE 53 | ; 3 FOR GRAPHIC FONT FILE 54 | ; 4 FOR PRINTER OUTPUT 55 | ; 7 FOR GRAPHIC RASTER DATA 56 | ; 57 | ;MOVE NAME FROM TEXT TO BUFFER SOMEWHERE, 58 | ;SET LENGTH AND OPEN 59 | ; 60 | ; 61 | LDA #USE_FONT_DISK 62 | JSR COPY_FILENAME 63 | BCS BAD_HEADER 64 | ; 65 | LDA #GRAPHIC_RASTER_FILE 66 | JSR OPEN_FILE_A ;OPEN X,DEV1,X,"FONTNAME" 67 | ; 68 | LDX #GRAPHIC_RASTER_FILE 69 | JSR CHKIN 70 | ; 71 | LDX $90 72 | BNE BAD_HEADER 73 | ; 74 | JSR READ_AX_WORD ;GET VERSION.. MUST BE $0001 OR QUIT 75 | CMP #1 76 | BNE BAD_HEADER 77 | CPX #0 78 | BNE BAD_HEADER 79 | ; 80 | LDY #0 81 | STY IDENTICAL_SCAN_LINES 82 | ; 83 | .HEADER_LOOP: 84 | JSR READ_AX_WORD 85 | STA HEADER_TABLE,Y 86 | TXA 87 | INY 88 | STA HEADER_TABLE,Y 89 | INY 90 | CPY #14 91 | BCC .HEADER_LOOP 92 | ; 93 | LDX PIXELS_PR_LINE+1 ;HB 94 | CLC 95 | LDA PIXELS_PR_LINE ;LB 96 | ADC #7 ;+7 97 | BCC .SKP 98 | INX 99 | .SKP: 100 | JSR LSR_AX_3 ;(PIXELS_PR_LINE +7)/8 101 | STA BYTES_PER_LINE ;STORE LB ONLY (PERSISTENT) 102 | ; 103 | SEC 104 | LDA HEADER_LENGTH 105 | SBC #8 106 | TAY 107 | BEQ .NO_EXTRA_HEADER 108 | ; 109 | .STRIP_HEADER: 110 | JSR READ_AX_WORD 111 | DEY 112 | BNE .STRIP_HEADER 113 | ; 114 | .NO_EXTRA_HEADER: 115 | JMP CLRCHN 116 | ; 117 | BAD_HEADER: 118 | LDA #GRAPHIC_RASTER_FILE 119 | JSR CLOSE 120 | LDX #$FF 121 | STX GRAPHIC_X_OFFSET ;IS THERE A GRAPHIC? 122 | INX ;[0] 123 | STX SCAN_LINES 124 | STX SCAN_LINES+1 ;NO SCAN LINES 125 | SEC 126 | RTS 127 | ; 128 | ; 129 | ALREADY_IMAGED: 130 | DEC IDENTICAL_SCAN_LINES 131 | JMP FINISH_LINE 132 | ; 133 | ; 134 | READ_IMG_RASTER: 135 | ; 136 | LDA IDENTICAL_SCAN_LINES ;REPEAT # (PERSISTENT) 137 | BNE ALREADY_IMAGED 138 | ; 139 | LDX #GRAPHIC_RASTER_FILE 140 | JSR CHKIN ;GET INPUT CHANNEL IF WE NEED TO READ A LINE 141 | ; 142 | LDA #0 143 | STA SCAN_BYTES 144 | STA POINTER2 ;INDEX 145 | ; 146 | .LINE_LOOP: ;THIS IS WHERE THE LINE LOOPS TILL FULL 147 | ; 148 | JSR CHRIN ;READ BYTE IN .A 149 | LDX SCAN_BYTES 150 | BNE .IMAGE_LINE ;TEST FOR HEADER ONLY START OF EACH LINE 151 | ; 152 | CMP #$00 ;IS 1ST BYTE OF LINE 0? 153 | BNE .IMAGE_LINE ;NO GO EXPAND LINE 154 | ; 155 | JSR CHRIN ;GET 2ND BYTE, PATTERN LENGTH OR 0 156 | CMP #$00 ;IF 0, THEN WE HAVE A REPLICATED LINE COUNT 157 | BNE .PATTERN_W_LEN ;OTHERWISE REAL PATTERN LENGTH 158 | ; 159 | JSR READ_AX_WORD ;LB IS HOW MANY 160 | STA IDENTICAL_SCAN_LINES 161 | DEC IDENTICAL_SCAN_LINES 162 | JSR CHRIN ;GET FIRST REAL BYTE OF LINE 163 | ; 164 | .IMAGE_LINE: 165 | CMP #$80 ;BIT_STRING? 166 | BNE .OTHER 167 | ; 168 | JSR CHRIN ;GET LENGTH OF BITSTRING 169 | TAX 170 | ; 171 | .LOOP: 172 | JSR CHRIN 173 | JSR SET_BYTE ;SET EACH BYTE OF BIT_STRING 174 | DEX 175 | BNE .LOOP 176 | BEQ .LOOP_LINE_OR_END 177 | ; 178 | ; 179 | .OTHER: 180 | CMP #$00 ;PATTERN? 181 | BEQ .PATTERN 182 | ; 183 | BIT BIT_ON ;AND NON-DEST WITH $80 184 | BEQ .ALL_ZERO 185 | ; 186 | AND #$7F ;KILL HI BIT OF # OF ff BYTES 187 | LDX #$FF ;FILL WITH $FF 188 | !byte $2C 189 | ; 190 | .ALL_ZERO: 191 | LDX #$00 ;FILL WITH $00 192 | JSR SET_RPT ;SET .A .X'S IN BUFFER AT INDEX 193 | JMP .LOOP_LINE_OR_END 194 | ; 195 | .PATTERN: 196 | JSR CHRIN ;GET PATTERN LENGTH (# OF PDL'S) 197 | ; 198 | .PATTERN_W_LEN: 199 | STA POINTER ;SAVE LENGTH 200 | ; 201 | LDX #0 202 | .SET_PATTERN: 203 | JSR CHRIN 204 | STA PATTERN_BYTES,X 205 | INX 206 | CPX PATTERN_LENGTH 207 | BCC .SET_PATTERN ;FILL THE PATTERN ARRAY WITH DATA 208 | ; 209 | .EACH_PATTERN: 210 | LDX #0 211 | .USE_PATTERN: 212 | LDA PATTERN_BYTES,X 213 | JSR SET_BYTE 214 | INX 215 | CPX PATTERN_LENGTH 216 | BCC .USE_PATTERN 217 | DEC POINTER ;SET PATTERN DATA LENGTH TIMES 218 | BNE .EACH_PATTERN 219 | ; 220 | .LOOP_LINE_OR_END: 221 | LDA SCAN_BYTES 222 | CMP BYTES_PER_LINE 223 | BCC .LINE_LOOP 224 | ; 225 | JSR CLRCHN ;CLOSE CHANNEL 226 | ; 227 | FINISH_LINE: 228 | ; 229 | LDA SCAN_LINES 230 | BNE .SKPD 231 | DEC SCAN_LINES+1 232 | .SKPD: 233 | DEC SCAN_LINES 234 | ; 235 | .SKP1: 236 | ; 237 | LDA PIXELS_PR_LINE 238 | STA PATTERN_BYTES+4 239 | LDA PIXELS_PR_LINE+1 240 | STA PATTERN_BYTES+5 ;RETURN LENGTH FOR PRINTING 241 | ; 242 | LDA SCAN_LINES 243 | ORA SCAN_LINES+1 244 | BNE .GOOD_EXIT 245 | JMP BAD_HEADER 246 | ; 247 | .GOOD_EXIT: 248 | CLC 249 | RTS 250 | ; 251 | READ_AX_WORD: 252 | ; 253 | JSR CHRIN ;READ HB IN .A 254 | TAX 255 | JMP CHRIN ;READ LB IN .A 256 | ; 257 | ; 258 | SET_RPT: 259 | ;SET .A .X'S IN BUFFER AT INDEX 260 | STA POINTER+1 261 | TXA 262 | LDX POINTER+1 263 | SET_X_OF_A: 264 | JSR SET_BYTE 265 | DEX 266 | BNE SET_X_OF_A 267 | RTS 268 | ; 269 | SET_BYTE: 270 | ; LEAVE .X .A UNHARMED 271 | LDY POINTER2 ;INDEX 272 | CPY #120 ;INSURE NO BYTE OUT OF BUFFER 273 | ; BCC ?OK 274 | ; LDY #119 275 | BCS BAD_FNAME ;DONT REPEAT BAD BYTE 276 | .OK: 277 | STA GRAPHIC_RASTER_BUFFER,Y 278 | INC POINTER2 ;INDEX 279 | INC SCAN_BYTES 280 | BAD_FNAME: 281 | SEC 282 | RTS 283 | ; 284 | COPY_FILENAME: 285 | ;.A USE_FONT_DISK OR USE_WORK_DISK 286 | ; 287 | STA REGLOAD 288 | ; 289 | JSR IW_INTO_AX ;CAN NOT HARDCODE TO $CF08 290 | !word GRAPHIC_FILENAME 291 | JSR AX_INTO_PT 292 | ; 293 | LDA ASCTYP 294 | PHA ;SAVE ASCTYP 295 | LDY #0 296 | STY ASCTYP 297 | .NAMELOOP: 298 | LDA (POINTER),Y ;READ UNTIL $FF 299 | BMI .COPY_NAM 300 | JSR TOASCI 301 | STA FILENAME_LOC,Y 302 | INY 303 | BNE .NAMELOOP ;COPY AND CONVERT TO PETASCII 304 | ; 305 | .COPY_NAM: 306 | PLA 307 | STA ASCTYP ;RESTORE ASCTYP 308 | .ENDLOOP: 309 | DEY 310 | ; 311 | BEQ BAD_FNAME 312 | ; 313 | LDA (POINTER),Y ;COULD BE FILENAME_LOC 314 | CMP #' ' 315 | BEQ .ENDLOOP ;BACKUP OVER ANY TRAILING SPACES 316 | ; 317 | INY ;COUNT 1..N 318 | TYA ;FILENAME LENGTH 319 | ; 320 | LDX #FILENAME_LOC 322 | ; 323 | CLC 324 | JMP SETNAM ;RETURN CC (WILL NOT HARM CARRY) 325 | ; 326 | ; 327 | ; 328 | !eof 329 | ; 330 | ; PUBLIC BAD_HEADER 331 | ; PUBLIC BYTES_PER_LINE 332 | ; PUBLIC COPY_FILENAME 333 | ; PUBLIC OPEN_IMG_FILE 334 | ; PUBLIC PIXELS_PR_LINE 335 | ; PUBLIC READ_IMG_RASTER 336 | ; PUBLIC SCAN_LINES 337 | ; EXTERN ASCTYP 338 | ; EXTERN AX_INTO_PT 339 | ; EXTERN BIT_ON 340 | ; EXTERN BPCODES 341 | ; EXTERN CHKIN 342 | ; EXTERN CHRIN 343 | ; EXTERN CLRCHN 344 | ; EXTERN CLOSE 345 | ; EXTERN GRAPHIC_EFFECT 346 | ; EXTERN GRAPHIC_FILENAME 347 | ; EXTERN GRAPHIC_RASTER_BUFFER 348 | ; EXTERN GRAPHIC_X_OFFSET 349 | ; EXTERN IW_INTO_AX 350 | ; EXTERN LSR_AX_3 351 | ; EXTERN OPEN_FILE_A 352 | ; EXTERN PATTERN_BYTES 353 | ; EXTERN REGLOAD 354 | ; EXTERN SETNAM 355 | ; EXTERN TOASCI 356 | -------------------------------------------------------------------------------- /WW6_ACME/INBOOT.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone INBOOT;WWBOOT 3 | ; 4 | ; WORD WRITER BOOTER 5 | ; BY JEFF LOMAX 6 | ; 7 | FAST_LOAD_ADDRESS = $C000 8 | INSTALL_ADDRESS = $0900 9 | INSTALL_RUN = $0900-1 10 | ; 11 | CLALL = $FFE7 12 | CLOSE = $FFC3 13 | CLRCHN = $FFCC 14 | SETLFS = $FFBA 15 | SETNAM = $FFBD 16 | LOAD = $FFD5 17 | ; 18 | ;BASIC START 19 | ; 20 | !initmem $FF 21 | * = $801 22 | !byte $24,8,$A 23 | ; 24 | CBUF2: 25 | ; 26 | !text 0,$9E,"2087",$3A 27 | !byte $8F,34,20,20,20,20,20,20,20 28 | !text 20,20,20,20,20,"WW4 INSTALL" 29 | !byte 0,0,0 30 | ; 31 | ; BRANCH TO WORD WRITER 32 | ; 33 | BEGIN: 34 | ; 35 | SEI 36 | CLD 37 | LDX #$FF 38 | TXS 39 | ; 40 | INX ;[0] 41 | STX $02FF ;GEOS FLAG 42 | ; 43 | LDA $BA 44 | STA DRIVE ;GET CURRENT DRIVE 45 | JSR CLRCHN 46 | JSR CLALL 47 | ; 48 | LDX #3 49 | CKGEOS 50 | LDA $C006,X 51 | CMP GEOSMG,X 52 | BNE .NOT_GEOS 53 | DEX 54 | BPL CKGEOS 55 | LDA #$A5 56 | STA $02FF ;FLAG GEOS PRESENT 57 | ; 58 | .NOT_GEOS: 59 | ; 60 | LDA $330 ;GET SYSTEM LOAD VECTOR 61 | CMP #165 ;HAS IT BEEN CHANGED? 62 | BEQ .LOAD_FL ;BIF SO TO LOAD FL 63 | LDA $331 ;GET SYSTEM LOAD VECTOR HI 64 | CMP #244 ;HAS IT BEEN CHANGED? 65 | BNE .NOT_THERE ;IF NOT CHANGED, SKIP LOAD 66 | ; 67 | .LOAD_FL: 68 | LDA #2 69 | LDX #FAST_LOAD_NAME 71 | JSR SETNAM 72 | ; 73 | LDA #2 74 | LDX DRIVE 75 | LDY #0 76 | JSR SETLFS 77 | ; 78 | LDX #FAST_LOAD_ADDRESS 80 | LDA #0 81 | JSR LOAD 82 | LDA #2 83 | JSR CLOSE 84 | JSR CLRCHN 85 | ; 86 | LDA $C000 87 | CMP #$A9 88 | BNE .NOT_THERE 89 | LDA $C020 90 | CMP #$F5 91 | BNE .NOT_THERE 92 | LDA $C040 93 | CMP #$4C 94 | BNE .NOT_THERE ;JUST TEST 3 BYTES TO SEE IF FILE LOADED 95 | ; 96 | JSR $C000 ;ENABLE SWIFT-LOAD 97 | ; 98 | .NOT_THERE: 99 | ; 100 | LDX #0 101 | .LOOP: 102 | LDA MESSAGE,X 103 | BEQ .DONE 104 | JSR $FFD2 105 | INX 106 | BNE .LOOP 107 | ; 108 | .DONE: 109 | ; 110 | LDA #5 111 | LDX #INSTALL_NAME 113 | JSR SETNAM 114 | ; 115 | LDA #2 116 | LDX DRIVE 117 | LDY #0 118 | JSR SETLFS 119 | ; 120 | LDX #INSTALL_ADDRESS 122 | LDA #>INSTALL_RUN 123 | PHA 124 | LDA # ? 15 |  16 | -------------------------------------------------------------------------------- /WW6_ACME/LOADER.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | ; WORD WRITER 3 | ; 7/29/85 4 | ; BY JEFF LOMAX 5 | ; 6 | !zone LOADER 7 | .LIB VARIABLES 8 | .LIB WINDOW 9 | .LIB CALCULATE 10 | .LIB DICTION 11 | .LIB MOVERTNS 12 | .LIB PART3 13 | .LIB CATALOG 14 | .LIB PART4 15 | .LIB PART1 16 | .LIB PRINT 17 | .LIB PART2 18 | .LIB DATA 19 | .LIB MLIB 20 | ; 21 | !eof 22 |  23 | -------------------------------------------------------------------------------- /WW6_ACME/MLIB.ASM: -------------------------------------------------------------------------------- 1 | ;NED WHATLEY/JEFF LOMAX 2/12/85 2 | !zone MLIB 3 | ; 4 | ; PUBLIC ATIMEX 5 | ; PUBLIC AXP1 6 | ; PUBLIC P1WOR 7 | ; PUBLIC CLEAR_P1 8 | ; 9 | ;TIMES 10 | ; DB 0 11 | ; 12 | ;-------PROCESSOR EXTENSIONS------- 13 | ;AXTIME PHA 14 | ; JSR CLEAR_P1 15 | ; PLA 16 | ;ATIMEX ;P1=P1+.A*.X 17 | ; STX P4 ;LSB MULTIPLICAND 18 | ; LDX #0 19 | ; STX P4+1 ;0 MSB MULTIPLICAND 20 | ;TIMESA STA TIMES ;MULTIPLIER 21 | ; JMP SHOMUL ;2BYT*1BYT MULTPLY 22 | ; 23 | ;ADEM CLC 24 | ; LDA P4 ;LSB MULTIPLICAND 25 | ; ADC P1 ;LSB PRODUCT 26 | ; STA P1 ;NEW LSB PRODUCT 27 | ; LDA P4+1 ;MSB MULTIPLICAND 28 | ; ADC P1+1 ;MSB PRODUCT 29 | ; STA P1+1 ;NEW MSB PRODUCT 30 | ;SHLEFT ASL P4 ;LSB MULTIPLICAND 31 | ; ROL P4+1 ;MSB MULTIPLICAND 32 | ;SHOMUL LSR TIMES ;GET LOW MULTIPLIER BIT 33 | ; BCS ADEM ;SET BIT ADD MULTIPLICAND TO PRODUCT & SHIFT 34 | ; BNE SHLEFT ;SHIFT IF MORE BITS IN MULTIPLIER 35 | ; RTS 36 | ; 37 | ;ADJP1 ;P1=P1+.A,.X 38 | ; CLC 39 | ; ADC P1 40 | ; STA P1 41 | ; TXA 42 | ; ADC P1+1 43 | ; STA P1+1 44 | ; RTS 45 | ; 46 | ;ADJP2 ;P2=P2+.A,.X 47 | ; CLC 48 | ; ADC P2 49 | ; STA P2 50 | ; TXA 51 | ; ADC P2+1 52 | ; STA P2+1 53 | ; RTS 54 | ; 55 | ;ADJP3 ;P3=P3+.A,.X 56 | ; CLC 57 | ; ADC P3 58 | ; STA P3 59 | ; TXA 60 | ; ADC P3+1 61 | ; STA P3+1 62 | ; RTS 63 | ; 64 | ;CLEAR_P1: 65 | ; P1 = 0 66 | ; .A = 0 67 | ; 68 | ; LDA #0 69 | ; STA P1 70 | ; STA P1+1 71 | ; RTS 72 | ; 73 | ;P1XP4 JSR AXP1 74 | ; PHA 75 | ; TXA 76 | ; PHA 77 | ; JSR P1P4 78 | ; PLA 79 | ; TAX 80 | ; PLA 81 | ; JMP P4AX 82 | ; 83 | ;STIMES: 84 | ; STA TIMES 85 | ; LDX #16 86 | ; LDA #0 87 | ;STIME1 ASL P4 88 | ; ROL P4+1 89 | ; ROL A 90 | ; BCS STIME2 91 | ; CMP TIMES 92 | ; BCC STIME3 93 | ;STIME2 SBC TIMES 94 | ; INC P4 95 | ;STIME3 DEX 96 | ; BNE STIME1 97 | ; RTS 98 | ; 99 | ;P1EQAX ;P1=.A*.X 100 | ; PHA ;SAVE 101 | ; JSR CLEAR_P1 102 | ; PLA ;RESTORE 103 | ; JMP ATIMEX ;P1=P1+.A*.X 104 | ; 105 | ;P1WOR ;SET P1 = .WOR 106 | ; JSR GETWOR ;GET .WOR 107 | ; FALL THROUGH 108 | ;P1AX ;SET P1=.A,.X 109 | ; STA P1 110 | ; STX P1+1 111 | ; RTS 112 | ; 113 | ;AXP1 ;SET .A,.X = P1 114 | ; LDA P1 115 | ; LDX P1+1 116 | ; RTS 117 | ; 118 | ;P4AX ;P4=.A,.X 119 | ; STA P4 120 | ; STX P4+1 121 | ; RTS 122 | ; 123 | ;AXP4 ;.A,.X = P2 124 | ; LDA P4 125 | ; LDX P4+1 126 | ; RTS 127 | ; 128 | ;P3WOR ;P3 = .WOR 129 | ; JSR GETWOR ;GET .WOR 130 | ; 131 | ;P3AX ;SET P3=.A,.X 132 | ; STA P3 133 | ; STX P3+1 134 | ; RTS 135 | ; 136 | ;AXP3 ;SET .A,.X = P3 137 | ; LDA P3 138 | ; LDX P3+1 139 | ; RTS 140 | ; 141 | ;INCYP1 ;INC P1 BY .Y 142 | ; TYA ;INC VALUE 143 | ; .BYT $2C ;SKIP NEXT 2BYTES 144 | ;INC2P1 ;INC P1 BY 2 145 | ; LDA #2 ;INC VALUE 146 | ; .BYT $2C ;SKIP NEXT 2BYTES 147 | ;INC1P1: ;INC P1 BY 1 148 | ; LDA #1 ;INC VALUE 149 | ;INCAP1 ;INC P1+1 BY .A 150 | ; CLC 151 | ; ADC P1 ;LSB VALUE 152 | ; STA P1 ;NEW LSB VALUE 153 | ; BCC INC0P1 ;NO MSB ADJ 154 | ; INC P1+1 ;NEW MSB VALUE 155 | ;INC0P1 RTS 156 | ; 157 | ;INC1P2 ;INC P2+1 BY 1 158 | ; LDA #1 ;INC VALUE 159 | ;INCAP2 ;INC P2+1 BY .A 160 | ; CLC 161 | ; ADC P2 ;LSB VALUE 162 | ; STA P2 ;NEW LSB VALUE 163 | ; BCC INC0P2 ;NO MSB ADJ 164 | ; INC P2+1 ;NEW MSB VALUE 165 | ;INC0P2 RTS 166 | ; 167 | ;INC1P3 ;INC P3 BY 1 168 | ; LDA #1 ;INC VALUE 169 | ;INCAP3 ;INC P3 BY .A 170 | ; CLC 171 | ; ADC P3 ;LSB VALUE 172 | ; STA P3 ;NEW LSB VALUE 173 | ; BCC INC0P3 ;NO MSB ADJ 174 | ; INC P3+1 ;NEW MSB VALUE 175 | ;INC0P3 RTS 176 | ; 177 | ;P1P4 ;P1=P4 178 | ; JSR AXP4 ;.A,.X=P4 179 | ; JMP P1AX ;P1=.A,.X 180 | ; 181 | ;P2P1: 182 | ;P2 = P1 183 | ; JSR AXP1 ;.A,.X = P1 184 | ;P2AX: 185 | ; STA P2 186 | ; STX P2+1 187 | ; RTS 188 | ; 189 | ;P1P3: 190 | ;P1=P3 191 | ; 192 | ; JSR AXP3 ;.A,.X=P3+1 193 | ; JMP P1AX ;P1+1= .A,.X 194 | ; 195 | ;P4WOR ;SET P4 TO .WOR 196 | ; JSR GETWOR ;GET .A,.X = .WOR 197 | ; JMP P4AX ;SET P4 TO .A,.X 198 | ; 199 | PRTP0: 200 | LDY #5 201 | PRTP1: ;PRINT VALUE OF PT, P1 UNHARMED 202 | STX SAVEYG ;# DIGITS TO PRINT 203 | ; JSR P1XP4 ;SWAP P1 & P4,PRESERVE .X 204 | LDX SAVEYG 205 | ; 206 | PRTP10: 207 | LDA #10 208 | STA STOREY ;DIVISOR 209 | STX SAVEYG 210 | ; JSR STIMES ;DIVIDE P4 BY .A 211 | JSR DIV_PT_BY_S ;Divide POINTER/STOREY POINTER=quo .A=rem 212 | LDX SAVEYG 213 | EOR #$30 ;CONVERT TO ASCII CHA 214 | ; 215 | STA $400,X 216 | DEX 217 | DEY 218 | BNE PRTP10 219 | RTS 220 | ; 221 | ;----------GET WORD---------------- 222 | GETWOR ;GET 2 BYTES FOLLOWING JSR 223 | ; MAGIC NUMBERS $103,$104 ARE 224 | ; FIXED STACK LOCS 225 | STY SAVEYG ;SAVE THROUGH ROUTINE 226 | TSX ;GET STACK POINTER 227 | LDA $103,X ;LSB RETURN FOR UTILITY CALL 228 | STA P4 ;SAVE IT 229 | CLC 230 | ADC #2 ;#BYTES TO SKIP ON RETURN 231 | STA $103,X ;NEW LSB RETURN FOR UTILITY CALL 232 | LDA $104,X ;GET MSB RETURN FOR UTILITY CALL 233 | STA P4+1 ;SAVE IT 234 | ;-- (P4)=BYTE BEFORE DATA 235 | BCC GE201 ;NO MSB ADJUSTMENT 236 | INC $104,X ;INC MSB RETURN 237 | GE201 LDY #2 ;OFFSET TO 2ND ARGUMENT 238 | LDA (P4),Y ;GET 2ND ARGUMENT 239 | TAX ;SAVE IT 240 | DEY ;OFFSET TO 1ST ARGUMENT 241 | LDA (P4),Y ;GET 1ST ARGUMENT 242 | LDY SAVEYG ;RESTORE .Y 243 | RTS ;RETURN 244 | ; 245 | ; 246 | !eof 247 | ; 248 | ; PUBLIC GETWOR 249 | -------------------------------------------------------------------------------- /WW6_ACME/MOVERTNS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone MOVERTNS 3 | ; 4 | ; 5 | ; 6 | MOVE_UP_ONE: 7 | LDY #1 8 | MOVE_UP_Y: 9 | LDX #0 10 | ; 11 | MOVEUP: 12 | ; 13 | LDA TEXT 14 | STA MUPYL1 15 | STA MUPYL2 ;SEED LOW BYTES LOW POINTER 16 | ; LDA TEXT+1 17 | ; STA MUPYL1+1 18 | ; STA MUPYL2+1 ;MOVE TEXT TO LOW 19 | ; 20 | CLC 21 | TYA 22 | ADC TEXT 23 | STA MUPYH1 24 | STA MUPYH2 25 | TXA 26 | ADC TEXT+1 27 | STA MUPYH1+1 28 | STA MUPYH2+1 ;HIGH=.X.Y+TEXT 29 | ; 30 | CLC 31 | TYA 32 | ADC EOT 33 | STA SAVEOT 34 | TXA 35 | ADC EOT+1 36 | STA SAVEOT+1 ;SAVEOT=.X.Y+EOT 37 | ; 38 | ; LDA SAVEOT 39 | ; CMP HIMEM 40 | ; LDA SAVEOT+1 41 | ; SBC HIMEM+1 ;DO NOT MOVE IF 42 | ; BCS MUENDT ;SAVEOT > HIMEM (CS) 43 | ;# CAREFUL 44 | ; 45 | SEC 46 | LDA EOT 47 | SBC TEXT 48 | TAY 49 | LDA EOT+1 50 | SBC TEXT+1 51 | TAX ;DISTANCE (.X.Y)=EOT-TEXT 52 | ; 53 | CLC 54 | ; ADC MUPYL1+1 55 | ADC TEXT+1 56 | STA MUPYL1+1 57 | STA MUPYL2+1 ;ADD DISTANCE HB TO LO POINTER 58 | ; 59 | TXA 60 | CLC 61 | ADC MUPYH1+1 62 | STA MUPYH1+1 63 | STA MUPYH2+1 ;ADD DISTANCE HB TO HI POINTER 64 | CPY #0 ;NO ODD BYTES? 65 | BEQ MOVE_ZERO_BYTE;IF NOT, SKIP 66 | ; 67 | MUPYL1 = *+1 68 | MUPY: 69 | LDA $1234,Y 70 | MUPYH1 = *+1 71 | STA $1234,Y 72 | DEY 73 | BNE MUPY ;DO UP TO 255 BYTES 74 | ; 75 | MUPYL2 = *+1 76 | MOVE_ZERO_BYTE: 77 | LDA $1234 78 | MUPYH2 = *+1 79 | STA $1234 ;DO LOW BYTE 80 | DEY 81 | DEC MUPYL1+1 82 | DEC MUPYL2+1 83 | DEC MUPYH1+1 84 | DEC MUPYH2+1 85 | DEX 86 | BPL MUPY 87 | ; CPX #$FF 88 | ; BNE MUPY 89 | ; 90 | LDA SAVEOT+1 91 | STA EOT+1 92 | LDA SAVEOT 93 | STA EOT 94 | ; 95 | CLC 96 | MUENDT: 97 | RTS ;CC=OK CS=MOVE NOT DONE 98 | ; 99 | !eof 100 | ; 101 | ; PUBLIC MOVEUP 102 | ; PUBLIC MOVE_UP_ONE 103 | ; PUBLIC MOVE_UP_Y 104 | -------------------------------------------------------------------------------- /WW6_ACME/OUTLNJMP.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone OUTLNJMP 3 | ; 4 | ;THIS MODULE IS CREATED ONLY TO FACILITATE CALLS INTO THE 5 | ;OUTLINER. NO CALL TO THE MINI-DATABASE MAY BE PRESENT. 6 | ;THIS MUST BE CALLED ONLY WHEN THE OUTLINER IS IN MEMORY. 7 | ;COMPLIATION ALLIEGENCE IS TO THE OUTLINER ONLY. 8 | ; 9 | ; 10 | !SOURCE "WWSETUP.ASM" 11 | !SOURCE "VARIABLS.ASM" 12 | ; 13 | OV_OUTLINE_REFORMAT: 14 | ; 15 | JMP FC_OUTLINE_REFORMAT 16 | ; 17 | ; 18 | !eof 19 | ; 20 | ; PUBLIC OV_OUTLINE_REFORMAT 21 | ; EXTERN FC_OUTLINE_REFORMAT 22 | -------------------------------------------------------------------------------- /WW6_ACME/OVERLAY.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone OVERLAY 3 | ; 4 | !SOURCE "WWSETUP.ASM" 5 | !SOURCE "VARIABLS.ASM" 6 | ; 7 | ; PUBLIC IN_DATABASE_MODE 8 | ; PUBLIC FC_MINI_DATABASE 9 | ; 10 | ; 11 | ; 12 | FIELD_NAMES = $FEC0 13 | ; 14 | OVERLAY_IN_MEMORY: 15 | ;1=DATABASE, 0=OUTLINER 16 | !byte OVERLAY_ASSEMBLED; 2019 Configured from WW.ASM, WWDATA.ASM 17 | ; 18 | ;IN_DATABASE_MODE: 19 | ;1=IN DB MODE, 0=NOT IN DB MODE 20 | ; DB 0 21 | ; 22 | ;OUTLINER CONTROL CHARACTERS 23 | OUTMODE: 24 | !byte 0;0 = OUTLINER INACTIVE, NZ = ACTIVE 25 | ; 26 | ;-------------------- 27 | ; 28 | FC_ENTER_OUTLINER: 29 | ; 30 | LDA OUTMODE ;ARE WE IN OUTLINER NOW? 31 | BNE EXITOUT ;IF SO, GO TRY TO LEAVE THE OUTLINER 32 | ; 33 | LDX IN_DATABASE_MODE ;ARE WE IN THE DATABASE NOW? 34 | BEQ .OUTL_OR_CARDF ;NOT, ENTER DB OR OUTLN 35 | JMP EXIT_DATABASE_MODE ;GO TRY TO EXIT THE DATABASE 36 | ; 37 | .OUTL_OR_CARDF: 38 | LDX #40 ;TRY TO ENTER OUTLINER. 39 | STX MERPTR ;FLAG "GOOD SAVE" FOR ENTRY 40 | JSR PRKECY ;'ENTER OUTLINER OR CARDFILE?(O/C)' 41 | CMP #'C' ;WANTS THE CARDFILE? 42 | BEQ .FORCE_YN ;GO TO CARDFILE! 43 | CMP #'O' ;FALL THRU FOR OUTLINER 44 | BNE OUTLINE3 ;OR EXIT 45 | ; 46 | .FORCE_YN: 47 | PHA ;SAVE (O) OR (C) 48 | LDX #44 49 | JSR PRKECY ;OUTLINER ERASES MEMORY! SAVE FILE?(Y/N) 50 | BEQ .DO_SAVE 51 | CMP #'N' 52 | BEQ OUTLINE0 ;NO SAVE 53 | BNE .FORCE_YN 54 | ; 55 | .DO_SAVE: 56 | JSR QSAVE1 ;ENTER QUICK SAVE. 57 | ; 58 | OUTLINE0: 59 | ; 60 | PLA 61 | CMP #'C' 62 | BEQ FC_MINI_DATABASE 63 | ; 64 | LDA OVERLAY_IN_MEMORY ;WHICH OVERLAY IS IN MEMORY NOW? 65 | BEQ .OUTLINER_IN_MEMORY ;IF OUTLINER, GO ON 66 | ; 67 | LDA #'1' ;SELECT CARDFILE 68 | JSR LOAD_OVERLAY ;TRY TO LOAD IT 69 | ; BCS OUTLINE3 ;WE DIDN'T GET THE FILE 70 | BCS FMD_ABORT 71 | DEC OVERLAY_IN_MEMORY ;[0] 72 | ; 73 | .OUTLINER_IN_MEMORY: 74 | INC OUTMODE ;SET OUTMODE = 1 75 | LDA #0 76 | STA INSERTM ;SORRY, NO INSERT IN OUTLINER 77 | JSR TOGINS0 ;SET OVR IN HEADER 78 | ; 79 | SEC 80 | JSR DRAWOUT ;PLACE 'OUTLINER' IN HEADER 81 | ; 82 | JMP MNLINE 83 | ; 84 | ;-------------------- 85 | ; 86 | EXITOUT: 87 | ;*NOTE* THIS SHOULD MOVE INSIDE OUTLINER CODE 88 | LDX #43 ;'EXIT OUTLINE MODE?(Y/N)' 89 | JSR PRKECY 90 | BNE OUTLINE3 91 | ; 92 | CLC 93 | JSR DRAWOUT ;PLACE ' ' IN HEADER 94 | DEC OUTMODE 95 | OUTLINE3: 96 | JMP ON_AND_REFREASH 97 | ; 98 | ;-------------------- 99 | ; 100 | FC_MINI_DATABASE: 101 | ; 102 | .ENTER_DB: 103 | ; 104 | LDA OVERLAY_IN_MEMORY 105 | BNE .ENTER_OVERLAY 106 | ; 107 | LDA #'2' 108 | JSR LOAD_OVERLAY 109 | BCS FMD_ABORT ;WE DIDN'T GET IT 110 | INC OVERLAY_IN_MEMORY ;[1] WE GOT IT 111 | ; 112 | .ENTER_OVERLAY: 113 | JMP ENTER_DATABASE_MODE 114 | FMD_ABORT: 115 | RTS 116 | ; 117 | ;-------------------- 118 | ; 119 | LOAD_OVERLAY: 120 | ;.A NUMBER OF OVERLAY TO LOAD 121 | STA OVERLAY_NUMBER ;SELECT OVERLAY 122 | ; 123 | LDX #7 124 | JSR PRKECY ;'PLACE PROGRAM DISK IN DRIVE' 125 | ; 126 | LOAD_OVERLAY_DIRECT: 127 | JSR LOAD_ANY_FILE ;LOAD THE SELECTED OVERLAY 128 | !byte >OVERLAY_FILENAME 129 | !byte USE_DATA_DISK 130 | !byte 3 131 | !byte OVERLAY_START 133 | !byte PCBOX 186 | ; JSR AX_INTO_MSGOUT ;POINT TO CLUSTER BOX 187 | ; JSR W_INTO_MSGOUT 188 | ; DW PCBOX 189 | ; 190 | LDA #7 ;CBOFFSET 191 | JSR PULLDN ;DRAW THE BOX 192 | !word PCBOX 193 | RTS 194 | ; 195 | DSETLINE: 196 | ;MSGOUT POINTS TO 1ST PRINTER (TEXT) CODE 197 | ;INPUT MOVEHI (0..9) 198 | ; 199 | JSR W_INTO_PT 200 | !word PCSTART;SET P1 = PCSTART 201 | ; 202 | LDX #BOX_WIDTH ;WIDTH AROUND BOX 203 | LDA MOVEHI ;CURRENT POSITION TO SELECT 204 | JSR MUL_AX_PT ;Return POINTER = (.A*.X)+POINTER, DESTROY P1 205 | JSR PT_INTO_AX 206 | JMP AX_INTO_MSGOUT 207 | ; 208 | ; 209 | POINT_AND_PRINT: 210 | STA MOVEHI 211 | JSR POINTTOPRC ;POINT P1 AT PRINTER CODE 212 | ;(FT) 213 | ; 214 | PRINTPP1: 215 | ;PRINT CODE AT P1 216 | ;BINARY OUTPUT 217 | LDY MOVEHI 218 | CPY #1 219 | BNE .NO_FEATURE 220 | INC FEATUR ;WAS UNDERLINING 221 | ; 222 | .NO_FEATURE: 223 | LDY #0 224 | STY SESLEN 225 | PRINTPP2: 226 | LDY SESLEN 227 | LDA (POINTER1),Y 228 | CMP #$FF 229 | BEQ PRINTPP3 230 | CPY #6 ;ALL DONE? 231 | BCS PRINTPP3 232 | BIT PREVIEW 233 | BMI PRINTPP8 234 | ; 235 | JSR CHROUT ;OUT GOES CODE 236 | PRINTPP8: 237 | INC SESLEN 238 | BNE PRINTPP2 ;BRA 239 | ; 240 | PRINTPP3: 241 | RTS 242 | ; 243 | ; 244 | PFILEB: 245 | !text "@:" 246 | PFILE: 247 | !text "DEFAULT.TXT,P,W" 248 | PFILEE: 249 | ; 250 | PFILE_LEN = PFILEE-PFILE-4 251 | ; 252 | FC_SAVE_DEF_PRINT_FILE: 253 | ; 254 | LDX #46 255 | JSR PRKECY 256 | BNE PRINTPP3 ;EXIT 257 | ; 258 | LDA #0 ;SET TO DATA PATH AND CHECK DRIVE 259 | STA REGLOAD 260 | ; 261 | LDX #7 262 | JSR PRKECY 263 | ; 264 | LDA #PFILEE-PFILEB 265 | LDX #PFILEB 267 | JSR SETNAM 268 | ; 269 | ;*NOTE* 270 | ;COPY TABS FROM TAB TABLE TO DEF_FILE HERE 271 | ; 272 | LDA #3 273 | JSR XDEVICEN 274 | ; 275 | LDY #0 276 | JSR SETLFS 277 | ; 278 | JSR W_INTO_PT 279 | !word SAVEPRNT;SET PT = START ADDRESS 280 | LDA #SAVEPRNTE 283 | JMP SAVE_RAM 284 | ; 285 | ; 286 | !eof 287 | ; 288 | ; PUBLIC PFILE 289 | ; PUBLIC POINT_AND_PRINT 290 | ; EXTERN BPCODES 291 | ; EXTERN SAVEPRNT 292 | ; EXTERN W_INTO_MSGOUT 293 | -------------------------------------------------------------------------------- /WW6_ACME/VARIABLS.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone VARIABLS;VARIABLS.ASM 3 | ; 4 | ;DEBUGGER_PRESENT: EQU 0 ;1=YES 5 | ; 6 | USE_DATA_DISK = 0 7 | USE_SPELL_DISK = 1 8 | USE_FONT_DISK = 2 9 | USE_DEFAULT_FONT = 0 10 | ; 11 | MAX_CHARS_IN_LINE = 200 ;132 12 | MAX_PCODES = 16 13 | MAX_LINE_LENGTH = 200 ;132 14 | !if DEBUGGER_PRESENT { 15 | MAX_PAGES = 10 16 | } else { 17 | MAX_PAGES = 50 18 | } 19 | ; 20 | ; 21 | ; NEED RS.232 SUPPORT, ZP VARIABLS NEEDED: 22 | ; $A7,,$AB $B4..$B6 $BD $F7..$FA 23 | ; $293..$29E $2A1 24 | ; 25 | ; 26 | ;$2 .. $B INCLUSIVE RESERVED FOR PRINTER DRIVER 27 | ; 28 | TEMP6 = $C 29 | STOREY = $D 30 | STAC_X = $E ;BUFPTR EQU $D ;$E 31 | ;$E 32 | MSGOUT = $F ;$10 33 | ; 34 | MOVELO = $14 ;$15 35 | ; 36 | POINTER = $16 37 | BUILD = $18 ;{SAME NAME 38 | POINTER1 = $18 ;} 39 | POINTER2 = $1A 40 | ; 41 | MOVEHI = $1C ;$1D 42 | JUSCHR = $1E 43 | MOVE_COPY_HL = $1F ;JUSTTX EQU $1F 44 | BUFFLG = $20 45 | ; 46 | WW_INDEX = $21 ;{ 47 | LSTCLS = $21 ;} CLUSTER PRESENTED 48 | T6 = $22 49 | ; 50 | XSAVE = $23 51 | MSLEN = $24 52 | ;$25 UNSAFE DURING CATALOG 53 | ; 54 | ;JUSWOR: EQU $26 MOVED INTO PRINT.ASM 55 | IN_DATABASE_MODE = $26 56 | ;# DOESN'T DESERVE ZP STATUS 57 | RPSLEN = $27 58 | SESLEN = $28 59 | SAVEOT = $29 ;$2A 60 | ; 61 | ;CHR_OUT_TEMP: EQU $2B ;$2C { 62 | ;T80/T81 REMOVED CHR_OUT_TEMP MOVED TO OUTVAR 63 | ;T80: EQU $2B 64 | ;T81: EQU $2C ;} 65 | DOCUMENT_ALTERED = $2B 66 | ; 67 | T82 = $2D ;TEMP USED IN IMAGE.ASM 68 | PRINT_STATUS = $2E ;{ 69 | T83 = $2E ;} 70 | EDIT_BUFFER_CHANGED = $2F 71 | ; 72 | CHAR_WIDTH_ADJUST = $30 73 | PSAVET = $31 74 | SPECL = $32 75 | TMINDX = $33 76 | CURFLG = $34 ;# HARDLY WORTH ZP STATUS-SEE OUTLN 77 | PRTLIN = $35 78 | CURRENT_FONT = $36 79 | PRINTABLE_CHARACTERS = $37 80 | ; 81 | DOT_COLUMN = $38 ;$39 82 | ; 83 | P2 = $3A ;$3B 84 | P4 = $3C ;$3D 85 | KEYABT = $3E ;KEYBRD ABORT FLAG $80 = NO, $00 = YES 86 | SAVEY = $3F 87 | ; 88 | ;$43-$44 POSSIBLY UNSAFE 89 | FONT_BASE = $40 ;$41 90 | FONT_WORK = $42 ;$43 91 | TEMP0 = $45 92 | TEMP1 = $46 93 | TEMP2 = $47 94 | TEMP3 = $48 95 | TEMP4 = $49 96 | TEMP5 = $4A 97 | TOTAL_LINE_LENGTH = $4B ;$4C { 98 | POINTER3 = $4B ;$4C } 99 | POINTER4 = $4D ;$4E 100 | ; 101 | RETRNA = $4F 102 | BIIT = $51 103 | ; 104 | JBUFF = $52 ;{ 105 | BITBIN = $52 106 | BITROT = $53 ;} 107 | ; 108 | TEMP = $54 109 | CURRENT_KEY = $55 110 | STAC_Y = $56 ;WAS A5, KILLED JIFFY-DOS 111 | ; 112 | ;71-8F BLOCK 113 | ;DUAL DOCUMENT CRITICAL VARIABLS: 114 | ;SHOULD NOT NEED :SCRMO, TEXTMO 115 | ; 116 | ; 117 | SCRMO = $71 ;$72 118 | MARGIN = $73 ;$74 119 | END_OF_TEXT = $75 ;FOR OUTLINER 120 | EOT = $75 ;$76 121 | SCREEN = $77 ;$78 122 | PAGE = $79 123 | FIRST_CHAR_P = $7A 124 | TEXPAG = $7B ;$7C 125 | TEXTMO = $7D ;$7E 126 | TEXT = $7F ;$80 127 | COLUMN = $81 128 | COUNT = $82 129 | LINE = $83 130 | HIMEM = $84 ;$85 131 | STARTTEXT = $86 ;FOR OUTLN 132 | STTEXT = $86 ;$87 133 | CURRENT_CHAR = $88 ;REFERENCE IN OUTLN.ASM 134 | LINE_LENGTH = $89 ;$8A 135 | CHARS_IN_LINE = $8B 136 | ACTUAL_COLUMN = $8C 137 | CURRENT_SCREEN_LINE = $8D 138 | FIRST_CHAR = $8E 139 | FIRST_CHAR_F = $8F 140 | ; 141 | ;A6-B6 BLOCK 142 | ; 143 | ;STAC_Y: EQU $A5 MOVED TO $56 FOR JIFFY-DOS 144 | CHAIN = $A6 145 | MERPTR = $A7 ;$A8 146 | ;TPAGE: EQU $A9 147 | EDIT_TEMP = $A9 148 | ;*NOTE* FREE 149 | ;TPASS: EQU $AA ;FREE! FREE AT LAST! 150 | BIGGEST_POINTSIZE = $AA 151 | COUNT_DOWN = $AB 152 | ;# DOES THIS CHANGE AFTER DIRECTORY SCROLLS SCREEN 153 | STACKY = $AC 154 | ATTRIBUTES = $AD 155 | ;BLD,ITL,US1,US2,US3,SUP,SUB,UND 156 | ; 157 | ;SYSTEM $AE,AF 158 | OUTVAR = $B0 ;B0,B1,B2,B3 159 | DOTS_PRESENT_IN_BAND = $B0 ;RE-USE 160 | CHR_OUT_TEMP = $B1 161 | JUSTEXTP = $B4 ;POSITION IN TEXT FOR JUSTIFIED CHAR 162 | ; 163 | ;OK FOR USE 164 | BUFCHR = $BD 165 | PREVIEW = $BE 166 | ; 167 | ;NTEMP3: EQU $C0 168 | ;NP1: EQU $C3 ;/C4 169 | NDX = $C6 ;NUMBER OF CHARACTERS IN QUEUE (SYSTEM) 170 | SAVEYG = $C8 171 | ;NP2: EQU $F3 172 | ;$F5,F6 RESERVED, SYSTEM KEY MATRIX 173 | ; 174 | ;OUTVR1 $F7,F8,F9,FA 175 | ; 176 | CURRENT_POINTSIZE = $FB 177 | EXPAND_ON = $FC 178 | CUR_PAGE_LENGTH = $FD ; $FE 179 | ; 180 | UPARROW = 30 181 | CMARK = 122 ;CHECKMARK CHAR 182 | TABCHAR = 212 ;TAB CHARACTER 183 | ; 184 | STOPREC = 249 ;DEL LINE FILL 185 | LINEFLD = 250 ;SKIP THIS FIELD 186 | SKIPFLD = 251 ;FIELD SKIP CODE 187 | ENDREC = 252 ;END OF RECORD 188 | ; 189 | ENDT = 253 ;END OF TEXT 190 | SRETRN = 254 ;SOFT RETURN 191 | RETURN = 255 ;HARD RETURN 192 | ; 193 | PRTFEATURE = $201 ;211 ANY SPECIAL CODE. 194 | ; 195 | INPBUF = $204 ;21E BUFFER FOR KEYBOARD INPUT NOTE ACTUAL START $202 196 | FILENAME_LOC = INPBUF 197 | ; 198 | SEARCH_BUFFER = INPBUF+39 ;LONGEST = DISK COMMANDS(39) 199 | FILENAME_BUFFER = SEARCH_BUFFER + 32 ;SIZEOF SEARCH(32) 200 | ; 201 | ; 202 | PTEXT_COLOR = $286 203 | ; 204 | VIDEO = $400 ;VIDEO SCREEN HOME 205 | ; 206 | ;PRINTER DRIVER EQUATES 207 | PRINT_DRIVER_START = $04F2 ;$04F0 - LOAD ADDR 208 | ARGUMENT_TYPE = $052A 209 | BAND_BUFFER = $04F6 210 | JI_BYTE_OUT_PATCH = $04F8 211 | JI_CHANNEL_OUT = $0508 212 | JI_CHARACTER_OUT = $0502 213 | JI_CLEAR_CHANNEL = $050A 214 | JI_CLOSE_PRINTER = $0506 215 | JI_END_LINE_PATCH = $04FE 216 | JI_END_PRINT_PATCH = $04FA 217 | JI_OPEN_PRINTER = $0504 218 | JI_PAD_SPACES_PATCH = $0500 219 | JI_START_LINE_PATCH = $04FC 220 | MATRIX_DEFINITION = $0512 221 | PDEVICE = $051E 222 | PIXELS_IN_SPACE = $0529 223 | PIXELS_PER_INCH = $0515 224 | PIXELS_PER_LINE = $0513 225 | PRINTER_FILE_VERSION = $04F3 226 | PRINT_STRINGS = $0532 227 | PSECOND_ADDR = $051F 228 | P_ARG_1 = $0520 229 | P_ARG_2 = $0521 230 | P_ARG_3 = $0523 231 | P_ARG_4 = $0523 232 | SPECIAL_EFFECT1 = $0527 233 | SPECIAL_EFFECT2 = $0528 234 | VARIABLE_SPACE = $04F4 235 | VERTICAL_PIXELS_INCH = $0518 236 | VERTICAL_PIXELS_LEGAL = $051C 237 | VERTICAL_PIXELS_LETTER = $051A 238 | ; 239 | GEOSFL = $0801 ;0=SYSTEM NZ=GEOS 240 | ; 241 | CLSNUM = $0802 ;NUMBER OF CLUSTERS? 242 | WORD = $0803 ;WORD TO FIND IN THESAURUS 243 | HWORD = $0816 ;SECOND COPY OF WORD 244 | ; 245 | ENDRAM_MP = $FD80 246 | ENDRAM_M3 = $FE7D 247 | ENDRAM_M2 = $FE7E 248 | ENDRAM_M1 = $FE7F 249 | ENDRAM = $FE80 250 | ; 251 | ; 252 | !eof 253 | ; 254 | -------------------------------------------------------------------------------- /WW6_ACME/WINDOW.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone WINDOW 3 | ; 4 | ; WORD WRITER LORAM 5 | ; BY JEFF LOMAX 6 | ; 7 | ; 8 | ; 9 | MAX_MACRO_LENGTH = 119 10 | ; 11 | ; BASIC START 12 | ; 13 | !initmem $FF 14 | * = $801 15 | ; ORG $7FF 16 | ; DB $01,$08 17 | !byte $24,8,$A 18 | ; 19 | CBUF2: 20 | ; 21 | !text 0,$9E,"2087",$3A 22 | !byte $8F,34,20,20,20,20,20,20,20 23 | !text 20,20,20,20,20,"WORD WRITER" 24 | !byte 0,0,0 25 | ; 26 | ; BRANCH TO WORD WRITER 27 | ; 28 | BEGIN 29 | ; 30 | JMP STRTUP ;HELLO WORD WRITER (ENDMOD) 31 | ; 32 | !if DEBUGGER_PRESENT { 33 | NOP 34 | } else { 35 | PAGE_TABLE = $033C+$1F 36 | PAGE_LENGTH_LO = $033C+$1F+53 37 | PAGE_LENGTH_HI = $033C+$1F+53+53 38 | ; 39 | } 40 | ; 41 | ; 42 | ; WINDOW ROUTINES 43 | ; 44 | ROMSIN: 45 | PHA ;SAVE AC 46 | LDA #$37 ;GET BASIC/IO/KERNAL 47 | STA $01 ;INTO CONTEXT 48 | ; 49 | !if DEBUGGER_PRESENT { 50 | NOP 51 | } else { 52 | CLI ;START INTERRUPTS 53 | } 54 | ; 55 | PLA ;RESTORE A 56 | RTS 57 | ; 58 | ; 59 | CHRIN: ;MOST IMPORTANT KERNAL CALL 60 | JSR ROMSIN ;DROPS THRU 61 | JSR $FFCF 62 | ;(FT) 63 | ; 64 | ROMOUT: 65 | PHA ;SAVE AC 66 | LDA #$38 67 | SEI 68 | STA $01 ;KILL OP-SYSTEM 69 | PLA ;RESTORE AC 70 | RTS 71 | ; 72 | VIC_SCREEN_ON: 73 | JSR ROMSIN ;.X UNHARMED 74 | LDA #27 75 | BNE VSO_JOIN 76 | ; 77 | VIC_SCREEN_OFF: 78 | JSR ROMSIN 79 | LDA #11 80 | VSO_JOIN: 81 | STA $D011 82 | BNE ROMOUT 83 | ; 84 | CLR_BACKGROUND: 85 | CLRBLK: 86 | JSR ROMSIN 87 | LDX #0 88 | .CLRB_LOOP: 89 | LDA STCOLR 90 | STA $D800,X 91 | LDA TXCOLR 92 | STA $286 93 | STA $D84F,X 94 | STA $D900,X 95 | STA $DA00,X 96 | STA $DB00,X 97 | DEX 98 | BNE .CLRB_LOOP 99 | ; 100 | BEQ ROMOUT 101 | ; 102 | ; 103 | TOP_AREA: 104 | LDA TXCOLR 105 | PHA 106 | LDA BDRBAK 107 | STA TXCOLR 108 | JSR CLRBLK 109 | PLA 110 | STA TXCOLR 111 | RTS 112 | ; 113 | ; 114 | !if DEBUGGER_PRESENT { 115 | CBUF: 116 | !fill 30, $FF 117 | PAGE_TABLE: 118 | !byte 0,0,0,0,0,0,0,0,0,0 119 | PAGE_LENGTH_LO: 120 | !byte 0,0,0,0,0,0,0,0,0,0 121 | PAGE_LENGTH_HI: 122 | !byte 0,0,0,0,0,0,0,0,0,0 123 | ; 124 | } else { 125 | CBUF = $033C 126 | } 127 | ; 128 | ; 129 | ; INDIVIDUAL ROM ROUTINES 130 | ; 131 | CHKIN: 132 | JSR ROMSIN 133 | JSR $FFC6 134 | JMP ROMOUT 135 | ; 136 | CHKOUT: 137 | JSR ROMSIN 138 | JSR $FFC9 139 | JMP ROMOUT 140 | ; 141 | SPACE_OUT: 142 | LDA #' ' 143 | !byte $2C;SKIP 2 144 | CRLF: 145 | LDA #$0D ;SEND CR 146 | CHROUT: 147 | ;INTERFACE TO PRINT PREVIEW 148 | BIT PREVIEW ;ARE WE IN PREVIEW MODE? 149 | BPL CHROUT1 ;[0] NO, DO REGULAR CHROUT 150 | JMP DRAWCHAR ;PLACE CHAR ON 80 COLUMN SCREEN 151 | ; 152 | CHROUT1: 153 | JSR ROMSIN 154 | JSR $FFD2 155 | JMP ROMOUT 156 | ; 157 | CLALL: 158 | JSR ROMSIN 159 | JSR $FFE7 160 | JMP ROMOUT 161 | ; 162 | CLOSE: 163 | JSR ROMSIN 164 | JSR $FFC3 165 | JMP ROMOUT 166 | ; 167 | CLRCHN: 168 | JSR ROMSIN 169 | JSR $FFCC 170 | JMP ROMOUT 171 | ; 172 | !if CALCULATOR_PRESENT { 173 | CRUNCH: 174 | JSR ROMSIN 175 | LDA #0 176 | STA $7A 177 | JSR $A57C ;CRUNCH 178 | LDA #0 179 | STA $7A 180 | LDA #2 181 | STA $7B 182 | JSR $AD9E ;EVAL 183 | JMP ROMOUT 184 | } 185 | ; 186 | RECORD_PLAY: 187 | !byte 0;0 NORMAL FF PLAY 1 RECORD 188 | ; 189 | ; 190 | GETIN: 191 | LDA RECORD_PLAY ;MACRO ACTIVE? 192 | BEQ .NORMAL_READ ;NO, GO DO NORMAL READ 193 | CMP #$FF ;PLAYING? 194 | BNE .RECORD ;NO, GO RECORD 195 | ; 196 | LDY WHICH_MACRO ;WHICH MACRO 0/2? 197 | LDA MACRO_LIMIT 198 | CMP MACRO_1_END,Y ;GET INDEX TO START OF MACRO 199 | BNE .STILL_MORE 200 | ; 201 | JMP .NORMAL_PLAY_READY 202 | ;*NOTE* CAN GO JUST TO END_PLAY 203 | ; 204 | .STILL_MORE: 205 | TAX 206 | LDA KEY_RECORD_BUFFER,X 207 | JSR MACRO_FIX_X ;INC X AND WRAP 208 | STX MACRO_LIMIT 209 | .OUT: 210 | RTS ;EXIT 211 | ; 212 | ; 213 | ;RECORD BUFFER 214 | .RECORD: 215 | JSR .NORMAL_READ ;GET A KEY TO RECORD 216 | BEQ .OUT ;IF NO KEY, SKIP 217 | ; 218 | LDY WHICH_MACRO ;0 OR 2 FOR WHICH MACRO 219 | LDX MACRO_1_END,Y ;GET END ADDRESS FOR THIS MACRO 220 | STA KEY_RECORD_BUFFER,X ;STORE THE KEY 221 | JSR MACRO_FIX_X ;INC X AND WRAP 222 | CPX MACRO_LIMIT ;ARE WE OUT OF MEMORY? 223 | BEQ .OUT_OF_MEM 224 | ; 225 | ;READY TO RECORD CHARACTER 226 | PHA ;SAVE CHAR FOR WW 227 | TXA 228 | STA MACRO_1_END,Y ;UPDATE THE INDEX 229 | PLA ;RESTORE CHAR FOR WW 230 | RTS ;EXIT 231 | ; 232 | .OUT_OF_MEM: 233 | LDX #0 234 | STX RECORD_PLAY 235 | ; 236 | JSR NOT_ENOUGH_MEMORY ;ACKNOWLEDGE PROBLEM 237 | ; 238 | .NORMAL_PLAY_READY: 239 | ; 240 | JMP END_PLAY 241 | ; 242 | ; 243 | .NORMAL_READ: 244 | JSR ROMSIN 245 | ; 246 | !if DEBUGGER_PRESENT { 247 | .LOOP: 248 | LDA NDX 249 | BNE .READ_KEY 250 | JSR $EA87 ;SCAN FOR A KEY 251 | LDY #$05 252 | LDX #$FF 253 | .XLOOP: 254 | DEX 255 | BNE .XLOOP 256 | DEY 257 | BNE .XLOOP 258 | ; 259 | ; JMP ?LOOP 260 | BEQ .LOOP 261 | ; 262 | .READ_KEY: 263 | JSR $E5B4 264 | } else { 265 | JSR $FFE4 266 | } 267 | JMP ROMOUT 268 | ; 269 | GETIN1: 270 | JSR ROMSIN 271 | ; 272 | !if DEBUGGER_PRESENT { 273 | LDA NDX 274 | BNE .KEY_THERE 275 | JSR $EA87 ;SCAN FOR A KEY 276 | LDY #$05 277 | LDX #$FF 278 | .XLOOP0307: 279 | DEX 280 | BNE .XLOOP0307 281 | DEY 282 | BNE .XLOOP0307 283 | ; 284 | LDA #0 285 | JMP ROMOUT 286 | .KEY_THERE: 287 | JSR $E5B4 288 | } else { 289 | JSR $FFE4 290 | } 291 | ; 292 | JMP ROMOUT 293 | ; 294 | MACRO_FIX_X: 295 | INX ;INC X AND WRAP 296 | CPX #119 ;MAX_MACRO_LENGTH 297 | BCC .OK ;KEEP THIS PAIRED WITH RECORD 298 | LDX #0 ;START IN EDITLN 299 | .OK: 300 | RTS 301 | ; 302 | ; 303 | OPEN: 304 | JSR ROMSIN 305 | JSR $FFC0 306 | JMP ROMOUT 307 | ; 308 | RTIBYT 309 | LDA $DC0D ;ADDED DECEMBER 1987 310 | RESTOR: 311 | ; 312 | RTI 313 | ; 314 | !if CALCULATOR_PRESENT { 315 | FOUT: 316 | JSR ROMSIN 317 | ; 318 | FOUT1: 319 | JSR $BDDD ;FOUT 320 | JMP ROMOUT 321 | } 322 | ; 323 | COUT JSR ROMSIN ;CATALOG OUT 324 | JSR $B391 ;.AYTOFAC 325 | ; JMP FOUT1 ;FOUT 326 | ;*NOTE* CAN RE-ORGANIZE FOUT FALL THRU 327 | FOUT1: 328 | JSR $BDDD ;FOUT 329 | JMP ROMOUT 330 | ; 331 | SETLFS: 332 | STA $B8 ;LA 333 | STX $BA ;FA 334 | STY $B9 ;SA 335 | RTS 336 | ; 337 | SETNAM: 338 | STA $B7 ;FNLEN 339 | STX $BB ;FNADR 340 | STY $BC ;FNADR+1 341 | RTS 342 | ; 343 | BYEBYE: 344 | JSR ROMSIN 345 | JMP $FCE2 346 | ; 347 | DCNAME 348 | !text "0:A,S,R" 349 | ; 350 | ; 351 | !if CALCULATOR_PRESENT { 352 | CERROR: 353 | JSR ROMOUT 354 | JMP CERRVT ;HANDLE ERROR 355 | } 356 | ; 357 | ; 358 | CLRBYT: 359 | JSR ROMSIN 360 | STA (SCRMO),Y 361 | JMP ROMOUT 362 | ; 363 | LOAD: 364 | GLOAD: 365 | JSR ROMSIN 366 | LDA #0 367 | JSR $FFD5 368 | JMP ROMOUT 369 | ; 370 | SAVE_RAM: 371 | JSR ROMSIN 372 | JSR $FFD8 373 | JMP ROMOUT 374 | ; 375 | ; 376 | SAVE_LOAD_STRING_LEN: 377 | !byte 0 378 | SAVE_LOAD_STRING: 379 | !fill 15, $FF 380 | ; 381 | GEOFIL: 382 | !text ":*" 383 | GEOSMG: 384 | !text "GEOS BOOT" 385 | CATD: 386 | !text "$0";CAT 387 | ; 388 | PRINTER_DEF_NAME: 389 | ; 390 | !text "0:DEFAULT.GRF*" 391 | ; 392 | EXTENSION_TABLE: 393 | !text "GRF" 394 | !text "SCN" 395 | !text "DRF" 396 | ; 397 | ;# MOVE TO ZP 398 | REGLOAD: 399 | !byte 0 400 | ; 401 | ; 402 | !eof 403 | ; 404 | ; PUBLIC BYEBYE 405 | ; PUBLIC CHKOUT 406 | ; PUBLIC CHROUT 407 | ; PUBLIC CLALL 408 | ; PUBLIC CLOSE 409 | ; PUBLIC CLRCHN 410 | ; PUBLIC CLRBLK 411 | ; PUBLIC GETIN 412 | ; PUBLIC FONT_BASE 413 | ; PUBLIC MACRO_FIX_X 414 | ; PUBLIC RECORD_PLAY 415 | ; PUBLIC OPEN 416 | ; PUBLIC SAVE_LOAD_STRING_LEN 417 | ; PUBLIC SETLFS 418 | ; PUBLIC SPACE_OUT 419 | ; PUBLIC RESTOR 420 | ; PUBLIC ROMOUT 421 | ; PUBLIC ROMSIN 422 | ; PUBLIC RTIBYT 423 | ; EXTERN DRAWCHAR 424 | ; EXTERN MACRO_LENGTH 425 | ; EXTERN MACRO_LIMIT 426 | ; EXTERN MACRO_1_START 427 | ; EXTERN MACRO_1_END 428 | ; EXTERN MACRO_2_START 429 | ; EXTERN MACRO_2_END 430 | ; EXTERN STRTUP 431 | ; EXTERN WHICH_MACRO 432 | -------------------------------------------------------------------------------- /WW6_ACME/WW.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | ; WORD WRITER 3 | ; 9/06/86 4 | ; BY JEFF LOMAX 5 | ; 6 | !zone WW 7 | ; 8 | !SOURCE "WWSETUP.ASM" 9 | OVERLAY_ASSEMBLED = 0 ; OUTLINER (OUTLN.ASM), used in OVERLAY.ASM 10 | ; 11 | ; 12 | !if CALCULATOR_PRESENT { 13 | } 14 | ; PUBLIC FC_ENTER_OUTLINER 15 | ; PUBLIC FC_SET_INDEX 16 | ; PUBLIC OUTMODE 17 | ; PUBLIC PRTSET 18 | ; 19 | ; 20 | ; 21 | ; 22 | ; EXTERN BIGGEST_POINTSIZE 23 | ; 24 | ; EXTERN CUR_PAGE_LENGTH 25 | ; EXTERN DOCUMENT_ALTERED 26 | ; EXTERN EDIT_BUFFER_CHANGED 27 | ;(BITMAP) 28 | ; 29 | !SOURCE "VARIABLS.ASM" 30 | !SOURCE "WINDOW.ASM" 31 | !SOURCE "CALCULA.ASM" 32 | !SOURCE "DICTION.ASM" 33 | !SOURCE "MOVERTNS.ASM" 34 | !SOURCE "PART3.ASM" 35 | !SOURCE "CATALOG.ASM" 36 | !SOURCE "PART1.ASM" 37 | !SOURCE "PART2.ASM" 38 | !SOURCE "DATA.ASM" 39 | !SOURCE "MLIB.ASM" 40 | !SOURCE "THSCODE.ASM" 41 | !SOURCE "PRTCODE.ASM" 42 | ; 43 | ;2019 Mods 44 | ;ORDER OF FILES COPIED FROM WWLINK.LNK 45 | !SOURCE "DISPLAY.ASM" 46 | !SOURCE "OVERLAY.ASM" 47 | !SOURCE "THESRUS.ASM" 48 | 49 | !SOURCE "OUTLN.ASM" 50 | ;INCLUDE MINIDB.ASM 51 | 52 | !SOURCE "DISPATCH.ASM" 53 | !SOURCE "BITMAP.ASM" 54 | !SOURCE "EDITLN.ASM" 55 | !SOURCE "FORMAT.ASM" 56 | !SOURCE "CONFIG.ASM" 57 | !SOURCE "POINTERM.ASM" 58 | !SOURCE "STACK.ASM" 59 | !SOURCE "SUPPORT.ASM" 60 | !SOURCE "BPRINT.ASM" 61 | !SOURCE "PRINT.ASM" 62 | !SOURCE "GPRINT.ASM" 63 | !SOURCE "IMAGE.ASM" 64 | !SOURCE "IMG.ASM" 65 | !SOURCE "FONTWIND.ASM" 66 | !SOURCE "HELP.ASM" 67 | !SOURCE "BUFFERS.ASM" 68 | !SOURCE "ENDMOD.ASM" 69 | !SOURCE "SPRITE.ASM" 70 | ; 71 | !eof 72 | ; 73 | ; PUBLIC CLSNUM 74 | ; PUBLIC WORD 75 | ; PUBLIC END_OF_TEXT 76 | ; PUBLIC STARTTEXT 77 | ; PUBLIC COLUMN 78 | ; PUBLIC COUNT 79 | ; PUBLIC ABORT_FUNCTION 80 | ; PUBLIC ACTUAL_COLUMN_OUT 81 | ; PUBLIC AXASCII 82 | ; PUBLIC CATD 83 | ; PUBLIC CBUF 84 | ; PUBLIC CHANGECOD 85 | ; PUBLIC CHKIN 86 | ; PUBLIC CHKNUM 87 | ; PUBLIC CHNL2I 88 | ; PUBLIC CLR_BACKGROUND 89 | ; PUBLIC CLRAXY 90 | ; PUBLIC CHRIN 91 | ; PUBLIC CLOSE2 92 | ; PUBLIC CLSANY 93 | ; PUBLIC CRLF 94 | ; PUBLIC DECTE1 95 | ; PUBLIC DCNAME 96 | ; PUBLIC EXTENSION_TABLE 97 | ; PUBLIC FC_CALCULATOR 98 | ; PUBLIC FC_CATALOG 99 | ; PUBLIC FC_CHECK_SPELLING 100 | ; PUBLIC FC_CHANGE_DEVICE 101 | ; PUBLIC FC_DISK_COMMAND 102 | ; PUBLIC FC_THESAURUS_LOOKUP 103 | ; PUBLIC FC_LOAD_FILE 104 | ; PUBLIC FC_PRINTER_CODES 105 | ; PUBLIC FC_RUN_STOP 106 | ; PUBLIC FC_SAVE_DEF_PRINT_FILE 107 | ; PUBLIC FC_SAVE_FILE 108 | ; PUBLIC FC_SAVE_LOAD_MERGE 109 | ; PUBLIC FC_SEARCH 110 | ; PUBLIC FC_SEARCH_AGAIN 111 | ; PUBLIC FC_SHOW_MEMORY 112 | ; PUBLIC FC_TOGGLE_INSERT 113 | ; PUBLIC GEOFIL 114 | ; PUBLIC GEOSMG 115 | ; PUBLIC GETIN1 116 | ; PUBLIC GLOAD 117 | ; PUBLIC HEADER 118 | ; PUBLIC HEXIN 119 | ; PUBLIC HEXIN1 120 | ; PUBLIC HEXOUT 121 | ; PUBLIC INCEO1 122 | ; PUBLIC INIDSK 123 | ; PUBLIC INITIL 124 | ; PUBLIC INIT_BLOCK_TWO 125 | ; PUBLIC KILL_BLOCK 126 | ; PUBLIC LKFDP1 127 | ; PUBLIC LOAD 128 | ; PUBLIC LSTCLR 129 | ; PUBLIC MERGE_NAMES 130 | ; PUBLIC MNLINE 131 | ; PUBLIC MVTEMV 132 | ; PUBLIC OPENE1 133 | ; PUBLIC OPEN_FILE_A 134 | ; PUBLIC OPEN_A_DV_15 135 | ; PUBLIC OPEN_USER_FILE_1 136 | ; PUBLIC OPEN_15_NO_NAME 137 | ; PUBLIC OPNDIC 138 | ; PUBLIC PAGNUM 139 | ; PUBLIC PAGOUT 140 | ; PUBLIC PAGE_LENGTH_HI 141 | ; PUBLIC PAGE_LENGTH_LO 142 | ; PUBLIC PAGE_TABLE 143 | ; PUBLIC PRESS_ANY_KEY_CHROUT 144 | ; PUBLIC PRINTER_DEF_NAME 145 | ; PUBLIC PULLDN 146 | ; PUBLIC PFILE_LEN 147 | ; PUBLIC PRTP0 148 | ; PUBLIC PTCTRL 149 | ; PUBLIC READWD 150 | ; PUBLIC REGLOAD 151 | ; PUBLIC REMOVE_BLOCK 152 | ; PUBLIC RETOUT 153 | ; PUBLIC RETOUT_X 154 | ; PUBLIC RETNATOTE 155 | ; PUBLIC RET_AT_TEXT_Y 156 | ; PUBLIC SAVE_DOCUMENT 157 | ; PUBLIC SAVE_DOCUMENT_1 158 | ; PUBLIC SEARCH_AGAIN_FROM_CURS 159 | ; PUBLIC SEARCH_STRING_LENGTH 160 | ; PUBLIC SETNAM 161 | ; PUBLIC SETUP_RW 162 | ; PUBLIC SET_MARGIN_ONLY 163 | ; PUBLIC STATUS 164 | ; PUBLIC STATUS_DEFAULT_IN 165 | ; PUBLIC SWPBLK 166 | ; PUBLIC TETORETNA 167 | ; PUBLIC TOASCI 168 | ; PUBLIC TOP_AREA 169 | ; PUBLIC VIC_SCREEN_ON 170 | ; PUBLIC VIC_SCREEN_OFF 171 | ; PUBLIC WAIT_FOR_KEY 172 | ; PUBLIC WAIT_FOR_KEY_AND_HEADER 173 | ; PUBLIC XDEVICEN 174 | ; EXTERN KILJUS 175 | ; EXTERN CMACST 176 | ; EXTERN PRTLST 177 | ; EXTERN PRTDRP 178 | ; EXTERN CHNPAG 179 | ; EXTERN OUTMODE 180 | ; EXTERN PCBOX 181 | ; EXTERN PCSTART 182 | ; EXTERN AD28SC 183 | ; EXTERN AD28SM 184 | ; EXTERN ADDASM 185 | ; EXTERN ASCTYP 186 | ; EXTERN AX_INTO_CUR_PAGE_LENGTH 187 | ; EXTERN AX_INTO_MARGIN 188 | ; EXTERN AX_INTO_MSGOUT 189 | ; EXTERN AX_INTO_PAGE_LENGTH 190 | ; EXTERN AX_INTO_PT 191 | ; EXTERN AX_INTO_TEXT 192 | ; EXTERN AX_INTO_P2 193 | ; EXTERN BOTTOM_MARGIN 194 | ; EXTERN BP_PLS_CUR_PAGE_LENGTH 195 | ; EXTERN BUMP_COLUMN_COUNT 196 | ; EXTERN COLORS 197 | ; EXTERN TXCOLR 198 | ; EXTERN STCOLR 199 | ; EXTERN BDRBAK 200 | ; EXTERN DEVICE 201 | ; EXTERN CURLIN 202 | ; EXTERN CTRL_SHIFT 203 | ; EXTERN DBUMP_COLUMN_COUNT 204 | ; EXTERN DEC_AX_BY_PT 205 | ; EXTERN DEC_AX_BY_1 206 | ; EXTERN DEC_AX_BY_Y 207 | ; EXTERN DEC_P2_BY_1 208 | ; EXTERN DEC_ZPPT_X 209 | ; EXTERN DEL_WHOLE_LINE 210 | ; EXTERN DISPLY 211 | ; EXTERN DISPLYOFF 212 | ; EXTERN DISPLAYON 213 | ; EXTERN DISPLAY_SCREEN_AND_HEADER 214 | ; EXTERN DISPLAY_ON_AND_LINE_OUT 215 | ; EXTERN DIV_PT_BY_S 216 | ; EXTERN DIV_AX_BY_Y 217 | ; EXTERN D_PIXELS_PER_INCH 218 | ; EXTERN EOM_TEST_PLUS_Y 219 | ; EXTERN EOT_INTO_AX 220 | ; EXTERN END_PLAY 221 | ; EXTERN EXTENDED_CODES 222 | ; EXTERN FC_BEGINNING_OF_LINE 223 | ; EXTERN FC_CLEAR_HOME 224 | ; EXTERN FC_CLEAR_HOME_DSP 225 | ; EXTERN FC_CLEAR_HOME_NT 226 | ; EXTERN FC_CURSOR_RIGHT 227 | ; EXTERN FC_PAGE_FORWARD_NT 228 | ; EXTERN FC_REFORMAT_DOC 229 | ; EXTERN FC_WORK_KEY 230 | ; EXTERN FC_WORK_KEY_INS 231 | ; EXTERN FEATUR 232 | ; EXTERN FILE_STATUS 233 | ; EXTERN FULL_SCREEN 234 | ; EXTERN FONT_DEF_LEN 235 | ; EXTERN FONT_LEADING 236 | ; EXTERN GET_MARGIN 237 | ; EXTERN GET_PRINT_WINDOW_NUMBER 238 | ; EXTERN GET_SPACING 239 | ; EXTERN INSERTM 240 | ; EXTERN INC_AX_BY_1 241 | ; EXTERN INC_P3_BY_1 242 | ; EXTERN INSTALL_FONTS 243 | ; EXTERN IW_INTO_AX 244 | ; EXTERN KEY_RECORD_BUFFER 245 | ; EXTERN KEY_RECORD_INDEX 246 | ; EXTERN KEY_RECORD_END 247 | ; EXTERN LEFPRT 248 | ; EXTERN LINE_OUT 249 | ; EXTERN MOVE_TO_START_OF_WORD 250 | ; EXTERN MGP1PAX 251 | ; EXTERN MUL_AX_PT 252 | ; EXTERN NUMPGS 253 | ; EXTERN PAGE_LENGTH 254 | ; EXTERN PW_START_PAGE 255 | ; EXTERN NOT_ENOUGH_MEMORY 256 | ; EXTERN ON_AND_REFREASH 257 | ; EXTERN PATTERN_BYTES 258 | ; EXTERN PEELNU 259 | ; EXTERN PLNLEN 260 | ; EXTERN POP_AX 261 | ; EXTERN POP_TEXT 262 | ; EXTERN PUSH_EOT 263 | ; EXTERN PUSH_TEXT 264 | ; EXTERN PRINT 265 | ; EXTERN PRTPRM 266 | ; EXTERN PRTDEVICE 267 | ; EXTERN PRTWIN_TOPMAR 268 | ; EXTERN PTCRLF 269 | ; EXTERN PXCRLF 270 | ; EXTERN P2_INTO_PT 271 | ; EXTERN PT_INTO_P1 272 | ; EXTERN PT_INTO_AX 273 | ; EXTERN REFORMAT_DOC 274 | ; EXTERN REMOVE_A_BYTES 275 | ; EXTERN RESET 276 | ; EXTERN SAVEPRNTE 277 | ; EXTERN SCAN_FOR_KEY 278 | ; EXTERN SET_LEFT_MARGIN 279 | ; EXTERN SET_LINE_MARGIN 280 | ; EXTERN SET_TO_TEXT_OR_GRAPHICS 281 | ; EXTERN SET_VMARGINS 282 | ; EXTERN SHIFT 283 | ; EXTERN START_OF_TEXT 284 | ; EXTERN STPAGE 285 | ; EXTERN STRIP 286 | ; EXTERN TAB_TABLE 287 | ; EXTERN TEXT_INTO_AX 288 | ; EXTERN TOP_MARGIN 289 | ; EXTERN UNDTAB 290 | ; EXTERN USER_DEFINED_LEAD 291 | ; EXTERN VID_A_TO_SCRMO 292 | ; EXTERN WORK_KEY 293 | ; EXTERN WORK_SPACE_D200 294 | ; EXTERN W_INTO_P2 295 | ; EXTERN W_INTO_P3 296 | ; EXTERN W_INTO_PT 297 | ; EXTERN XLATE 298 | ; EXTERN Y_TO_END_LINE 299 | ; EXTERN JUSTIFY_FORMAT 300 | ; EXTERN INITILIZE40 301 | -------------------------------------------------------------------------------- /WW6_ACME/WWBOOT.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | !zone WWBOOT 3 | ; 4 | ; WORD WRITER BOOTER 5 | ; BY JEFF LOMAX 6 | ; 7 | FAST_LOAD_ADDRESS = $C000 8 | WORD_WRITER_ADDRESS = $0801 9 | WORD_WRITER_RUN = $0827-1 10 | ; 11 | CLALL = $FFE7 12 | CLOSE = $FFC3 13 | CLRCHN = $FFCC 14 | SETLFS = $FFBA 15 | SETNAM = $FFBD 16 | LOAD = $FFD5 17 | ; 18 | ;BASIC START 19 | ; 20 | !initmem $FF 21 | * = $801 22 | !byte $24,8,$A 23 | ; 24 | CBUF2: 25 | ; 26 | !text 0,$9E,"2087",$3A 27 | !byte $8F,34,20,20,20,20,20,20,20 28 | !text 20,20,20,20,20,"WORD WRITER" 29 | !byte 0,0,0 30 | ; 31 | ; BRANCH TO WORD WRITER 32 | ; 33 | BEGIN: 34 | ; 35 | SEI 36 | CLD 37 | LDX #$FF 38 | TXS 39 | ; 40 | LDA $BA 41 | STA DRIVE ;GET CURRENT DRIVE 42 | JSR CLRCHN 43 | JSR CLALL 44 | ; 45 | LDA $02FF 46 | CMP #$A5 47 | BEQ NOT_GEOS 48 | ; 49 | LDX #$0 50 | STX $02FF ;GEOS FLAG 51 | ; 52 | LDX #3 53 | CKGEOS 54 | LDA $C006,X 55 | CMP GEOSMG,X 56 | BNE NOT_GEOS 57 | DEX 58 | BPL CKGEOS 59 | LDA #$A5 60 | STA $02FF ;FLAG GEOS PRESENT 61 | ; 62 | NOT_GEOS: 63 | ; 64 | LDA $330 ;GET SYSTEM LOAD VECTOR 65 | CMP #165 ;HAS IT BEEN CHANGED? 66 | BEQ .LOAD_FL ;BIF SO TO LOAD FL 67 | LDA $331 ;GET SYSTEM LOAD VECTOR HI 68 | CMP #244 ;HAS IT BEEN CHANGED? 69 | BNE .NOT_THERE ;IF NOT CHANGED, SKIP LOAD 70 | ; 71 | .LOAD_FL: 72 | LDA #2 73 | LDX #FAST_LOAD_NAME 75 | JSR SETNAM 76 | ; 77 | LDA #2 78 | LDX DRIVE 79 | LDY #0 80 | JSR SETLFS 81 | ; 82 | LDX #FAST_LOAD_ADDRESS 84 | LDA #0 85 | JSR LOAD 86 | LDA #2 87 | JSR CLOSE 88 | JSR CLRCHN 89 | ; 90 | LDA $C000 91 | CMP #$A9 92 | BNE .NOT_THERE 93 | LDA $C020 94 | CMP #$F5 95 | BNE .NOT_THERE 96 | LDA $C040 97 | CMP #$4C 98 | BNE .NOT_THERE ;JUST TEST 3 BYTES TO SEE IF FILE LOADED 99 | ; 100 | JSR $C000 ;ENABLE SWIFT-LOAD 101 | ; 102 | .NOT_THERE: 103 | ; 104 | LDX #0 105 | .LOOP: 106 | LDA MESSAGE,X 107 | BEQ .DONE 108 | JSR $FFD2 109 | INX 110 | BNE .LOOP 111 | ; 112 | .DONE: 113 | ; 114 | LDA #3 115 | LDX #WORD_WRITER_NAME 117 | JSR SETNAM 118 | ; 119 | LDA #2 120 | LDX DRIVE 121 | LDY #0 122 | JSR SETLFS 123 | ; 124 | LDX #WORD_WRITER_ADDRESS 126 | LDA #>WORD_WRITER_RUN 127 | PHA 128 | LDA #