Login

Subversion Repositories NedoOS

Rev

Rev 922 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

        DEVICE ZXSPECTRUM128
        include "../_sdk/sys_h.asm"
        include "8080.asm"

;
;
; Main CC.ASM Source Driver
; (for use with LASM.COM)
;
        ;page 76
        ;title 'cc.asm v1.6  CP/M 3/10/86'

true:   equ 0ffffh
false:  equ not true

SLRMAC: equ true;false
LASM:   equ not SLRMAC
CPM:    equ true        ;if true, for cp/m
TERM equ 1

ZSYSTEM equ true

        if not ZSYSTEM
version: equ '6'        ;the 'x' in 'v1.x'
updatn: equ 0           ;the `y' in `v1.xy'      (number)
UPDATY: equ 0           ;the `z' in `v1.xyz', or zero if none (character)
        endif

        if ZSYSTEM
version: equ '2'        ;the 'x' in 'vZx.yz'
updatn: equ 0           ;the `y' in `vZx.yz'     (number)
UPDATY: equ 0           ;the `z' in `vZx.yz', or zero if none (character)
        endif


DEMO:   equ 0           ;true for special demo message (must be customized)
IMPURE: equ 1           ;true to generate impure code for parity stripping
                        ;                                               option
ALPHA:  equ 0           ;true if "alpha-C" version
motu:   equ 0           ;true if for Mark of the Unicorn
trs80:  equ 0           ;true if  special TRASH-80 version
PREREL: equ 0           ;true if `pre-release' is to be printed on startup
debug:  equ PREREL
marc:   equ  false      ;true if MARC-resident version

bigstring: equ false    ;true to allow LOTS of preprocessor string space

        if bigstring
strsiz: equ 3500        ;3500 for BIG programs
        endif

        if not bigstring
strsiz: equ 2800        ;2800 for normal programs
        endif

        IF NOT CPM
;       Assembling NON-CPM  version             !=
        ENDIF

        IF LASM
        ;sym
        ENDIF

ram:    equ 0000h       ;start of ram in system

          if motu
dfstsz: equ 11*1024     ;default symbol table size
          endif

          if not motu
dfstsz: equ 10*1024
          endif

tbuff:  equ ram+80h     ;used under both CP/M and MARC
tpa:    equ PROGSTART;ram+100h  ;TPA under both CP/M and MARC

ztack=0
stkchk=ztack-322

        IF CPM
bdos:   equ ram+5
NEDOOSMEMTOP=stkchk;bdosp:      equ ram+6
fcb:    equ ram+5ch
fcbnr:  equ fcb+32
fcbex:  equ fcb+12
secsiz: equ 128
        ENDIF


negone  equ 0ffh        ;negative one, 8 bit 2's complement

        IF CPM
;coninp:                equ 1
;conout:                equ 2
readbuf:        equ 10
;intcon:                equ 11
;select:                equ 14
openfil:        equ 15
closefil:       equ 16
delete:         equ 19
rsequen:        equ 20
wsequen:        equ 21
makfil:         equ 22
;gdisk:         equ 25
sdma:           equ 26
;sguser:                equ 32
        ENDIF

;
; Include file nesting control:
;

fnlen:  equ 12  ;length of filename in fcb format ( filename plus disk)
nestmax: equ 5  ;max of 5 levels of include file nesting allowed

;
; Equates:
;

nlcd:   equ 0f7h
concd:  equ 0f8h
varcd:  equ 0f9h
lblcd:  equ 0fah
labrc:  equ 0fch
strcd:  equ 0fdh
sttcd:  equ 8bh
period: equ 0c5h
arrow:  equ 0b4h
swtbc:  equ 0feh
divcd:  equ 0b7h
mulcd:  equ 0b6h
modcd:  equ 0b8h
plus:   equ 0c4h
ancd:   equ 0bbh
letcd:  equ 0beh
newlin: equ 10
ht:     equ 9
bs:     equ 8
ff:     equ 0ch
chrcd:  equ 80h
regcd:  equ 9eh
shrtcd: equ 9fh
gotcd:  equ 8dh
rencd:  equ 8eh
brkcd:  equ 90h
cntcd:  equ 91h
ifcd:   equ 92h
elscd:  equ 93h
forcd:  equ 94h
docd:   equ 95h
whlcd:  equ 96h
swtcd:  equ 97h
cascd:  equ 98h
defcd:  equ 99h
uncd:   equ 8ch
lbrcd:  equ 9bh
rbrcd:  equ 9ch
sizcd:  equ 8fh
mincd:  equ 0b5h
dcoln:  equ 0c1h
open:   equ 0c2h
close:  equ 0c3h
semi:   equ 0c6h
comma:  equ 0c7h
openb:  equ 0c8h
closb:  equ 0c9h
colon:  equ 0cah
circum: equ 0cbh

modbeg: equ 0f5h
modend: equ 0f6h


cr:     equ 0dh
lf:     equ 0ah


        ;IF LASM
        ;link   CCA
        ;ENDIF

        org PROGSTART;tpa               ;start of CP/M TPA
begin
        ;IF SLRMAC
        include "cca.asm"
        include "ccb.asm"
        include "../_sdk/stdio.asm"
        include "cccomp.asm" ;внутри есть org, начинается запарываемая часть
        include "ccd.asm"
        ;ENDIF

;
; Data storage used by "readf":
;

datarea: equ $

secbuf: ds 256          ;sector buffer for reading in file
fsp:    ds 2
sptr:   ds 2
incf:   ds 1            ; true if in an include file
pndsav: ds 2
fnbuf:  ds 50           ;file name buffer for reading in files
textp:  ds 2
lastc:  ds 1
lastc2: ds 1
quotf:  ds 1            ;true if in a quoted string
newusr: ds 1            ;new disk for #includes (CP/M)
newdsk: ds 1            ;new user area for #includes (CP/M)
atcnt:  ds 2            ;last active line count for comment diagnostics
inclstk: equ $          ;"include" stack

;
; Data used by "lblpr":
;

        org datarea     ;overlap readf's data area with lblpr's data area

lblp:   ds 2
lblt:   equ $

        ;IF LASM
        ;end
        ;ENDIF

end
        savebin "cc.com",begin,end-begin
        
        LABELSLIST "../../us/user.l"