; ; File - DEC5 AAAAAAAAAAAAA usrham LdyIM 1 LdaIY &F0 Tax LdaAX hamtab Bmi usf AndIM &0F usf StaIY &F0 Jmp swexit ; usrts LdyIM 1 LdaIY &F0 Sta zp0 Iny LdaIY &F0 Sta zp1 LdxIM 20 LdyIM 0 u1 LdaAX TSbuff StaIY zp0 Inx Iny CpyIM 20 Bne u1 Jmp swexit ; DEC 5 AAAAAAAAAAAAAAA ; Herman LdyIM 0 zerm00 LdaAY ctrlbl+inuse RolA Bpl zerm01 LdaAY ctrlbl+specia RolA Bpl Hermie zerm01 Tya Clc AdcIM CBlen Tay CmpIM (nopage*CBlen) Bne zerm00 LdaIM 1 Tay StaIY &F0 Jmp swexit Hermie ; ; ; ; ; ; LDX select LdaAX ctrlbl+specia OraIM flagbi StaAX ctrlbl+specia LdaIM 0 LdyIM 1 StaIY &F0 ; and conditional on inuse flag. jmp swexit DeHerm LDX select LdaAX ctrlbl+specia PHA ; Note whether Hermanned or not. AndIM TIM01 StaAX ctrlbl+specia PLA ASLA BPL DeHnot LdaIM 0 Dehrsl LdyIM 1 StaIY &F0 ; and conditional on inuse flag. jmp swexit DeHnot LdaIM 1 Jmp Dehrsl Solidi ; Copy CB 'select' into CB 0 slot. ; i.e. make this page the one from which links are got. ; Also used on exit from TERMn if exiting to telesoftware ; because only one CB can exist outside Terminal mode. ; ********* Who makes sure CB0 contains data inpriv workspace???********* Lda select Beq godire Sta CurCB2 ;\\\\\\\\\\\\\\\ FIRST GET WILD CARDS FROM APPROP. CB INTO param... LdaIM 0 Sta param Sta param+1 Sta param+2 LdaIM &FF Sta param+3 Sta param+4 Sta param+5 Sta param+6 Jsr Swap00 ;\\\\\\\\\\\\\ page becomes un-filled! godire LdaIM 0 Sta select ; Page was in CB0 already. Jmp swexit Evapou ; Go back to page from which links are being read LDA select ;BEQ Evaatt LdaIM 0 Sta select Bit ctrlbl+full Bvc tstifz Bit ctrlbl+crcok ;Bvc tstifz Lda ctrlbl+upda00 OraIM flagbi Sta ctrlbl+upda00 tstifz LdaIM 0 Evarsl LdyIM 1 StaIY &F0 Jmp swexit Evaatt LdaIM 1 Jmp Evarsl OfferA ; All space between &3000 and &7000 In &800 chunks LdaIM &83 Jsr osbyte Stx scratc Sty scra00 LdyIM 0 OffLoo LdaIM :LSB: ARGcon Sta zp0 LdaIM :MSB: ARGcon Sta zp1 Iny ; Y=1 -> slot number ; AddA1 page size to scratc If > &7100, goto Offend Lda scratc ; low STA ARGcon+2 Clc AdcIM :LSB: 1538 Sta scratc Lda scra00 STA ARGcon+3 AdcIM :MSB: 1538 Sta scra00 CmpIM &71 Bcs Offend Txa Pha Tya Pha STY ARGcon+1 LdyIM 1 ldaIY zp0 Tax ; Straight crib from Offer CB for quick bodge LdaIM 0 MOCB1 Dex Bmi MOCB2 Clc AdcIM CBlen JMP MOCB1 MOCB2 Tax LdaIM 0 StaAX ctrlbl+inuse iny LdaIY zp0 StaAX ctrlbl Iny LdaIY zp0 StaAX ctrlbl+1 LdaIM 0 LdyIM CBlen-2-1 MOCB3 StaAX ctrlbl+2 INX DEY Bne MOCB3 LdaIM flagbi StaAX ctrlbl+2 LDAAX ctrlbl+2-inuse STA zp0 LDAAX ctrlbl+2+1-inuse STA zp1 LDYIM 0 LDAIM 32 STAIY zp0 ; Pla Tay Pla Tax Jmp OffLoo Offend Jmp swexit Div6 = 0 = 0 = 0 = 0 = 0 = 0 = 1 = 1 = 1 = 1 = 1 = 1 = 2 = 2 = 2 = 2 = 2 = 2 = 3 = 3 = 3 = 3 = 3 = 3 Mod6 = 09 = 15 = 21 = 27 = 33 = 39 = 09 = 15 = 21 = 27 = 33 = 39 = 09 = 15 = 21 = 27 = 33 = 39 = 09 = 15 = 21 = 27 = 33 = 39 ;============================================================= OSWsel ; CB 0 for links, then generate a page request ; as normal so it finds the page in the cache ; if present, or requests the page if not. LdyIM 1 LdaIY &F0 ; A = Link no. from CB. CmpIM 24 Bcc OSWsl0 LdaIM 3 ;< Illegal link no. > LdyIM 2 StaIY &F0 Jmp swexit OSWsl0 TAY LdaIM :MSB: (Sele00-1) Pha LdaIM :LSB: (Sele00-1) PHA JMP OSWali OSWsl1 TAY ;\\************* Push address which this code jumps to on the stack ;\\ so an RTS does an effective jump at the end........ LDAIM :MSB: (SElIIp-1) PHA LDAIM :LSB: (SElIIp-1) PHA OSWali ; Comes to here from above with different return address set up. ; Y = link no here!!!!!!1 LDAAY Div6 STA scratc ;\\\\\\ SCRATCH 0 IS DESIGNATION CODE OF ROW LDAAY Mod6 ; STA scra00 ;\\\\\\ SCRATCH 1 IS OFFSET IN ROW ; LDA ctrlbl STA zp0 LDA ctrlbl+1 STA zp1 LDYIM 2 LDAIM 2 STAIY &F0 ; Default is no links present LDYIM 1 LDAIY zp0 SEC SBCIM (26+1) PHA ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\|PUSH PUSH PUSH Clc Lda zp0 AdcIM :LSB: (pagehe+(40+pageju)*26) STA zp0 LDA zp1 ADCIM :MSB: (pagehe+(40+pageju)*26) Sta zp1 ; No. of rows remaining on stack sell02 PLA ;\\\\\\\\\\\\\\\\\\\\\\\\\\\|PULL PULL PULL EorIM 0 Bpl sell03 ; So use old plus wildcas ;****************************** Add code here... PLA PLA ; ************************ pop silly return address jmp swexit sell03 Sec SbcIM 1 ; Decrement loop count PHA ; \\\\\\\\\\\\\\\\\\\\\\\\\\\\|PUSH PUSH PUSH LdyIM 0 LdaIY zp0 ; Get row/no. & desig. code CmpIM 27 Beq sell00 Jmp sellin sell00 ; Row 27 - so if no link found, must be 'no such link' ; rather than 'no links present'. LdyIM 2 LdaIM 1 StaIY &F0 LdyIM pageju LdaIY zp0 Tay LdaAY hamtab Bmi gotose ; hammin error AndIM &0F Cmp scratc ; ***************************** designationcode (TO BE SET UP) Beq loadsc gotose JMP sellin loadsc ; ; NowAY row with link pointed to by (zp0) -- where ; Y is offset found in table, which has 'junkoffset' added already. ; (in scra00) ; ; Lda scra00 Tay LdaIY zp0 Tax Jsr hammin Bmi gotose Sta param+2 ; P1 Iny LdaIY zp0 Tax Jsr hammin Bmi gotose Sta param+1 ; P10 Iny LdaIY zp0 Tax Jsr hammin Bmi gotose Sta param+6 ; S1 Iny LdaIY zp0 Tax Jsr hammin Bmi gotose Pha AndIM 7 Sta param+5 ; S10 Pla LSRA LSRA LSRA Pha Iny LdaIY zp0 Tax Jsr hammin Bpl Stapar goto00 JMP sell01 Stapar Sta param+4 ; S100 Iny LdaIY zp0 Tax Jsr hammin Bmi goto00 Pha AndIM 3 Sta param+3 ; S1000 Pla LSRA AndIM 6 Sta zp0 ; ZP0 No longer point to row!!!!!!! Pla Ora zp0 Eor ctrlbl+2 AndIM 7 Sta param+0 ; Magazine ; LdaIM 0 LdyIM 2 StaIY &F0 ; ; ; ; ; SET UP CONDITION CODE FOR SUCCESS HERE... ; FIND A MATCHING CB :AND: SET 'select' TO IT, ; OTHERWISE GENERATE ONE FROM 'param' and ditto. PLA ;\\\\\\\\\\\\\\\\\\\\\\\\\\\|PULL PULL PULL ;*********** TEMP TEMP TEMP ************* RTS ;\\\\\\||********** Unconventional (sic) jump to SelII... ;(Unless entry was via link-select code for TERM.) JMP SelIIp Jmp swexit sell01 PLA ; balance stack on error exit sellin Lda zp0 Clc AdcIM (pageju+40) Sta zp0 Lda zp1 AdcIM 0 Sta zp1 Jmp sell02 ; LNK DEC6