Show
Ignore:
Timestamp:
10/11/09 10:38:13 (3 years ago)
Author:
brandonlw
Message:

So we should have the ability to look up variables, create them, and delete them now

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/page00/varmgmt.asm

    r50 r53  
    55 
    66 PUBLIC ResetStacks,FindSym 
    7  EXTERN JErrorNo,OP1ToOP4 
     7 EXTERN JErrorNo,OP1ToOP4,EquToOP1,MovToOP1,MovFrOP1 
    88 
    99ResetStacks: 
     
    416416       push de 
    417417       call IsFixedName 
    418 ;       jr nz, 
     418       jr nz,DelVar_1 
     419       ld a,(hl) 
     420       and 1Fh 
     421       call IsList 
     422       jr nz,DelVar_2 
     423       pop de 
     424       push hl 
     425       call DelVar_3 
     426       pop hl 
     427       or a 
     428       jr z,$F 
     429       pop bc 
     430       push af 
     431       call DelVar_4 
     432       ld de,9315h 
     433       call MovFrOP1 
     434       pop hl 
     435       ld l,3Fh 
     436       call EquToOP1 
     437       rst rFINDSYM 
     438       call nc,DelVar 
     439       ld a,(OP1+2) 
     440       call DelVar_5 
     441       cpl 
     442       and (hl) 
     443       ld (hl),a 
     444       ld hl,9315h 
     445       jr MovToOP1 
     446DelVar_4: 
     447       push bc 
     448$$:    push de 
     449DelVar_2: 
     450       ld b,0 
     451       push hl 
     452       call ToVarTypeByte 
     453       ld a,(hl) 
     454       add a,7 
     455       ld c,a 
     456       pop hl 
     457DelVar_1: 
     458       call DelMemBC 
     459       pop hl 
     460       pop af 
     461       call DataSize 
     462DelMem: 
     463       call DelMem_1 
     464       call AdjustData_8 
     465       ld hl,(fpBase) 
     466       or a 
     467       sbc hl,bc 
     468       ld (fpBase),hl 
     469       ld hl,(FPS) 
     470       or a 
     471       sbc hl,bc 
     472       ld (FPS),hl 
     473       call AdjustBasicPointers 
     474       ld hl,(tempMem) 
     475       or a 
     476       sbc hl,de 
     477       jr c,$F 
     478       jr z,$F 
     479       add hl,de 
     480       or a 
     481       sbc hl,bc 
     482       ld (tempMem),hl 
     483       jr DelMem_2 
     484$$:    ld hl,(pTemp) 
     485       or a 
     486       jr DelMem_3 
     487DelMem_2: 
     488       ld hl,symTable 
     489DelMem_3: 
     490       ld (freeRAM),bc 
     491       dec hl 
     492       dec hl 
     493       dec hl 
     494DelMem_Loop: 
     495       push af 
     496       ld c,(hl) 
     497       dec hl 
     498       ld b,(hl) 
     499       dec hl 
     500       ld a,(hl) 
     501       inc hl 
     502       or a 
     503       jr nz,DelMem_4 
     504       ex de,hl 
     505       or a 
     506       sbc hl,bc 
     507       jr nc,$F 
     508       add hl,bc 
     509       push hl 
     510       ld h,b 
     511       ld l,c 
     512       ld bc,(freeRAM) 
     513       or a 
     514       sbc hl,bc 
     515       ex de,hl 
     516       ld (hl),d 
     517       inc hl 
     518       ld (hl),e 
     519       dec hl 
     520       pop de 
     521       jr DelMem_4 
     522$$:    add hl,bc 
     523       ex de,hl 
     524DelMem_4: 
     525       inc hl 
     526       inc hl 
     527       inc hl 
     528       inc hl 
     529       call IsFixedName 
     530       ld c,12 
     531       jr nz,$F 
     532       call ToVarTypeByte 
     533       ld c,(hl) 
     534       inc c 
     535       inc c 
     536       inc c 
     537       inc c 
     538$$:    ld b,0 
     539       pop af 
     540       or a 
     541       sbc hl,bc 
     542       ld bc,(OPBase) 
     543       sbc hl,bc 
     544       ret c 
     545       add hl,bc 
     546       jr DelMem_Loop 
     547DelMem_1: 
     548       push de 
     549       push hl 
     550       add hl,de 
     551       ex de,hl 
     552       ld hl,(FPS) 
     553       or a 
     554       sbc hl,de 
     555       ld b,h 
     556       ld c,l 
     557       pop hl 
     558       push hl 
     559       ex de,hl 
     560       jr z,$F 
     561       ldir 
     562$$:    pop de 
     563       pop bc 
     564       ret 
     565DataSize: 
     566       ld de,9 
     567       and 1Fh 
     568       ret z 
     569       ld de,18 
     570       cp 0Ch 
     571       ret z 
     572       ld e,(hl) 
     573       inc hl 
     574       ld d,(hl) 
     575       dec hl 
     576DataSizeContinue: 
     577       push hl 
     578       ex de,hl 
     579       cp AppVarObj 
     580       jr z,DataSize_1 
     581       cp GroupObj 
     582       jr z,DataSize_1 
     583       cp TempProgObj 
     584       jr z,DataSize_1 
     585       cp 0Dh 
     586       jr nz,$F 
     587       add hl,hl 
     588       jr DataSize_2 
     589$$:    cp 3 
     590       jr nc,DataSize_1 
     591       cp 1 
     592       call nz,DataSize_3 
     593DataSize_2: 
     594       call HLTimes9 
     595       jr c,jpErrMemory 
     596DataSize_1: 
     597       ld de,2 
     598       add hl,de 
     599       jr c,jpErrMemory 
     600       ex de,hl 
     601       pop hl 
     602       or a 
     603       ret 
     604DataSize_3: 
     605       ld b,h 
     606       ld h,0 
     607       ld d,h 
     608       ld e,h 
     609       ex de,hl 
     610       or a 
     611$$:    adc hl,de 
     612       djnz $B 
     613       ret 
     614HLTimes9: 
     615       ld b,h 
     616       ld c,l 
     617       add hl,hl 
     618       ret c 
     619       add hl,hl 
     620       ret c 
     621       add hl,hl 
     622       ret c 
     623       add hl,bc 
     624       ret 
     625DelMemBC: 
     626       push hl 
     627       or a 
     628       sbc hl,bc 
     629       pop de 
     630       push bc 
     631       ld bc,(OPS) 
     632       push hl 
     633       sbc hl,bc 
     634       ld b,h 
     635       ld c,l 
     636       pop hl 
     637       push de 
     638       jr z,$F 
     639       lddr 
     640$$:    ld (OPS),de 
     641       pop de 
     642       pop bc 
     643       ld hl,(OPBase) 
     644       add hl,bc 
     645       ld (OPBase),hl 
     646       call DelVarEntry 
     647       ret 
     648DelVar_3: 
     649       call ToVarTypeByte 
     650       ld a,(hl) 
     651       cp 24h 
     652       jr nz,$F 
     653       xor a 
     654       ret 
     655$$:    ld b,0 
     656       ld c,a 
     657       or a 
     658       sbc hl,bc 
     659       ld a,(hl) 
     660       ret 
     661DelVar_5: 
     662       ld hl,9320h 
     663       push bc 
     664       ld c,a 
     665       and 0F8h 
     666       rrca 
     667       rrca 
     668       rrca 
     669       ld e,a 
     670       ld d,0 
     671       add hl,de 
     672       push hl 
     673       ld a,c 
     674       and 7 
     675       ld e,a 
     676       ld a,(hl) 
     677       ld hl,DelVar5_Table 
     678       add hl,de 
     679       ld c,(hl) 
     680       and c 
     681       ld a,c 
     682       pop hl 
     683       pop bc 
     684       ret 
     685DelVar5_Table: 
     686       DB 01h,02h,04h,08h,10h,20h,40h,80h 
    419687jpErrArchived: 
    420688       jp JErrorNo