Retro Game & PC/정보

Apple2 Basic USR()

smores 2024. 9. 4. 09:08

어렸을땐 이해를 못해서 한번도 못써먹어보던 함수.

 

USR(v) : 값은 $9D-$A3 에 걸친 floating point accumulator 에 전달되고, $0A-$0C 에 원하는 번지로의 점프를 하게끔 셋팅하면 그곳으로 간다. $0A 는 4C JMP, 그 이후 두 바이트가 어드레스 하위, 상위 순서. 예를 들어. 

 

* 0A:4C 00 30  

 

으로 $0300 번지로 점프를 하게끔 된다. 

 

* 0300:60   RTS 

 

로 Applesoft Basic 으로 되돌아옴. 돌아올때 앞서 값을 보낸 8바이트 ($9D-$A3) 의 값을 다시 읽어온다. 만일 기계어 코드가 뭔가 값을 되돌려주려면 그곳을 이용.

 

위의 사례에선 원래 넣은 값 그대로 되돌려받음. 

 

즉, 

 

] CALL-151

* 0A:4C 00 03 [ENTER]

* 0300:60 [ENTER]

* CTRL+C [ENTER]

] PRINT USR(8)*3

24 

 

이런식으로 작동.