ô > View/s *ô Source for SJ Research *VIEW command Aô Note: MODE? error message assumes NFS workspace is at &0E00 ( 27OS_CLI=&FFF7:OSBYTE=&FFF4:OSWORD=&FFF1:OSWRCH=&FFEE <7OSWRCR=&FFEC:OSNEWL=&FFE7:OSASCI=&FFE3:OSRDCH=&FFE0 F7OSFILE=&FFDD:OSARGS=&FFDA:OSBGET=&FFD7:OSBPUT=&FFD4 POSGBPB=&FFD1:OSFIND=&FFCE Z dload%=&FFFF0900 nÞ mcode% &213 x ã P=0 ¸ 1 ‚P%=load%:O%=mcode% Œ[OPT P*3+4 –%\ Control block, overlapping code  \ Read ï info returns: ª0\ L0900-L0901 = Screen display start address ´&\ L0902-L0911 = 16 palette entries ¾&\ L0912 = remote screen mode È Ò .L0900 Ü#\ Control block for user lookup æ#EQUB 0:EQUB &14:EQUB 0:EQUB &18 ð: ú .exec% ELDX #&A9:LDY #&00:LDA #&01:JSR OSARGS :\ Get command line address LDY #&00:CMP #&02:BNE L0926 :\ Bugfix not needed "(\ Command line bugfix for NetFS<3.60 , .L091A 6&INY:LDA (&A9),Y:CMP #&0D:BEQ L098B @CMP #&20:BNE L091A J: T,\ Parse station number from command line ^ .L0925 hINY r .L0926 |LDA (&A9),Y † CMP #&20 BEQ L0925 :\ Skip spaces š BCC L098B ¤ LDX #&00 ® STX &AD ¸7CMP #&30:BCC L0966 :\ Not digit, look for user name Â7CMP #&3A:BCS L0966 :\ Not digit, look for user name Ì .L093A Ö LDX #&00 à .L093C êLDA (&A9),Y ôINY þ CMP #&30  BCC L0956  AND #&0F CLC & STX &A8 0 ASL &A8 : ADC &A8 D ASL &A8 N ASL &A8 X ADC &A8 bTAX l JMP L093C v € .L0956 Š STX L0AF1 ” CMP #&2E ž BNE L098B ¨ STX L0AF2 ² BEQ L093A ¼ .L0962 ÆINX ÐINY ÚLDA (&A9),Y ä .L0966 îSTA L0907,X ø CMP #&0D  BNE L0962  LDX #&00  LDY #&09  LDA #&14 *JSR OSWORD 4 LDA #&00 >STA L0900+17 HCMP L0900+3 RBNE L0900+2 \ LDY #&01 f .L0982 pLDA L0905,Y zSTA L0AF1,Y „DEY Ž BPL L0982 ˜: ¢\ L0AF2=net, L0AF1=stn ¬ .L098B ¶ LDA #&00:LDX #&FF:JSR OSBYTE À9CPX #&03:ROR A:STA &AE :\ &AE bit 7=non-Master/Master Ê5LDX #&DB:JSR L0AB3 :\ Ping the remote station Ô4BEQ L09B1 :\ Present, skip forwards Þ .L099E è BRK:EQUB &A2:EQUS "Inactive" ò .L09A8 ü"BRK:EQUB &A2:EQUS "PROTed":BRK  .L09B1  LDX L0900 DEX $ BEQ L09C1 . DEC &AD 8 CPX #&0E B BCS L09FA L CPX #&04 V BCC L09FA ` .L09C1 j2LDX #&DC:JSR L0A98 :\ Read VDU information t8BNE L09A8 :\ Can't read, must be PROTed ~%LDX #&E1:JSR L0A98 :\ Read... ˆ8BNE L09A8 :\ Can't read, must be PROTed ’LDA L0900+1:STA L0AEA œ%LDX #&E6:JSR L0A98 :\ Read... ¦8BNE L09A8 :\ Can't read, must be PROTed °6LDA #&87:JSR OSBYTE :\ Read current screen mode º:LDA L0900+18 :\ Remote station's screen mode Ä€ #&07:CMP #&07:PHP Î[CMP L0A02,Y:BCS L0A0C :\ If remote mode same or smaller than my mode, can switch to it ØJBIT &AE:BMI L0A0A :\ If Master, shadow screen present, can use it âISTA &0E09 :\ Store in NFS workspace as MODE error number ì9„A #&30:STA L0A01 :\ Store in MODE? error message ö .L09FA BRK:EQUB &AD:EQUS "Mode "  ;.L0A01:EQUS "?" :\ Mode number of remote station I\ ë comparison table, can change modes if same or smaller screen size  .L0A02 (DEQUB 0 :\ Also terminator of Mode? error message 2 EQUB 0 < EQUB 0 F EQUB 3 P EQUB 4 Z EQUB 4 d EQUB 6 n EQUB 7 x: ‚ .L0A0A Œ=„A &AE :\ Add shadow screen bit if present – .L0A0C  TAX ª?CPY L0912:BEQ L0A1B :\ If screen mode same, don't change ´0LDA #&16:JSR OSWRCH :\ Change screen mode ¾TXA:JSR OSWRCH È: Ò/\ Set local palette to match remote palette Ü .L0A1B æ0LDX #&0F :\ Start at colour 15 ð .L0A1D ú$LDA #&13:JSR OSWRCH :\ VDU 19 ,TXA:JSR OSWRCH :\ Logical colour FLDA L0900+2,X :\ Get physical colour from remote VDU info GLDY #&04 :\ Send it four times to fill VDU 19 command " .L0A2B ,JSR OSWRCH:DEY:BNE L0A2B 6 STY L0AF3 @9DEX:BPL L0A1D :\ Loop for 16 palette entries J: TGLDY #&0C:STY &FE00 :\ Select CRTC register 12 - start of screen ^;LDA L0900+0:STA &0350 :\ CRTC address of top of screen hLDA L0900+1:STA &0351 r5PLP:BNE L0A51 :\ Skip if not MODE 7 |6SBC #&74:‚ #&20:BCS L0A5A :\ Correction for MODE 7 † .L0A51  LDX #&03 š .L0A53 ¤;LSR A:ROR L0900:DEX:BNE L0A53 :\ Correction for MODE <7 ® ¸ .L0A5A ÂBSTA &FE01 :\ Write CRTC start of screen high byte ÌBINY:STY &FE00 :\ Select CRTC start of screen low byte Ö4LDA L0900:STA &FE01 :\ Write address low byte à ê)BIT &AE:BPL L0A71 :\ No shadow screen ô DEC L0AF5 þ DEC L0AF9  .L0A71  BIT &AD  BPL L0A78 & DEC L0AFD 0 .L0A78 :LDA L0900+20 D STA L0AF4 N STA L0AEF XCLC b BMI L0A93 l ADC #&04 vSTA L0900+20 € STA L0AED Š LDX #&EB ” JSR L0A98 ž BEQ L0A78 ¨ .L0A93 ² LDA #&0D ¼JSR OSWRCH Æ .L0A98 Ð STX &A9 Ú LDY #&04 äLDA (&A9),Y îSTA L0AF8,Y øDEY LDA (&A9),Y  STA L0AF8,Y DEY  LDA (&A9),Y *STA L0AF6,Y 4DEY >LDA (&A9),Y HSTA L0AF6,Y R: \ .L0AB3 f STX &A9 p LDX #&0A z STX &AA „ STX &A8 Ž .L0ABB ˜ LDY #&00 ¢ INC &A8 ¬ BMI L0ADA ¶LDA (&A9),Y À STA L0AEF Ê LDA #&10 Ô LDX #&EF Þ LDY #&0A èJSR OSWORD ò .L0ACF ü LDA #&32 JSR OSBYTE TXA  BMI L0ACF $ ASL A . BMI L0ABB 8 .L0ADA BRTS L VDEY ` STA &02 j ORA #&02 tBRK ~STA (&02,X) ˆ ORA #&9E ’BRK œSTA (&1E,X) ¦ ORA #&E9 ° .L0AEA ºBRK ÄSTA (&00,X) Î .L0AED Ø BRA L0AEF â ì .L0AEF öDEY BRK .L0AF1 BRK  .L0AF2 (BRK 2 .L0AF3 <BRK F .L0AF4 P ORA #&FF Z .L0AF6 d EQUB &FF n TSB &09 x .L0AF9 ‚ EQUB &FF Œ EQUB &FF –BRK   ORA #&FF ª EQUB &FF ´JMP (&2B65) ¾ È]í Ò9ñ "*SAVE VIEW ";~mcode%;" ";~O%;" ";~exec%;" ";~load% ÿ